본문 바로가기
Choi solyi/책

[책] 주니어개발자가 읽어 본 소프트웨어 아키텍처 101

by SOLYI 2022. 3. 28.

한빛미디어 '나는 리뷰어다' 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

   회사 상사분과 대화를 나누며 책 이야기가 나왔을 때 개발자로서의 가이드라인을 제시해주신 적이 있다. 지금은 입사 초반이므로 객체지향 언어에 대한 대한 서적을 먼저 필독이라고 알려주셨고, 그다음으로는 알고리즘 혹은 디자인 패턴에 대해 공부하라고 알려주셨다. 그 뒤에 5년 정도의 경력이 쌓인 후 아키텍처에 대해서 공부해보면 좋을 거라고 하셨다.

  개발 관련 문서나 블로그 등을 읽다 보면 아키텍처, 아키텍트라는 단어가 자주 보이곤 하지만 그 뜻을 정확하게 이해하고 있진 않았다. 

 

  그러다가 만나게 된 소프트웨어 아키텍처 101이라는 책.

  아직 개발 실무 경험도 많지 않고 여러모로 공부하는 단계여서 아직 읽기는 이를 수도 있다고 생각했지만 모르는 분야이지만 언젠가 공부해야 한다면 미리 읽고 용어들에 익숙해져 두는 것도 나쁘지 않다고 생각해서 읽게 됐다.

 

  그리고 내가 아키텍처에 대해 정확하게 이해하지 못했던 이유도 책에 나와 있었다. 다음은 책의 내용을 일부이다.

소프트웨어 아키텍트라는 직업의 명확한 정의가 아직 없다. 방대한 분야를 포괄하고 있고 업무 범위도 계속 넓어지고 있기 때문이다. 10년 전만 해도 소프트웨어 아키텍트는 주로 모듈성, 컴포넌트, 패턴 등 순수 기술적인 부분을 다뤘지만 이제는 마이크로 서비스와 같은 폭넓은 능력을 활용하는 새로운 아키텍처 스타일의 등장으로 인해 그 역할과 범위가 한층 더 확대되었다.

 

  아키텍처란, 한 문장으로 표현하기 어렵고 트렌드에 맞추어 변화해 가야만 하고, 개발뿐만 아니라 프로젝트에 대한 이해도 또한 높아야 한다. 그뿐만이랴? 대인 관계나 정치를 잘해야 한다고까지 나온다. 이런 내용들이 주니어 개발자인 나에게는 당연히(?)도 익숙하지 않고 어떤 것인지 이해조차 못하고 있던 게 어쩌면 당연하다.

  

  책의 서론에서는 소프트웨어 아키텍처란 무엇인지 소프트웨어 아키텍트가 돈을 그렇게 잘 번다는데 하는 일이 무엇인지에 대한 설명을 해준다.

 

  파트 1 기초에서는 아키텍처로 사고하는 내용과 모듈의 응집도에 대한 내용을 다루고 있다.

  이번 3월에 정보처리기사 필기시험을 준비하며 달달 외웠던 내용이 있다. 높은 응집도와 낮은 결합도가 중요하다. 이 내용은 이전에도 자주 나왔던 문제로 필수 내용이었다. 정보처리기사가 개발자의 필수 자격증이라고 그렇게 인정해주는 데에는 이유가 있구나.. 하고 생각했다. (지금 읽고 있는 '실용주의 프로그래머'에서도 나오고,  소프트웨어 아키텍처 101에서도 크게 다루고 있으니!!!) 단순히 알고만 있던 단어들을 이해한다면 좀 더 좋은 개발자가 될 수 있을 것 같다. 

 

 

  7가지 챕터로 나눠 아키텍처의 특성에 대해 알려준다.

 운영 아키텍처와 구조 아키텍처의 각각 특성이 어떤 것인지. 용어와 정의를...

 

 

  책을 읽다 보면 어려운 개념들도 있지만 일부는 ' 음음 개발자라면 당연히 그래야지! '라고 생각을 하는 부분이 많기도 했다. 하지만... 내가 지금 진행하는 팀 프로젝트의 설계를 다시 돌아보면... ㅎㅎ.. 데이터베이스를 직접 호출하는 레이어조차 정하지 못해서 어디서는 repository에서 호출하고, 또 다른데선 service에서 호출하는 우리 팀의 코드가 생각이 났다... ( 이 부분도 책에서 여러 차례 언급된다! 프로젝트에 실질적 도움이 되고 있다. )

  눈으로 스치듯 보고 있기 때문에 당연하고 쉬워 보이는 거란 생각이 들었다. 하지만 한편으로는, 전부는 아니더라도 이 중 몇 퍼센트만이라도 머릿속에 남겨둔다면 개발자로서 성장하는 과정에서 시야는 확실히 넓어질 것이라 확신했다.

 

 

  파트 2에서는 아키텍처 스타일에 대해 10개 챕터로 나눠 알려준다. 

 

 

  파트 3에서는 테크닉과 소프트 스킬에 대해 7가지 챕터로 나눠 알려준다.

 파트 3은 아키텍처를 결정함에 있어서 적용 방식에 대한 내용을 다루고 있다. 아키텍처에 대한 직접적인 내용이 아니라 조금 간접적인 내용들이라서 이해하기는 더 쉬웠다. 이해관계자들과도 충분한 소통이 필요하고, 정당화, 문서화하는 등 아키텍처의 결정은 단순하지 않기 때문에, 아키텍처 안티 패턴에 빠지곤 한다.

  예를 들어 직접적인 이러한 아키텍처로 결정했다 라는 식의 직접적인 표현이 아니라 '서비스 간 통신에 관한 중요한 결정을 내렸으니 확인 부탁드립니다'와 같이 결정 그 자체보다 필요한 내용을 제공하는 식으로..

 

  전반적으로 책을 읽으며 어려운 개념이 많아서 온전히 내 것으로 만들었다는 생각은 들지 않는다. 이런 게 있구나 하는 정도로 가볍게 읽었다. 하지만 적어도 주니어 개발자로서의 공부 방향성에 큰 힌트를 주고 있음은 분명하다. 1년 정도 지나서 다시 읽어보면 와닿는 것도 다르겠지.

 

  직장에 근무하며 중요한 설계 등에 대해서는 주니어 개발자인 나에게 결정권이 있을 리가 없었고, 내용이라도 알면 다행인 정도였다. 하지만 이번에 팀 프로젝트를 진행하며 제로부터 모든 결정을 팀원과 직접 상의하며 정해야 하는 현재로서는 효율적인 팀 운영에 대한 내용도 있고 모르는 개념들도 많이 습득하게 되어 알찬 책이었다.

 

 

책 자세히 보기

더보기
닫기

소프트웨어 아키텍처 101

마크 리처즈, 닐 포드 지음 | 이일웅 옮김 | 한빛미디어 | 2021년 11월 1일 출간

정가 : 32,000원
판매가 : 28,800 (3월 28일 교보문고 기준)

쪽수 : 472쪽

한빛미디어 '나는 리뷰어다' 활동을 위해서 책을 제공받아 작성된 서평입니다.

반응형