티스토리 뷰

728x90
반응형
[필자의 주저리]

'유지보수' '확장성' '리팩토링' '의존성' '영속성' '정규화' '스텁' '패치' '로드밸런서' '사이드 이펙트' '랜더링' 등등등
아무리 내가 어찌저찌해서 주니어 개발자가 되었지만
개발자들의 대화나 블로그 포스팅 에서 접하는 용어들은 참 익숙하지가 않아.... 

한국인들도 국어가 어렵듯이.. 개발자도 개발용어가 ㄱr끔은.. 딱딱하다고 느껴져 ... ^^;
정보처리기사 자격증 공부할때 나온 개발용어들... 아직도 어색하고 딱딱해...
그렇다고.. 또 그 용어를 대체할 수 있는 짧고 간단히 설명하기가 참 어렵지...ㅠㅠ
근데 나 개발자인데 하소연해도 되려나.....? 


클린코드, 가독성이 좋은 코드 를 선호하는 개발자의 세계에서

"확장성" 있는 코드란 무엇일까?
그놈의 "확장성" 딱딱해 미치겠다.... 마치 돌을 씹어먹은기분이야.


 

안녕하세요  이번에는 IT 용어 포스트를 오랜만에 올립니다 :)

위의 주저리들은 가볍게 무시하시고, 여러분도 저와 같은 생각이 든 적 있으실까요?

없다면 반성하고, 개발용어에 익숙해지도록 기록하고 숙지하겠습니다 

 

솔직히 말하자면, 저는 특히 "확장성" 이 용어가 뭔가 낯설어요.

확장성 에 대한 생각은 단순 무식하겠지만 "넓힌다(?)  ->  코드라인이 많아진다(?)" 로 떠오릅니다.

정말로 제가 생각한게 맞을까요?

제가 이 용어를 얼마만큼 알고 있는지, 잘 알고 있는지 의심이 듭니다.

 

개발자들의 베스트 셀러인 클린코드에서  '확장' 을  도로 확장공사 에 비유하여 설명했습니다.

애자일 방식인 테스트와 리팩토링을 통해서 계속 코드를 개선하는 작업을 한다면, 규모가 커져서 변경해야되는 상황이 와도 점진적으로 발전할 수 있다는 뜻인데요.

군락은 마을로, 마을은 도시로 성장한다.
처음에는 좁거나 사실상 없던 길이 포장되며 점차 넓어진다.
작은 건물과 공터는 큰 건물로 채워지고 결국 곳곳에 고층 건물이 들어선다.
처음에는 전력, 상수도, 하수도, 인터넷(허걱!) 과 같은 서비스가 없었다. 인구와 건물 밀도가 늘어나면서 서비스도 생겨났다.


그렇지만 성장에는 고통이 따른다.
'확장' 공사로 꽉 막힌 도로에서 "왜 처음부터 넓게 만들지 않았지?" 라고 자문한 적이 얼마나 많던가?


'처음부터 올바르게' 시스템을 만들 수 있다는 믿음은 미신이다.
대신에 우리는 오늘 주어진 사용자 스토리에 맞춰 시스템을 구현해야 한다. 내일은 새로운 스토리에 맞춰 시스템을 조정하고 확장하면 된다. 이것이 반복적이고 점진적인 애자일 방식의 핵심이다.

테스트 주도개발(Test Driven Development TDD), 리팩터링, 깨끗한 코드는 코드 수준에서 시스템을 조정하고 확장하기 쉽게 만든다.

하지만 시스템 수준에서는 어떨까? 시스템 아키텍처는 사전 계획이 필요하지 않을까?
단순한 아키텍처를 복잡한 아키텍처로 조금씩 키울 수 없다는 현실은 정확하다. 맞는 말 아닌가?

소프트웨어 시스템은 물리적인 시스템과 다르다. 관심사를 적절히 분리해 관리한다면 소프트웨어 아키텍처는 점진적으로 발전할 수 있다.

 

이글을 읽으면서 확장성까지 고려한다면 초기 설계를 신중히 하는 것도 중요하지만

규모가 커지면서 초기설계를 다 뜯어 고칠 수는 없으니

현재 시스템을 받아들이면서 넓혀감과 수정/추가와 동시에

적극적으로 계속 테스트와 리팩터링을 해야한다는 것으로 이해했습니다.


도서에서의 정보말고도 구글링으로 서칭해서 정리를 해봤습니다.

 

확장성이란

비즈니스 요구에 맞도록 시스템을 확장하는 기능 입니다.

응용 프로그램의 상당 부분을 변경하지 않고도 하드웨어를 추가하거나 기존 하드웨어를 업그레이드를 하여 시스템을 확장합니다.

 

확장성있는 코드란

로직의 변경이 아니라 사용되는 값들의 변경을 좀 더 유연하게 대처하기 위한 목적의 코드 입니다.

 

확장이 어려운 코드란

내부에서 많은 변경이 발생하여 코드를 읽기 어렵게 만드는 코드 를 의미합니다.

 

아래 참고자료를 바탕으로 정리를 했지만, 한번 방문해서 읽어보면서 인사이트를 얻는 게 좋을 거 같습니다 :) 

필자인 저도 프로젝트나 코드리뷰를 경험이 필요하고

내 코드를 항상 의심하며,  좋은코드에 대한 기준이 무엇인지를 배워야겠네요 :)


[참고자료]

더보기
728x90
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함