티스토리 뷰

생활/책

[책] 소프트웨어 아키텍처 101

Jaeyeon Baek 2022. 3. 31. 10:42

Fundamentals of Software Architecture 소프트웨어 아키텍처 101

 

아키텍트 지망생을 위한 기본서가 한빛미디어에서 발간되었다. 바로 Fundamentals of Software Architecture, 소프트웨어 아키텍처 101 되시겠다.

총 세 개의 파트로 구성되어 있고 대략적인 흐름은 다음과 같다. 소프트웨어 아키텍처란 무엇인지 살펴보고 역사적인 트렌드를 알아본다. 아키텍처적인 사고와 모듈성에 대해 언급하며 응집 / 커플링 / 커네이선스처럼 아키텍처를 설계할 때 고려해야 하는 것을 설명한다. 요즘 아키텍처 관련된 책이나 글을 찾아보면 한 번씩은 모두 언급되는 용어들인데 이 책에 가득 정리되어 있다고 보면 된다.

아키텍처 스타일 파트에선 다양한 아키텍처 스타일을 다룬다. 레이어드 아키텍처 스타일(2 티어, 3 티어 아키텍처를 생각하면 된다), 파이프라인 아키텍처 스타일, 마이크로커널 아키텍처 스타일, 서비스 기반 아키텍처 스타일, 이벤트 기반 아키텍처 스타일, 공간 기반 아키텍처 스타일, 오케스트레이션 기반 서비스 지향 아키텍처 스타일, 마이크로서비스 아키텍처 스타일이 있다. 이름만 들어서는 생소한 것도 있을 수 있는데 현업에서 조금 굴러본 사람이라면 글을 읽는 순간 대충 머릿속에 그려질 것 같다. 한편, 아직 공부하는 학생이라면 조금 뜬구름 잡는 이야기처럼 들리거나 난해한 부분도 분명히 존재할 것 같다. 하지만 제목에 붙어있는 101을 생각하면 여러 개념을 쉽게 설명하기 위해 펼쳐놓은 느낌이기 때문에 잘 이해가 안 되는 부분이 있다면 각 잡고 여러 번 읽어보시길 권장한다. 마지막 파트인 테크닉과 소프트 스킬에서는 아키텍처를 결정하고 리스크를 분석하는 등 개발팀과 긴밀하게 일할 수 있는 소프트 스킬에 대해서도 함께 다룬다. 

경험적으로 서비스에 장애가 잦을수록 아무래도 사람이 보수적으로 바뀌게 되는 것 같다. 배포 시에 문제가 발생하면 그 경험 때문에 더 조심하게 되는 등. 이 책에 꽤 공감되는 단락이 있어서공유. 많은 사람들이 공감했으면 한다.

“꽁꽁 언 원시인 안티패턴(Frozen Caveman Anti-Pattern)은 야생에서 자주 볼 수 있는 행위와 연관된 안티패턴입니다. 어떤 아키텍처든 언제나 가장 비합리적인 관심사로 회귀하려는 아키텍트가 이 안티패턴에 해당됩니다. 예를 들어, 닐(저자)이 함께 일했던 동료 한 사람은 중앙화 아키텍처 기반의 시스템을 담당했었는데, 그가 자신이 설계한 결과를 전달할 때마다 고객사 아키텍트는 “그런데 이탈리아를 잃으면 어떻게 되는 거죠?“라는 늘 똑같은 질문을 던졌습니다. 수년 전, 이 회사에 희한한 통신 문제가 발생해서 이탈리아에 있는 점포와 본사의 통신이 끊긴 사고가 발생했고 엄청나게 불편한 업무상 장애를 겪었던 아픈 과거가 있었다는 것입니다. 이제는 같은 사고가 재발할 가능성은 희박하지만, 이 아키텍트는 이 특수한 아키텍처 특성에 강박관념을 가지게 되었습니다.
이 안티패턴은 일반적으로 과거의 나쁜 결정이나 예기치 못한 사고에 파묻혀 버려 그 이후로 매사 극도의 경계심을 갖게 된 아키텍트에서 두드러집니다. 리스크 평가는 중요하지만 현실적으로 해야 합니다. 진짜 기술 리스크와 리스크처럼 보이는 기술 리스크의 차이를 이해하는 것은 아키텍트가 평생 학습해야 할 주제입니다. 아키텍트답게 생각하려면 ‘꽁꽁 언 원시인’의 사고 방식과 경험을 극복하고 다른 솔루션을 찾아보면서 더 적절한 질문을 해야 합니다.”

 

시중에 아키텍처를 다루는 책은 이미 여러 권 있다. 더 쉬운 책도 있을지도 모른다. 하지만 이 책만큼 폭넓게 여러 개념을 다루는 책은 흔하지 않다. 더욱이 시대적인 흐름에 따라 변화해온 아키텍처 스타일과 아키텍트로써 어떻게 성장할 수 있는지가 아주 잘 정리되어 있기 때문에 "아키텍처"를 공부하려고 마음먹었다면 이 책을 먼저 읽어보시길. 일독을 권한다.

 


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

 

댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday