메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기
정가 34,400원
판매가
34,400원
총 결제 금액 34,400원
dropdown arrow
  • 소장/대여 옵션 선택
  • 소장
  • 365일
    30% 할인
  • 180일
    40% 할인
  • 90일
    50% 할인
  • 30일
    60% 할인

마이한빛 > MY 콘텐츠에서 웹뷰어로 바로 이용가능한 상품이며 배송되지 않습니다.

대여 가능

전자책

종이책

소프트웨어 아키텍처 The Basics(2판)

모던 엔지니어링을 위한 소프트웨어 아키텍처의 모든 것

  • 저자마크 리처즈 , 닐 포드
  • 번역류광 , 307번역랩
  • 출간2025-12-01
  • 페이지640 쪽
  • eISBN9791175796010
  • 물류코드51601
  • 난이도
    초급 초중급 중급 중고급 고급
  • 구판정보소프트웨어 아키텍처 101 >
4.9점 (27명)

막막했던 아키텍처가 쉬워지는 실무 지침서
생성형 AI, 클라우드에 맞춰 새롭게 돌아오다

 

경력을 키우고 싶은 개발자라면 누구나 소프트웨어 아키텍트를 꿈꾼다. 그렇다면 소프트웨어 아키텍트가 되려면 뭘 알아야 할까? 수년간 소프트웨어 아키텍처를 전문적으로 강의해 온 마크 리처즈와 닐 포드가 특정 기술 스택에 국한되지 않는 보편적인 아키텍처 원칙을 소개한다.
이 책은 『소프트웨어 아키텍처 101』의 개정판으로, 개발자가 소프트웨어 아키텍트로 나아갈 수 있도록 소프트웨어 아키텍처의 다양한 측면을 종합적으로 다룬다. 장차 아키텍트가 될 사람과 현직 아키텍트라면 누구나 이 책에서 아키텍처 특성, 아키텍처 패턴, 컴포넌트 결정, 아키텍처 도식화 및 프레젠테이션, 진화적 아키텍처 등 다양한 주제를 살펴볼 수 있다. 지난 10년간의 혁신을 집약한 소프트웨어 아키텍처의 모든 핵심을 지금부터 만나 보자.

 

주요 내용

  • 아키텍처 스타일과 패턴: 마이크로서비스, 모듈형 모놀리스, 마이크로커널, 계층형 아키텍처 등
  • 컴포넌트: 식별, 결합, 응집, 분할, 세분도
  • 소프트 스킬: 효과적인 팀 관리, 협업, 비즈니스 참여 모델, 협상, 프레젠테이션 등
  • 현대적인 엔지니어링 관행: 생성형 AI, 클라우드 등 급격히 변한 환경에 맞는 방법론과 운영 접근법
  • 엔지니어링 관점에서의 아키텍처: 소프트웨어 아키텍처에 엄격함을 더하는 반복 가능한 결과, 지표, 구체적인 평가

 

마크 리처즈 저자

마크 리처즈

마이크로서비스를 비롯한 여러 분산 아키텍처의 아키텍처 설계와 구현에 직접 참여한, 경험이 풍부한 실무형 소프트웨어 아키텍트이다. 개발자가 소프트웨어 아키텍트로 성장하는 여정을 돕는 웹사이트인 DeveloperToArchitect.com을 설립했다.
닐 포드 저자

닐 포드

소트웍스(Thoughtworks)에서 디렉터, 소프트웨어 아키텍트, 그리고 ‘밈 랭글러(meme wrangler)’를 맡고 있다. 소트웍스에 합류하기 전에는 미국 유수의 교육 및 개발 회사인 The DSW Group, Ltd.에서 최고 기술 책임자(CTO)로 일했다.

류광 역자

류광

도널드 커누스 교수의 『컴퓨터 프로그래밍의 예술』 시리즈를 비롯해 90여 권의 다양한 IT 전문서를 번역한 전문 번역가이다. 이 책과 연관된 번역서로는 『플랫폼 엔지니어링』, 『클라우드 시스템을 관리하는 기술』, 『유연한 소프트웨어를 만드는 설계 원칙』(이상 한빛미디어) 등이 있다.

개인 웹사이트 류광의 번역 이야기(https://occamsrazr.net)와 IT 및 게임 개발 정보 공유 사이트 GpgStudy (https://gpgstudy.com)를 운영한다.

307번역랩 역자

307번역랩

전문 번역가의 효율적인 번역 작업을 위해 초벌 번역 및 자료 정리 서비스를 제공하는 번역 엔지니어 집단이다. 급변하는 IT 분야의 가치 있는 외국 서적을 발 빠르게 국내 독자에게 전달하는 데 보람을 느낀다.

CHAPTER 01 서론
_1.1 소프트웨어 아키텍처의 정의
_1.2 소프트웨어 아키텍처의 법칙
_1.3 아키텍트의 기대 역할
_1.4 로드맵

 

PART 01 기초

 

CHAPTER 02 아키텍처적 사고
_2.1 아키텍처와 설계의 차이
_2.2 기술적 너비
_2.3 트레이드오프 분석
_2.4 비즈니스 동인의 이해
_2.5 아키텍처와 코딩 실무의 균형
_2.6 아키텍처적 사고의 남은 이야기들

 

CHAPTER 03 모듈성
_3.1 모듈성 대 세분도
_3.2 모듈성의 정의
_3.3 모듈성 측정
_3.4 모듈에서 컴포넌트로

 

CHAPTER 04 아키텍처 특성의 정의
_4.1 아키텍처 특성과 시스템 설계
_4.2 중요한 아키텍처 특성들
_4.3 트레이드오프와 ‘가장 덜 나쁜’ 아키텍처

 

CHAPTER 05 아키텍처 특성의 식별
_5.1 도메인 관심사들에서 아키텍처 특성 도출하기
_5.2 복합 아키텍처 특성
_5.3 아키텍처 특성의 추출
_5.4 카타: 실리콘 샌드위치
_5.5 아키텍처 특성의 제한과 우선순위 부여

 

CHAPTER 06 아키텍처 특성의 측정과 거버넌스
_6.1 아키텍처 특성의 측정
_6.2 거버넌스와 적합성 함수

 

CHAPTER 07 아키텍처 특성의 범위
_7.1 아키텍처 퀀텀과 세분도
_7.2 동기적 통신
_7.3 범위 지정의 영향
_7.4 범위와 클라우드

 

CHAPTER 08 컴포넌트 기반 사고
_8.1 논리적 컴포넌트의 정의
_8.2 논리적 아키텍처 대 물리적 아키텍처
_8.3 논리적 아키텍처의 작성
_8.4 컴포넌트 결합
_8.5 사례 연구: 고잉, 고잉, 곤—컴포넌트의 발견

 

PART 02 아키텍처 스타일

 

CHAPTER 09 아키텍처 스타일의 기초
_9.1 스타일 대 패턴
_9.2 기본적인 아키텍처 패턴
_9.3 아키텍처의 분할
_9.4 모놀리스 대 분산 아키텍처
_9.5 팀 토폴로지와 아키텍처
_9.6 구체적인 스타일로

 

CHAPTER 10 계층형 아키텍처 스타일
_10.1 토폴로지
_10.2 스타일 세부 사항
_10.3 데이터 토폴로지
_10.4 클라우드 고려 사항
_10.5 일반적인 위험
_10.6 거버넌스
_10.7 팀 토폴로지 고려 사항
_10.8 이 스타일의 특성들
_10.9 예시와 용례

 

CHAPTER 11 모듈형 모놀리스 아키텍처 스타일
_11.1 토폴로지
_11.2 스타일 세부 사항
_11.3 데이터 토폴로지
_11.4 클라우드 고려 사항
_11.5 일반적인 위험
_11.6 거버넌스
_11.7 팀 토폴로지 고려 사항
_11.8 스타일 특성
_11.9 예시와 용례

 

CHAPTER 12 파이프라인 아키텍처 스타일
_12.1 토폴로지
_12.2 스타일 세부 사항
_12.3 데이터 토폴로지
_12.4 클라우드 환경 고려 사항
_12.5 일반적인 위험
_12.6 거버넌스
_12.7 팀 토폴로지 고려 사항
_12.8 스타일 특성
_12.9 예시와 용례

 

CHAPTER 13 마이크로커널 아키텍처 스타일
_13.1 토폴로지
_13.2 스타일 세부 사항
_13.3 데이터 토폴로지
_13.4 클라우드 고려 사항
_13.5 일반적인 위험
_13.6 거버넌스
_13.7 팀 토폴로지 고려 사항
_13.8 아키텍처 특성 등급 평가
_13.9 예시와 용례

 

CHAPTER 14 서비스 기반 아키텍처 스타일
_14.1 토폴로지
_14.2 스타일 세부 사항
_14.3 데이터 토폴로지
_14.4 클라우드 환경 고려 사항
_14.5 일반적인 위험
_14.6 거버넌스
_14.7 팀 토폴로지 고려 사항
_14.8 스타일 특성
_14.9 예시와 용례

 

CHAPTER 15 이벤트 주도 아키텍처 스타일
_15.1 토폴로지
_15.2 스타일 세부 사항
_15.3 데이터 토폴로지
_15.4 클라우드 고려 사항
_15.5 일반적인 위험
_15.6 거버넌스
_15.7 팀 토폴로지 고려 사항
_15.8 스타일 특성
_15.9 예시와 용례

 

CHAPTER 16 공간 기반 아키텍처 스타일
_16.1 토폴로지
_16.2 스타일 세부 사항
_16.3 데이터 토폴로지
_16.4 클라우드 고려 사항
_16.5 일반적인 위험
_16.6 거버넌스
_16.7 팀 토폴로지 고려 사항
_16.8 스타일 특성
_16.9 예시와 용례

 

CHAPTER 17 오케스트레이션 주도 서비스 지향 아키텍처
_17.1 토폴로지
_17.2 스타일 세부 사항
_17.3 데이터 토폴로지
_17.4 클라우드 고려 사항
_17.5 일반적인 위험
_17.6 거버넌스
_17.7 팀 토폴로지 고려 사항
_17.8 스타일 특성
_17.9 예시와 용례

 

CHAPTER 18 마이크로서비스 아키텍처
_18.1 토폴로지
_18.2 스타일 세부 사항
_18.3 데이터 토폴로지
_18.4 클라우드 고려 사항
_18.5 일반적인 위험
_18.6 거버넌스
_18.7 팀 토폴로지 고려 사항
_18.8 스타일 특성
_18.9 예시와 용례

 

CHAPTER 19 적절한 아키텍처 스타일의 선택
_19.1 아키텍처 ‘유행’의 변화
_19.2 결정의 기준들
_19.3 모놀리스 사례 연구: 실리콘 샌드위치
_19.4 분산 사례 연구: 고잉, 고잉, 곤

 

CHAPTER 20 아키텍처 패턴
_20.1 재사용
_20.2 통신
_20.3 CQRS
_20.4 인프라

 

PART 03 기법과 소프트 스킬

 

CHAPTER 21 아키텍처적 결정
_21.1 아키텍처적 결정의 안티패턴들
_21.2 아키텍처적 중요성
_21.3 아키텍처적 결정 기록

 

CHAPTER 22 아키텍처 위험 분석
_22.1 위험 평가 행렬
_22.2 위험 평가표
_22.3 리스크스토밍
_22.4 사용자 스토리 위험 분석
_22.5 리스크스토밍의 예
_22.6 요약

 

CHAPTER 23 아키텍처 도식화
_23.1 도식화
_23.2 요약

 

CHAPTER 24 유능한 팀 만들기
_24.1 협업
_24.2 제약조건과 경계
_24.3 아키텍트 성향
_24.4 어느 정도까지 관여할 것인가?
_24.5 팀의 이상 징후
_24.6 체크리스트 활용
_24.7 지침 제공
_24.8 요약

 

CHAPTER 25 협상과 리더십 스킬
_25.1 협상과 촉진
_25.2 리더로서의 소프트웨어 아키텍트
_25.3 개발 팀에 녹아들기
_25.4 요약

 

CHAPTER 26 아키텍처 교차점
_26.1 아키텍처와 구현
_26.2 아키텍처와 인프라
_26.3 아키텍처와 데이터 토폴로지
_26.4 아키텍처와 엔지니어링 관행
_26.5 아키텍처와 팀 토폴로지
_26.6 아키텍처와 시스템 통합
_26.7 아키텍처와 엔터프라이즈
_26.8 아키텍처와 비즈니스 환경
_26.9 아키텍처와 생성형 AI
_26.10 요약

 

CHAPTER 27 다시 살펴본 소프트웨어 아키텍처 법칙들
_27.1 제1법칙: 소프트웨어 아키텍처의 모든 것은 트레이드오프이다
_27.2 제2법칙: 어떻게(방법)보다 왜(이유)가 더 중요하다
_27.3 양극단 사이의 스펙트럼
_27.4 마지막 조언

 

APPENDIX A 토론용 질문 모음

소프트웨어 아키텍트를 위한 최고의 가이드북!
생성형 AI와 클라우드 시대에 맞춰 새롭게 찾아왔다
 

빠르게 변하는 기술 혁신으로 업계를 바라보는 아키텍트의 시선도 변화가 필요합니다. 오늘날의 소프트웨어 아키텍처에 부합하는 새로운 지표를 현대적인 관점에서 살펴본 1판에 이어, 이번 개정판은 생성형 AI, 클라우드 등 새롭게 변화한 업계의 현실을 반영했습니다.
 

또한, 1판에는 두 개뿐이던 ‘소프트웨어 아키텍처 법칙’에 새로운 세 번째 법칙이 더해져, 많은 결정이 스펙트럼 위의 선택이라는 점을 강조합니다. 각 아키텍처 스타일에는 클라우드 고려 사항, 데이터·팀 토폴로지, 거버넌스 내용이 새로 생겼고, 모듈형 모놀리스를 별도 장으로 뽑아 실무 감각을 살렸습니다.
 

여기에 아키텍처 패턴과 아키텍처 교차점을 다루는 장, 법칙을 다시 정리한 장이 더해져 1판을 읽으신 분도 최신 흐름까지 한 번에 짚어 보실 수 있습니다.

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

## 시작하며

연차가 쌓이면서 코드 외적인 것들을 자연스레 신경쓰게 된다. 슬슬 인프라쪽도 더 공부해서 팀원들 도움받지 않고 구축하고 싶었는데 "이 책이 답을 줄 수 있을까?" 기대하며 펼쳤다. 이 책의 내용은 오히려 더 베이스를 이루는 아키텍처들을 다뤘다. 그래서 책을 쭉 봤을 때 내용이 많이 어려웠다. 하지만 여러번 읽다보면 이해가 될 것이라 기대했다.

책에서 소개하는 여러 아키텍처 패턴들은 익숙한 프론트엔드 디자인 패턴과는 사뭇 다른 느낌이었다. 근데 끝까지 읽고 나니 아키텍트들이 어떤 고민을 하고, 어떤 기준으로 결정을 내리는지 조금은 이해할 수 있었다.

하지만 돌이켜 생각해봤을 때 나도 자잘하게 이런 결정들을 했었다.

## 개발자와 아키텍트는 뭐가 다를까

- "이 함수를 어떻게 짤까?"
- "어떤 라이브러리를 쓸까?"
- "이 버그는 어떻게 고치지?"

책에서는 이런 고민들을 **전술적(tactical) 결정**이라고 불렀다.

반면 아키텍트는 **전략적(strategic) 결정**을 한다:

- "우리 시스템에 정말 중요한 건 뭘까?"
- "어떤 구조가 우리 비즈니스에 맞을까?"
- "이 선택을 하면 뭘 포기해야 할까?"

아키텍트는 시스템 전체로 넓게 보는 느낌이다.

예를 들어, 내가 버튼 컴포넌트를 만들 때는 "어떻게 예쁘게 만들지"를 고민한다. 하지만 아키텍트는 "100개 넘는 버튼의 일관성을 어떻게 유지할지", "각 팀이 독립적으로 개발하려면 어떤 구조가 필요할지"를 고민하더라.

나는 코드 한 줄에 집중하는데, 아키텍트는 시스템 전체를 본다. 줌 아웃의 정도가 다르달까. 그 간격이 생각보다 크다는 걸 이 책을 통해 체감했다.

## 아키텍트는 번역가다: 기술과 비즈니스 사이

책에서 가장 인상 깊었던 부분 중 하나는 아키텍트의 **번역자 역할**이구나 싶었다.

개발자는 "React 18로 마이그레이션해야 합니다", "Redis 캐시를 도입하면 됩니다"처럼 기술 언어로 말한다. 하지만 경영진은 "그래서 매출이 늘어나나요?", "비용은 얼마나 드나요?", "언제 끝나나요?"를 궁금해한다.

아키텍트는 이 둘 사이를 연결한다.

"Redis 캐시를 도입하면 페이지 로딩 속도가 2초 빨라집니다. 이는 사용자 이탈률을 15% 줄이고, 월 매출을 약 500만원 증가시킬 수 있습니다. 초기 구축 비용은 2주, 200만원 정도 예상됩니다."

기술적 결정을 비즈니스 가치로 변환하는 것.
"좋은 코드"가 아니라 "좋은 코드가 만드는 비즈니스 임팩트"를 설명해야 한다.

나는 지금까지 "좋은 코드를 짜면 인정받는다"고 생각했다. 근데 실제로는 **그 코드가 비즈니스에 어떤 영향을 주는지 설명할 수 있어야** 인정받는다는 걸 깨달았다.

"컴포넌트 재사용성을 높였습니다"보다 "개발 시간을 30% 단축해서 기능 출시를 2주 앞당길 수 있습니다"가 더 설득력 있다.

책에서는 이런 소통 능력을 기술만큼이나 중요하게 다룬다. 아무리 좋은 아키텍처를 설계해도, 이해관계자를 설득하지 못하면 실행할 수 없기 때문이다.

실제 회사에서도 기술스택 변경 마이그레이션을 하려고 C레벨을 설득해야 했을 때가 있었는데, 이런 경험을 바탕으로 이해가 됐고 이것은 단순 아키텍트만이 아니라 개발자들도 갈고 닦아야 하는 능력이었다.

## 모든 결정은 트레이드오프다

책을 읽으면서 계속 "응, 그렇지" 하게 되더라. 책에서 가장 많이 나온 단어가 **트레이드오프**. 모든 걸 다 잘할 수는 없다.

성능을 올리려면? 코드가 복잡해진다.
보안을 강화하면? 개발 속도가 느려진다.
처음부터 확장 가능하게 만들려면? 초기 비용이 크다.
유연한 구조를 만들려면? 단순함을 포기해야 한다.

항상 뭔가를 포기해야 한다는 걸 머리로는 알았는데,
이렇게 명시적으로 정리해주니까 속이 시원했다.

프론트엔드로 예를 들면, SSR을 도입하면 초기 로딩은 빨라지지만 서버 비용이 증가하고 배포가 복잡해진다. 타입스크립트를 쓰면 안정성은 높아지지만 초기 러닝커브와 설정 비용이 든다.

아키텍트는 "무엇이 우리에게 가장 중요한가?"를 먼저 정한다. 그리고 나머지는 어느 정도 포기한다.

이커머스 사이트라면 성능이 최우선일 수 있다. 0.1초 지연이 매출에 직접 영향을 주니까. 반면 내부 관리 도구라면 빠른 개발과 유지보수성이 더 중요할 수 있다.

**완벽은 없다. 그때그때 최선이 있을 뿐이다.** 이 문장이 책 전체를 관통하는 메시지라고 생각한다.

## 기술보다 중요한 것: 소프트 스킬

이 책에서도 소프트 스킬을 강조한다. 아무리 좋은 아키텍처를 설계해도, PM을 설득하지 못하면 실행할 수 없다. CEO에게 비즈니스 가치를 설명하지 못하면 예산을 못 받는다. 팀원들의 협조를 얻지 못하면 혼자 고군분투하다 끝난다.

특히 기억에 남는 건 **트레이드오프를 설명하는 법**이다. "모든 기능 다 넣어야 해요!"라고 할 때, "안 됩니다"가 아니라 "A를 선택하면 B를 포기해야 하는데, 어떻게 할까요?"처럼 현실적인 대안을 제시하는 것이다. 무조건 받아들이는 것도, 무조건 거절하는 것도 아니고, 함께 최선을 찾아가는 거다.

이런 능력은 지금도, 시니어가 되어서도 계속 필요할 것 같다.

## 실용적인 조언들

이 책에서 설명하는 20분 규칙은 하루에 딱 20분만 투자해서 새로운 기술들을 훑어보고 판단하는 것이다.

프론트엔드는 트렌드가 빠르게 바뀌니까, 모든 걸 다 깊게 공부할 수는 없다. 하지만 완전히 무시하기도 찝찝하다. 20분 규칙은 그 중간 지점을 찾는 현실적인 방법이다.

또 하나는 **생성형 AI 시대의 개발자 역할**에 대한 내용이다. AI가 코드를 짜주는 시대지만, "어디에 어떤 코드를 둘지", "어떤 구조가 맞는지", "무엇을 포기하고 무엇을 선택할지"는 여전히 사람이 결정해야 한다.

## 마무리

지금은 컴포넌트나 함수 레벨에서 고민하지만, 점점 더 시스템 전체를 설계하는 쪽으로 생각하려고 한다.

그때 이 책에서 배운 것들이 도움이 될 것 같다. 특히 **"정답은 없다. 항상 트레이드오프다. 그때그때 최선을 찾는 거다"**라는 생각. 완벽을 추구하다가 아무것도 못 하는 것보다, 그때의 최선을 선택하고 나중에 개선하는 게 낫다. 이게 아키텍처의 본질인 것 같다.

어려운 책이었지만, 읽길 잘했다고 생각한다. 읽다보면 더 디테일한 내용들도 이해될 것 같다.

다음 단계로 성장하기 위한 준비를 조금은 한 것 같다.
 

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

 

1번 읽고 바로 이해하기는 내용이 많고 어렵다. 그래서 최대한 인상 깊었던 내용을 기록하면서 보았다.

 

이 책을 읽으면서 바로 든 의문점은 "개발자와 아키텍트의 차이는 무엇일까?"였다.

  • 개발자: 나무를 심는 사람, 어떻게 구현할 것인가에 집중. 기술적 문제 해결. 깊이 중요. "이 기능이 올바르게 동작하는가"에 대한 책임.
  • 아키텍트: 숲을 설계하는 사람, 시스템의 전체적인 구조를 결정하고 why 이 방식이어야 하는지를 증명. 비즈니스 요구사항과 트레이드오프를 기준으로 결정. 너비 중요. "이 시스템이 변화하는 비즈니스 환경에서도 살아남을 수 있는가?"

그래서 한국에서 아키텍트 라는 직무가 있을까? 고민해 보았을 때, 특별히 직무로 구분된 아키텍트(architect)가 채용사이트에서 두드러지게 보이지 않았다.
그나마 클라우드, 분산처리 관련된 쪽에서 "아키텍처"라는 용어를 사용하거나, 시니어 개발자들에게 암묵적으로 요구하는 사항이 아닐까? 라는 생각이 들었다.

그런 면에서 이 책은 주니어 개발자보다는 더 넓은 시야를 원하는 그 이상의 개발 경력을 가진 개발자들이 읽기 좋은 책이라고 볼 수 있다.

물론, 코드 설계에 대해 고민하는 누구나에게 좋은 책일 것이다.

요즘 들어 트레이드 오프라는 단어를 정말 많이 들었었다. 그래서 이 키워드에 대해 좀 더 알고 싶고 무슨 의미일까 고민했었는데 이 책 덕분에 키워드를 이해할 수 있었다.
바이브 코딩으로 프로그래밍이 대중화되는 이 시대에 개발자들은 어떻게 할 것인가의 답을 이 책에서 제시하지 않았나 싶다.
나무를 심지 말고 숲을 설계하면서 좀 더 효율적으로, 유지 보수가 쉽고 오래 생존할 수 있는 시스템을 설계하는 지혜를 가진 사람이 되라고.

 


 

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

들어가며

소프트웨어 개발을 하다 보면 '아키텍처'라는 단어를 참 자주 듣게 됩니다.

그런데 막상 아키텍처가 정확히 무엇인지, 아키텍트는 어떤 일을 하는 사람인지 명확하게 설명하기는 쉽지 않아요.

마크 리처즈와 닐 포드가 쓴 이 책은 그 막연함을 걷어내고, 소프트웨어 아키텍처의 본질과 아키텍트의 역할을 체계적으로 정리한 책입니다.

 

이 책은 ‘소프트웨어 아키텍처 101’의 개정판으로 나온 것인데요.

생성형 AI와 클라우드 환경 등 최근 몇 년간 급격히 변화한 기술 환경을 충실히 반영하고 있는 듯 했어요!

 

목차

CHAPTER 01 서론
_1.1 소프트웨어 아키텍처의 정의
_1.2 소프트웨어 아키텍처의 법칙
_1.3 아키텍트의 기대 역할
_1.4 로드맵

PART 01 기초

CHAPTER 02 아키텍처적 사고
_2.1 아키텍처와 설계의 차이
_2.2 기술적 너비
_2.3 트레이드오프 분석
_2.4 비즈니스 동인의 이해
_2.5 아키텍처와 코딩 실무의 균형
_2.6 아키텍처적 사고의 남은 이야기들

CHAPTER 03 모듈성
_3.1 모듈성 대 세분도
_3.2 모듈성의 정의
_3.3 모듈성 측정
_3.4 모듈에서 컴포넌트로

CHAPTER 04 아키텍처 특성의 정의
_4.1 아키텍처 특성과 시스템 설계
_4.2 중요한 아키텍처 특성들
_4.3 트레이드오프와 ‘가장 덜 나쁜’ 아키텍처

CHAPTER 05 아키텍처 특성의 식별
_5.1 도메인 관심사들에서 아키텍처 특성 도출하기
_5.2 복합 아키텍처 특성
_5.3 아키텍처 특성의 추출
_5.4 카타: 실리콘 샌드위치
_5.5 아키텍처 특성의 제한과 우선순위 부여

CHAPTER 06 아키텍처 특성의 측정과 거버넌스
_6.1 아키텍처 특성의 측정
_6.2 거버넌스와 적합성 함수

CHAPTER 07 아키텍처 특성의 범위
_7.1 아키텍처 퀀텀과 세분도
_7.2 동기적 통신
_7.3 범위 지정의 영향
_7.4 범위와 클라우드

CHAPTER 08 컴포넌트 기반 사고
_8.1 논리적 컴포넌트의 정의
_8.2 논리적 아키텍처 대 물리적 아키텍처
_8.3 논리적 아키텍처의 작성
_8.4 컴포넌트 결합
_8.5 사례 연구: 고잉, 고잉, 곤-컴포넌트의 발견

PART 02 아키텍처 스타일

CHAPTER 09 아키텍처 스타일의 기초
_9.1 스타일 대 패턴
_9.2 기본적인 아키텍처 패턴
_9.3 아키텍처의 분할
_9.4 모놀리스 대 분산 아키텍처
_9.5 팀 토폴로지와 아키텍처
_9.6 구체적인 스타일로

CHAPTER 10 계층형 아키텍처 스타일
_10.1 토폴로지
_10.2 스타일 세부 사항
_10.3 데이터 토폴로지
_10.4 클라우드 고려 사항
_10.5 일반적인 위험
_10.6 거버넌스
_10.7 팀 토폴로지 고려 사항
_10.8 이 스타일의 특성들
_10.9 예시와 용례

CHAPTER 11 모듈형 모놀리스 아키텍처 스타일
_11.1 토폴로지
_11.2 스타일 세부 사항
_11.3 데이터 토폴로지
_11.4 클라우드 고려 사항
_11.5 일반적인 위험
_11.6 거버넌스
_11.7 팀 토폴로지 고려 사항
_11.8 스타일 특성
_11.9 예시와 용례

CHAPTER 12 파이프라인 아키텍처 스타일
_12.1 토폴로지
_12.2 스타일 세부 사항
_12.3 데이터 토폴로지
_12.4 클라우드 환경 고려 사항
_12.5 일반적인 위험
_12.6 거버넌스
_12.7 팀 토폴로지 고려 사항
_12.8 스타일 특성
_12.9 예시와 용례

CHAPTER 13 마이크로커널 아키텍처 스타일
_13.1 토폴로지
_13.2 스타일 세부 사항
_13.3 데이터 토폴로지
_13.4 클라우드 고려 사항
_13.5 일반적인 위험
_13.6 거버넌스
_13.7 팀 토폴로지 고려 사항
_13.8 아키텍처 특성 등급 평가
_13.9 예시와 용례

CHAPTER 14 서비스 기반 아키텍처 스타일
_14.1 토폴로지
_14.2 스타일 세부 사항
_14.3 데이터 토폴로지
_14.4 클라우드 환경 고려 사항
_14.5 일반적인 위험
_14.6 거버넌스
_14.7 팀 토폴로지 고려 사항
_14.8 스타일 특성
_14.9 예시와 용례

CHAPTER 15 이벤트 주도 아키텍처 스타일
_15.1 토폴로지
_15.2 스타일 세부 사항
_15.3 데이터 토폴로지
_15.4 클라우드 고려 사항
_15.5 일반적인 위험
_15.6 거버넌스
_15.7 팀 토폴로지 고려 사항
_15.8 스타일 특성
_15.9 예시와 용례

CHAPTER 16 공간 기반 아키텍처 스타일
_16.1 토폴로지
_16.2 스타일 세부 사항
_16.3 데이터 토폴로지
_16.4 클라우드 고려 사항
_16.5 일반적인 위험
_16.6 거버넌스
_16.7 팀 토폴로지 고려 사항
_16.8 스타일 특성
_16.9 예시와 용례

CHAPTER 17 오케스트레이션 주도 서비스 지향 아키텍처
_17.1 토폴로지
_17.2 스타일 세부 사항
_17.3 데이터 토폴로지
_17.4 클라우드 고려 사항
_17.5 일반적인 위험
_17.6 거버넌스
_17.7 팀 토폴로지 고려 사항
_17.8 스타일 특성
_17.9 예시와 용례

CHAPTER 18 마이크로서비스 아키텍처
_18.1 토폴로지
_18.2 스타일 세부 사항
_18.3 데이터 토폴로지
_18.4 클라우드 고려 사항
_18.5 일반적인 위험
_18.6 거버넌스
_18.7 팀 토폴로지 고려 사항
_18.8 스타일 특성
_18.9 예시와 용례

CHAPTER 19 적절한 아키텍처 스타일의 선택
_19.1 아키텍처 ‘유행’의 변화
_19.2 결정의 기준들
_19.3 모놀리스 사례 연구: 실리콘 샌드위치
_19.4 분산 사례 연구: 고잉, 고잉, 곤

CHAPTER 20 아키텍처 패턴
_20.1 재사용
_20.2 통신
_20.3 CQRS
_20.4 인프라

PART 03 기법과 소프트 스킬

CHAPTER 21 아키텍처적 결정
_21.1 아키텍처적 결정의 안티패턴들
_21.2 아키텍처적 중요성
_21.3 아키텍처적 결정 기록

CHAPTER 22 아키텍처 위험 분석
_22.1 위험 평가 행렬
_22.2 위험 평가표
_22.3 리스크스토밍
_22.4 사용자 스토리 위험 분석
_22.5 리스크스토밍의 예
_22.6 요약

CHAPTER 23 아키텍처 도식화
_23.1 도식화
_23.2 요약

CHAPTER 24 유능한 팀 만들기
_24.1 협업
_24.2 제약조건과 경계
_24.3 아키텍트 성향
_24.4 어느 정도까지 관여할 것인가?
_24.5 팀의 이상 징후
_24.6 체크리스트 활용
_24.7 지침 제공
_24.8 요약

CHAPTER 25 협상과 리더십 스킬
_25.1 협상과 촉진
_25.2 리더로서의 소프트웨어 아키텍트
_25.3 개발 팀에 녹아들기
_25.4 요약

CHAPTER 26 아키텍처 교차점
_26.1 아키텍처와 구현
_26.2 아키텍처와 인프라
_26.3 아키텍처와 데이터 토폴로지
_26.4 아키텍처와 엔지니어링 관행
_26.5 아키텍처와 팀 토폴로지
_26.6 아키텍처와 시스템 통합
_26.7 아키텍처와 엔터프라이즈
_26.8 아키텍처와 비즈니스 환경
_26.9 아키텍처와 생성형 AI
_26.10 요약

CHAPTER 27 다시 살펴본 소프트웨어 아키텍처 법칙들
_27.1 제1법칙: 소프트웨어 아키텍처의 모든 것은 트레이드오프이다
_27.2 제2법칙: 어떻게(방법)보다 왜(이유)가 더 중요하다
_27.3 양극단 사이의 스펙트럼
_27.4 마지막 조언

APPENDIX A 토론용 질문 모음

 

리뷰

제가 이 책에서 가장 인상 깊었던 부분은 "모든 아키텍처는 트레이드오프의 결과다"라는 관점이었어요.

정답을 찾으려 하기보다는, 상황에 맞는 '가장 덜 나쁜' 선택을 하는 것이 아키텍트의 핵심 역할이라는 메시지가 책 전반에 일관되게 흘렀던 것 같아요.

실제로 책에서는 소프트웨어 아키텍처의 세 가지 법칙을 제시하는데, 그 중 첫 번째가 바로 "소프트웨어 아키텍처의 모든 것은 트레이드오프"라는 것이죠.

이런 현실적인 시각이 오히려 더 와닿았습니다.

책의 구성을 보면, 기초 개념부터 시작해서 다양한 아키텍처 스타일을 체계적으로 다룹니다.

계층형 아키텍처, 마이크로서비스, 이벤트 주도 아키텍처 같은 익숙한 패턴부터 공간 기반 아키텍처처럼 낯선 개념까지 폭넓게 소개합니다.

각 아키텍처 스타일마다 토폴로지, 데이터 처리 방식, 클라우드 환경에서의 고려사항, 팀 구조까지 실무에서 마주칠 법한 내용들을 굉장히 꼼꼼하게 짚어주었어요.

 

특히 기술적인 내용뿐 아니라 협상, 리더십, 팀 관리 같은 소프트 스킬까지 다루고 있다는 점은 신선했던 것 같습니다.

아키텍트라는게 단순히 기술만 잘 아는 사람이 아니라, 조직과 비즈니스를 이해하고 사람들 사이에서 균형을 잡아야 하는 역할이라는 걸 보여주는 것 같았어요.

이 책은 추상적인 이론으로 끝나지 않고, 커머스나 경매 시스템 같은 구체적인 예시를 통해 아키텍처 개념을 설명해줍니다.

그래서 읽는 사람이 복잡한 내용도 좀 더 이해하기 쉽게 느껴지겠다 생각했어요.

또한 각 아키텍처 스타일의 장단점을 솔직하게 보여주면서, ‘이런 상황에서는 이 방식이 적합하다’는 식의 맥락을 함께 보여줍니다.

 

그리고 2판에서 새롭게 추가된 내용들이 있으니, 1판을 읽었던 분들에게도 충분히 가치있는 책일 것 같습니다.

 

마치며

솔직히 가볍게 읽히진 않았던 것 같아요!

제가 그만큼 지식도 부족하기 때문이겠죠.

페이지를 넘기다 보면 생소한 용어도 나오고, 한 번에 모든 내용을 소화하기는 어려웠던 것 같아요.

 

하지만 그만큼 깊이 있는 내용을 담고 있다는 뜻이기도 하고, 이미 지식과 흥미가 있으신 분들이라면 오히려 유익하게 다가오겠다 싶었어요. 개인적으로 저에겐 급하게 읽기보다는 천천히 읽어봐야할 책이라고 느껴졌네요.

 

이 책은 개발 경력이 어느 정도 쌓여서 시스템 설계에 관심이 생긴 분들, 아키텍트 역할을 맡게 되었거나 준비하고 있는 분들에게 특히 유용할 것 같아요.

또한 현직 아키텍트라면 놓치고 있던 부분을 점검하거나, 최신 트렌드를 따라잡는 데 도움을 받을 수 있지 않을까 합니다.

기술적 결정을 내려야 하는 프로젝트 리더나 팀장에게도 좋은 참고서가 될 수 있을 것 같습니다!

바이브코딩 시대가 열렸지만, AI가 코드를 아무리 잘 짜줘도 "어디에 배치할지, 어떻게 연결할지"는 여전히 사람의 몫입니다. 오히려 코드 생성이 쉬워진 만큼, 잘못된 구조 위에 코드가 빠르게 쌓이는 위험이 커졌습니다.
따라서 개발자의 차별화 포인트가 "코드를 잘 짜는가"에서 "시스템을 잘 구조화하는가"로 이동하고 있습니다. 차별점이 있는 개발자, 아키텍트가 되고싶은 분들께 정석으로 권할만한 책입니다.

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

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

 

개발 경험이 쌓일수록 우리는 기능 구현을 넘어 성능확장성유지보수성팀 협업과 같은 문제와 마주하게 되는데요이러한 복잡한 고민을 체계적으로 풀어내기 위해 아키텍처에 대한 이해는 필수라고 생각합니다이번에 소개할 소프트웨어 아키텍처 2판은 왜 아키텍처를 공부해야 하는지 설득력은 설명과 기술 유행이나 특정 스택에 의존하지 않는 보편적인 사고의 틀을 제시해 줍니다. 2판은 초판 출간 이후 약 5년간의 업계 변화를 반영해 새로운 정보를 습득할 수 있습니다.

 

소프트웨어 아키텍처 2판에서 가장 인상적인 변화는 소프트웨어 아키텍처 제법칙입니다.

기본 두 법칙은 다음과 같습니다.

소프트웨어 아키텍처의 모든 것은 트레이드오프(trade-off)이다.

어떻게(방법)보다 왜(이유)가 중요하다.

 

여기에 새롭게 더해진 제법칙은

아키텍처적 결정은 양자택일이 아니라양극단 사이의 스펙트럼에 있는 한 지점이다.

 

법칙은 말하는 핵심의 아키텍처를아니면 B처럼 이분법적으로 선택해서는 안 된다는 것으로 생각합니다이 제법칙은 기존의 제법칙과 제법칙을 한 단계 더 구체화한 내용을 담고 있습니다트레이드오프는 본질적으로 연속적인 값이며스펙트럼의 관점에서 바라볼 때 각 선택이 가져오는 장단점을 더 정확하게 비교할 수 있습니다아키텍처의 역할은 정답을 고르는 것이 아니라 비즈니스 요구팀 구조기술 환경을 고려해 스펙트럼 사에서 가장 합리적인 지점을 찾고 그 이유를 설명하는 것으로 생각합니다

 

소프트웨어 아키텍처 2판 곳곳에서 세 법칙이 실제로 적용되는 사례를 발견할 수 있는데요우리는 아키텍터가 해당 결정을 왜 내렸는지그리고 그에 따른 트레이드오프는 무엇인지를 볼 수 있습니다또한중요한 결정을 포착하는데, 유용한 기법까지 만날 수 있습니다.

 

2판에선 완전히 새로운 장들로 추가되어 알찬 정보를 얻을 수 있는데요20장은 아키텍처 패턴26장은 아키텍처의 다양한 교차점을 다루며27장에서는 새롭게 추가된 제법칙을 포함해 저자들이 제시한 소프트웨어 아키텍처 법칙들을 다시 조망하고 각 법칙이 실제로 어떤 귀결로 이어지는지 정리합니다이러한 구성 덕분에 단순한 이론서에서 머무르지 않고아키텍처가 복잡한 상황 속에서 사고하고 판단하는 과정을 체계적으로 훈련할 수 있는 구조로 한층 강화되었습니다.

 

이 책에서 공부에 특히 도움 된 부분은 초반에 아키텍처 사고와 기본 개념을 다루고 다양한 아키텍처 스타일을 실무 관점에서 체계적으로 정리한 중반부그리고 실제 설계 의사결정과 위험 분석을 다루는 후반부입니다챕터02 아키텍처 사고에선 아키텍처와 설계의 차이트레이드오프 분석비즈니스 동인의 이해 등 아키텍처 특성 정의 및 식별을 통해 설계 품질 특성을 체계적으로 정리할 수 있는 시간이었습니다.

 

이뿐만 아니라 챕터21 아키텍처적 결정에선 아키텍처 결정의 본질과 이를 잘못 처리했을 때 나타나는 안티패턴을 설명하며좋은 결정을 내리기 위한 기본 원칙을 짚어 줍니다안티패턴에는 겉보기에 합리적이어도 장기적으로 문제를 초래하는 반복적 실수가 포함되며이를 인식하고 피하는 것이 중요하다고 알려줍니다그리고 아키텍처 결정의 중요성을 이해하고그 결정 과정을 명확하게 문서화하는 기법을 소개합니다단순히 선택하는 것이 아니라 그 결정이 왜 내려졌는지를 기록하고 이후 팀과 이해관계자에게 명확히 전달하는 방법까지 다루고 있습니다이 기록은 협업과 유지보수설계 변경 시에 중요한 참고 자료가 될 수 있는 점까지 알차게 배울 수 있습니다.

 

소프트웨어 아키텍처 2판의 큰 장점은 단순히 아키텍처 기술을 나열하는 방식이 아니라왜 특정 구조나 선택이 필요한지를 스스로 묻고 답할 수 있는 사고방식이 길러졌다는 점입니다책에서 반복해서 강조되는 소프트웨어 아키텍처 모든 것은 트레이드오프다라는 메시지는 추상적인 이론을 넘어 실제 협업에 마주하는 복잡한 설계의 선택 순간마다 떠올리게 되며그 선택의 이유를 명확하게 설명할 수 있게 도와줍니다또한 다양한 아키텍처 스타일과 패턴을 실제 장단점 중심으로 비교해 주면서 언제 어떤 구조를 선택해야 하는가에 대한 기준을 구체적으로 잡을 수 있어 좋았습니다이 책은 단순히 지식만 전달하는 책이 아닌 아키텍처로서 문제를 이해하고 맥락을 파악하며 그것을 실무에 적용하는 능력을 길러 준다는 점에서 매우 큰 도움을 받을 수 있습니다.

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

 

 

총평

- 책의 난이도  : ★★★★★
- 추천 별점     : ★★★★
- 추천 독자     : 소프트웨어 아키텍처를 고민하고 있는 사람들
- 지은이         : 마크 리처즈, 닐 포드 지음 / 류광, 307번역랩 옮김
- 출판사         : 한빛미디어
 


이 책은 난이도에 별 5개를 준 것처럼 매우 어렵다. 천천히 곱씹으면서 읽어야 한다.

한 페이지, 한 개념마다 멈춰서 생각해야 한다. “나라면 이걸 어떻게 설계할까?”, “우리 서비스에 이 개념을 그대로 적용할 수 있을까?”

이 질문을 계속 던지면서 읽어야 한다.

 

특히 내용이 워낙 방대하고, 다양한 아키텍처 스타일 예시를 제공한다.

- 계층형 아키텍처 스타일 (10장)

- 모듈형 모놀리스 아키텍처 스타일 (11장)

- 파이프라인 아키텍처 스타일 (12장)

- 마이크로커널 아키텍처 스타일 (13장)

- 서비스 기반 아키텍처 스타일 (14장)

- 이벤트 주도 아키텍처 스타일 (15장)

- 공간기반 아키텍처 스타일 (16장)

- 오케스트레이션 주도 서비스 지향 아키텍처 (17장)

- 마이크로서비스 아키텍처 (18장)

 

이렇게 9개의 세부적인 아키텍처 까지 제시하고 있어 사실 모든 것을 읽는 것은 힘들다.

나도 이 중에서 관심이 제일 많고 친숙한(?) 15장의 이벤트 주도 아키텍처 스타일로 내용을 작성해보겠다.

다만 책의 내용을 전부 요약하기에는 아직 이해도가 많이 부족하여 핵심으로 눈에 들어오는 몇개만 적어봤다.

 

이벤트 주도 아키텍처

이벤트 주도 아키텍처(EDA)는 현대적인 소프트웨어 엔지니어링에서 가장 인기 있는 분산 비동기 아키텍처 스타일이다. 대규모 복합 애플리케이션부터 소규모 서비스까지, 높은 적응성을 제공한다.

비동기적으로 이벤트를 발생시키고 이에 반응하는 컴포넌트들로 구성되어 있다. 대부분의 애플리케이션은 "데이터를 달라"고 요청하는 요청 기반(Request-based) 모델을 따르지만, 이벤트 주도 아키텍처는 "어떤 일이 일어났다"는 이벤트에 반응하여 행동을 취한다.

 

이벤트 주도 아키텍처는 제어 방식에 따라 크게 두 가지 형태로 나뉜다.

1) 브로커(Broker) 토폴로지: 중앙 집중식 제어 없이, 이벤트가 브로커를 통해 흘러가며 각 처리기가 비동기적으로 반응하는 방식이다. "발사 후 망각(fire-and-forget)" 방식을 활용해 매우 높은 응답성을 제공한다.

2) 중재자(Mediator) 토폴로지: 이벤트 중재자가 전체적인 작업 흐름을 관리하고 통제한다. 복잡한 비즈니스 로직이나 오케스트레이션이 필요할 때 적합하다.

 

이벤트에 어떤 내용을 담을지 이벤트 페이로드(Payload)를 설계하는 것은 매우 중요하다.

데이터 기반(Data-based): 필요한 모든 정보를 담아 보낸다. 처리기는 DB를 조회할 필요가 없어 성능에 유리하지만, 데이터 일관성 유지와 대역폭 사용량 증가라는 단점이 있다.

키 기반(Key-based): ID 같은 최소한의 정보만 보낸다. 일관성 유지가 쉽지만, 처리기가 매번 DB를 조회해야 하므로 성능에 부하를 줄 수 있다.

우리가 피해야 할 안티패턴에는 이런 것들이 있다. 

빈혈성 이벤트(Anemic Event): 페이로드에 정보가 너무 부족해 처리기가 의사결정을 내릴 수 없는 상태를 말한다.

하루살이 떼(Swarm of Gnats): 너무 세분화된 파생 이벤트를 수 없이 발생시켜 시스템이 포화되고 흐름을 파악하기 어렵게 만드는 현상을 말한다.

 

결국 이래저래 종합하면 이벤트 주도 아키텍처는 성능, 확장성, 내결함성이 뛰어나다는 이점이 있지만 비동기 통신의 특성상 테스트가 어렵고, 전반적인 상태 관리가 복잡하다는 단점이 있어 이를 서로 잘 조율하는게 가장 중요한게 아닌가 싶다.

 

총평

이 책은 처음부터 끝까지 독자에게 답을 떠먹여주지 않는다. 대신 계속 질문을 던진다.

  • 우리는 무엇을 만들고 있는가
  • 이 시스템은 누구를 위한 것인가
  • 이 구조는 정말로 확장 가능한가, 아니면 지금만 돌아가는 구조인가

단순히 이러한 장점이 있다고 전달하는게 아니라 왜 그렇게 설계해야 하는지를 구체적으로 다뤄주는 책이다.

아키텍처 설계에 고민이 많은 개발자라면 꼭 한 번 읽어보시길 바란다!

2021년 소프트웨어 아키텍처 101(2021.11)의 개정판이 4년만에 나왔다. 2021년과 비교하면 클라우드 환경은 더욱 보편화되었으며, 생성형 AI는 소프트웨어 개발의 패러다임을 완전히 바꿔놓고 있다. 모두가 기능적인 내용과 서비스에 집중할 때 기능과는 직접 관련되지 않지만 소프트웨어가 갖춰야 할 필수 항목인 아키텍처에 관한 도서의 개정판이 나왔다. 이 분야는 AI에게도 쉽지 않은 분야라고 개인적으로 생각한다. 우선 정답이 없으며, 아키텍트는 주어진 문제를 해결하기 위한 최적의 트레이드오프를 제안해야 한다. 그 문제는 기술적일 수도 있고 아닐 수도 있다.

 

[추천 독자]

- 프로젝트, 프로덕트 매니저

- IT 개발자

- 아키텍트 입문자

- IT 정책을 결정하시는 분(CEO/CTO )

 

[키워드]

#소프트웨어 #아키텍처 #아키텍트 #설계 #트레이드오프 #비지니스동인 #모듈성 #응집도 #결합도 #가용성 #연속성 #성능 #복구성 #신뢰성 #안전성 #견고성 #확장성 #설정성 #확장능력 #설치성 #활용성 #재사용 #현지화 #유지보수성 #이식성 #업그레이드성 #온디맨드확장성 #온디맨드탄력성 #존기반가용성 #지역기반개인정보보호 #보안 #접근성 #보관성 #인증 #권한부여 #법적요건 #개인정보보호보안 #지원성 #사용성 #성취성 #클라우드 #도메인 #가타 #적합성함수 #거버넌스 #아키텍처퀀텀 #세분도 #클라우드 #컴포넌트 #안티패턴 #진흙잡탕 #모놀리스 #분산 #토폴로지 #팀토폴로지 #데이터토폴로지 #네트워크 #파이프라인 #마이크로커널 #서비스기반아키텍처 #이벤트주도아키텍처 #공간기반아키텍처 #오케스트레이션주도서비스지향아키텍처 #마이크로서비스아키텍처 #코레오그래피 #CQRS #인프라 #ADR #보신주의안티패턴 #사랑의블랙홀안티패턴 #이메일주도안티패턴 #도식화 #다이어그램 #UML #C4 #ArchiMate #체크리스트 #협상 #리더십 #공유라이브러리 #공유서비스 #동기메시징 #비동기메시징 #스펙트럼

 

[특징]

- 소프트웨어 아키텍처의 개념 설명과 클라이드 측면을 고려한 9개의 최신 아키텍처 스타일 반영

- "왜"에서 시작해서 "어떻게"까지 비유 프로젝트(가타)를 들어서 비교 설명

- 예시와 단계를 다양한 그림으로 이해하기 쉽게 설명

- 아키텍트가 갖춰야할 소프트웨어 스킬 포함

- 소프트웨어 아키텍처에 필요한 모든 내용을 다룸

 

[책의 구성]

이 책은 전체 3개 PART, 총 27개 장과 부록, INDEX로 구성되어 있다. (640페이지 분량)

 

CHAPTER 01 "서론"에서는 소프트웨어 아키텍처의 정의와 저자가 얘기하는 소프트웨어 아키텍처의 법칙 3가지를 설명한다. 그리고 앞으로 소개할 나머지 페이지의 내용을 간략하게 설명한다.

 

PART 01 "기초"는 총 7개 장으로, 소프트웨어 아키텍처의 구성요소와 관련된 내용을 다각도로 설명한다.

 

CHAPTER 02 "아키텍처적 사고"에서는 비유를 통해 아키텍트의 역할과 갖추어야할 요건을 설명한다.

CHAPTER 03 "모듈성"에서는 아키텍처의 최소 단위인 모듈의 개념과 관련된 지표를 설명한다.

CHAPTER 04 "아키텍처 특성의 정의"에서는 가용성, 연속성, 성능, 복구성, 신뢰성/안전성, 견고성, 확장성 등의 일반적인 운영 아키텍처 특성과 설정성, 확장 능력, 설치성, 활용성/재사용, 현지화, 유지보수성, 이식성, 업그레이드성 등의 구조적 아키텍처 특성, 온디맨드 확장성, 온디맨드 탄력성, 존 기반 가용성, 지역 기반 개인정보보호 및 보안 등의 클라우드 특성, 접근성, 보관성, 인증, 권한 부여, 법적 요건, 개인정보보호, 보안, 지원성, 사용성/성취성등의 횡단적 아키텍처 특성을 설명한다.

CHAPTER 05 "아키텍처 특성의 식별"에서는 예제를 통해 주어진 문제에서 아키텍처의 특성을 식별하는 방법을 설명한다.

CHAPTER 06 "아키텍처 특성의 측정과 거버넌스"에서는 복잡도와 적합성 함수를 통해 거버넌스의 지표를 측정하는 방법을 설명한다.

CHAPTER 07 "아키텍처 특성의 범위"에서는 아키텍처 특성들의 범위를 이해하고 적절한 아키텍처 스타일을 선택하는 방법을 설명한다.

CHAPTER 08 "컴포넌트 기반 사고"에서는 주어진 문제를 논리적인 컴포넌트로 분리하여 사고하는 방법을 설명한다.

 

PART 02 "아키텍처 스타일"은 총 12개 장으로, 모놀리스와 분산 아키텍처의 다양한 스타일을 설명한다.

 

CHAPTER 09 "아키텍처 스타일의 기초"에서는 아키텍처 스타일과 패턴을 비교 설명하며, 기본적인 아키텍처 패턴과 모놀리스 vs 분산 아키텍처의 특징을 설명한다.

CHAPTER 10 "계층형 아키텍처 스타일"에서는 기본적인 MVC 모델의 아키텍처 스타일을 구조와 개념, 데이터 토폴로지, 클라우드 고려 사항, 위험 요소, 거버넌스 측면, 팀 구성, 아키텍처 특성의 별점, 예시와 용례를 설명한다.

CHAPTER 11 "모듈형 모놀리스 아키텍처 스타일"에서는 도메인을 모듈로 구성한 아키텍처 스타일을 설명한다. 10장과 같이 구조부터 예시와 용례까지 설명한다.

CHAPTER 12 "파이프라인 아키텍처 스타일"에서는 파이프(|)와 필터를 사용한 아키텍처 스타일을 설명한다. 생산자, 변환기, 테스터, 소비자로 구성된 스타일이다.

CHAPTER 13 "마이크로커널 아키텍처 스타일"에서는 플러그인 아키텍처로 부르며, 제품 기반 애플리케이션에 맞는 아키텍처를 설명한다.

CHAPTER 14 "서비스 기반 아키텍처 스타일"에서는 실용적인 분산시스템의 하나인 서비스 기반 아키텍처 스타일을 설명한다.

CHAPTER 15 "이벤트 주도 아키텍처 스타일"에서는 인기 있는 분산 비동기 아키텍처 스타일인 이벤트 주도 아키텍처 스타일을 설명한다.

CHAPTER 16 "공간 기반 아키텍처 스타일"에서는 높은 확장성, 탄력성, 동시성과 관련한 문제를 해결하기 위해 설계되었으며, 캐시와 관련된 내용을 확인할 수 있다.

CHAPTER 17 "오케스트레이션 주도 서비스 지향 아키텍처"에서는 중재자(오케스트레이터)를 기반으로 동작하는 아키텍처 스타일을 설명한다.

CHAPTER 18 "마이크로서비스 아키텍처"에서는 최근 몇 년간 가장 인기가 많은 마으크로서비스 아키텍처 스타일에 관해 설명한다.

CHAPTER 19 "적절한 아키텍처 스타일의 선택"에서는 적절한 아키텍처 스타일을 선택하기 위한 다양한 기준 설명한 후 사례를 들어 비교 설명한다.

CHAPTER 20 "아키텍처 패턴"에서는 재사용, 통신, CQRS, 인프라 측면에서 아키텍처 패턴을 설명한다.

 

PART 03 "기법과 소프트 스킬"은 아키텍트의 역할과 소프트 스킬을 키우는 방법을 설명한다.

 

CHAPTER 21 "아키텍처적 결정"에서는 아키텍처를 결정하기 위한 ADR을 설명한다.

CHAPTER 22 "아키텍처 위험 분석"에서는 주어진 문제에 관한 아케텍처 특성의 위험 요소를 분석하는 방법을 설명한다.

CHAPTER 23 "아키텍처 도식화"에서는 UML, C4, ArchiMate등의 아키텍처 다이어그램을 도식화하는 툴과 작성 지침을 설명한다.

CHAPTER 24 "유능한 팀 만들기"에서는 유능한 팀을 만들기 위한 아키텍트의 필요 요건과 체크리스트 활용법에 관해 설명한다.

CHAPTER 25 "협상과 리더십 스킬"에서는 비즈니스 이해관계자, 다른 아키텍트, 개발자와의 효과적인 협상방법과 리더십을 향상시킬 수 있는 방법을 설명한다.

CHAPTER 26 "아키텍처 교차점"에서는 아키텍처를 작성할 때 고려해야 할 요소(구현, 인프라, 데이터, 엔지니어링, 팀)에 관해 설명한다.

CHAPTER 27 "다시 살펴본 소프트웨어 아키텍처 법칙들"에서는 저자가 얘기하는 아키텍처 3가지 법칙을 재조명한다.

APPENDIX A "토론용 질문 모음"에서는 각 장별로 주요 질문들을 정리하여 알려준다.

 

[인용]

"모답 답안집이 있나요?"라고 묻는 질문에 대한 저자 "닐 포드"의 답변이 재미있다.

다른 분야와 마찬가지로 모든 아키텍트는 꾸준히 아키텍처 설계 역량을 연마해야 하고, 그와 동시에 기술적 시야를 넓혀야 한다.

아키텍처에는 정답이나 오답이 없다. 오직 트레이드오프가 있을 뿐이다.

27장 다시 살펴본 소프트웨어 아키텍처 법칙들, p608

 

[소감]

2022년 소프트웨어 아키텍처 101(2021.11)를 읽은 후 3년만에 다시 읽었다. 확실히 책 읽는 속도나 이해하는 수준이 2022년보다 많이 개선되었다는 것을 느꼈다. 지난 3년을 돌이켜보면 아키텍처적인 성능이 얼마나 중요해졌는지 책을 통해 더욱더 실감하게 되었다. 클라우드는 이제 기본 전제가 되었으며, 이벤트 기반/분산 아키텍처, 마이크로서비스 아키텍처, 서버리스로 구현한 사례가 많이 늘어났다. 선택에 의해 기존의 모놀리스 아키텍처도 여전이 사용되고 있다. 정답은 없다. 주어진 문제를 주어진 환경에 적절하게 설계해야 한다. 이 책이 자세한 방법을 알려주지는 않지만, 사전에 리스크를 방지하고 지름길 가는 올바른 방법을 제시해 줄 것이다. 책일 읽어보면 이해가 될 것이다. ?

 

[추천]

아키텍처 부분은 IT 개발자라면 반드시 알아야 할 내용이며, 조금이라도 일찍 알면 앞으로의 개발에 있어서 훨씬 도움이 될 것이다. 이 책을 완벽하게 이해할 필요는 없다. 처음에는 이런 것들이 있구나 정도로 여기고 필요할 때 여러번 읽으면 된다. 아키텍처는 계속 개선될 것이며 어차피 정답은 없다.



아키텍처 결정 앞에서 망설이는 순간, 펼쳐보게 되는 책

시니어 개발자로서 팀을 이끌다 보면 어느 순간 코드를 넘어선 질문들과 마주하게 된다. "이 기능을 새로운 서비스로 분리해야 할까, 아니면 기존 모놀리스에 추가해야 할까?" "이벤트 기반으로 전환하면 정말 나아질까?" 같은 질문들 말이다. 이런 질문 앞에서 확신을 갖기란 쉽지 않다. 특히 그 결정이 향후 몇 년간 팀 전체의 생산성을 좌우할 수 있다는 걸 알기에 더 신중해진다.

"소프트웨어 아키텍처 The Basics 2판"은 바로 그런 순간을 위한 책이다. 이 책을 읽으면서 가장 먼저 든 생각은 "이런 책을 5년 전에 읽었더라면"이었다. 물론 그때 읽었어도 지금만큼 와닿지는 않았을 것 같다. 실제로 삽질을 해봐야, 잘못된 결정의 대가를 치러봐야 이 책의 가치를 제대로 느낄 수 있다.

트레이드오프라는 불편한 진실

책을 관통하는 핵심 메시지는 간단하지만 강력하다. "소프트웨어 아키텍처의 모든 것은 트레이드오프다." 처음엔 너무 당연한 얘기 아닌가 싶었는데, 책을 읽다 보니 우리가 얼마나 이 원칙을 무시하고 있었는지 깨닫게 됐다.

예를 들어 우리 팀은 작년에 마이크로서비스 전환을 검토했다. 당시 팀원들과 나눈 대화를 떠올려보면 "마이크로서비스로 가면 확장성도 좋아지고, 배포도 독립적으로 할 수 있고, 팀 자율성도 높아진다"는 장점만 나열했던 것 같다. 책에서는 이런 접근을 정확히 짚어낸다. 분산 아키텍처로 가면 네트워크 지연, 데이터 일관성 문제, 운영 복잡도 증가라는 대가를 치러야 한다고.

실제로 4장부터 7장까지 아키텍처 특성을 다루는 부분을 읽으면서, 우리가 얼마나 많은 것들을 간과했는지 새삼 느꼈다. 성능과 보안, 확장성과 단순성, 가용성과 비용... 이 모든 것을 동시에 만족시키는 아키텍처는 없다. 결국 비즈니스 우선순위에 따라 무엇을 취하고 무엇을 포기할지 결정해야 하는데, 이 책은 그 판단 기준을 제시한다.

현장에서 바로 써먹을 수 있는 실용성

이론서가 아니라는 점이 이 책의 가장 큰 강점이다.

PART 02에서 다루는 각 아키텍처 스타일마다 동일한 구조로 설명하는데, 이게 정말 실무적이다.

⦁ 토폴로지: 실제 구조가 어떻게 생겼는지

⦁ 데이터 토폴로지: 데이터는 어떻게 흐르는지

⦁ 클라우드 고려 사항: 클라우드 환경에서 주의할 점

⦁ 일반적인 위험: 이 스타일의 함정은 무엇인지

⦁ 팀 토폴로지: 이 아키텍처에 맞는 팀 구성은?

특히 '일반적인 위험' 부분이 유용했다. 예를 들어 계층형 아키텍처(Chapter 10)에서 "싱크홀 안티패턴"을 설명하는데, 우리 레거시 시스템에서 정확히 이런 문제가 있었다. 요청이 각 레이어를 그냥 통과만 하면서 아무 의미 있는 처리도 안 하는... 이걸 읽으면서 "아, 이게 안티패턴이었구나" 하고 무릎을 쳤다.

11장의 모듈형 모놀리스는 개인적으로 가장 인상 깊었던 부분이다. 요즘 분위기가 "무조건 마이크로서비스"인 것 같은데, 이 책은 현실적인 대안을 제시한다. 모놀리스지만 내부를 모듈로 잘 나누면 대부분의 이점을 가져갈 수 있다는 것. 실제로 우리 팀도 서비스 분리 전에 먼저 모듈화를 시도해보기로 했는데, 이 챕터가 큰 도움이 됐다.

클라우드 시대를 제대로 반영한 2판

1판과 비교했을 때 2판의 가장 큰 변화는 클라우드 관련 내용이 대폭 강화됐다는 점이다. 각 아키텍처 스타일마다 '클라우드 고려 사항' 섹션이 추가됐고, 아키텍처 특성에도 클라우드 네이티브 특성들이 포함됐다.

⦁ 온디맨드 확장성

⦁ 온디맨드 탄력성

⦁ 존 기반 가용성

⦁ 지역 기반 개인정보보호

이런 특성들은 이제 선택이 아니라 필수다. 특히 AWS나 Azure 같은 클라우드 환경에서 작업하는 개발자라면 반드시 고려해야 하는 요소들이다. 우리 팀도 작년에 온프레미스에서 AWS로 마이그레이션했는데, 당시 이 책이 있었으면 훨씬 수월했을 것 같다.

예를 들어 16장 공간 기반 아키텍처에서 클라우드 환경의 자동 확장, 로드 밸런싱, 캐싱 전략을 다루는데, 실제 AWS 서비스들과 매핑해서 생각해보니 이해가 훨씬 잘 됐다. 책에서 제시하는 원칙들이 구체적인 클라우드 서비스 선택으로 이어지는 거다.

코드를 넘어선 영역: 사람과 조직

PART 03은 기술적인 내용보다 소프트 스킬에 집중한다. 처음엔 "이게 왜 아키텍처 책에 있지?" 싶었는데, 읽다 보니 이게 핵심이더라.

Chapter 24 '유능한 팀 만들기'는 실제로 겪은 상황들이 그대로 나온다. 아키텍트가 모든 결정을 독단적으로 내리면 팀이 무너진다는 것, 제약조건은 명확하게 주되 세부 구현은 팀에 맡겨야 한다는 것. 이런 내용들이 교과서적인 이야기가 아니라 실전 경험에서 우러나온 조언처럼 느껴졌다.

특히 '어느 정도까지 관여할 것인가?'라는 질문이 인상적이었다. 시니어 개발자로서 아키텍처 결정에 참여하다 보면, 어디까지 관여하고 어디서 멈춰야 할지 애매한 경우가 많다. 책에서는 이에 대한 실용적인 가이드라인을 제시한다. 전략적 결정은 함께하되, 전술적 구현은 신뢰하고 맡기라는 것.

Chapter 21의 아키텍처 결정 기록(ADR)도 당장 적용 가능한 실용적인 기법이다. 우리 팀도 중요한 기술 결정을 할 때 왜 그렇게 결정했는지 문서로 남기곤 했는데, 형식이 제각각이어서 나중에 찾아보기 어려웠다. ADR 템플릿을 적용하니 훨씬 체계적으로 관리할 수 있게 됐다.

"왜 이 결정을 내렸는가"를 명확히 문서화하면, 6개월 후 팀원이 바뀌어도, 컨텍스트를 잃어버려도 당시의 의사결정 맥락을 이해할 수 있다. 이게 레거시 시스템을 유지보수할 때 얼마나 중요한지는 다들 알 것이다.

실무에 적용하면서 느낀 점들

책을 읽고 나서 실제로 몇 가지를 적용해봤다.

1. 아키텍처 특성 우선순위 정하기

신규 프로젝트를 시작할 때 Chapter 5의 방법론을 그대로 따라해봤다. 도메인 요구사항에서 아키텍처 특성을 추출하고, 우선순위를 정하는 과정. 예전엔 "확장 가능하고, 안전하고, 빠르고..." 이렇게 모든 걸 다 만족시키려 했는데, 이제는 "우리 비즈니스에서 가장 중요한 3가지 특성은 뭔가?"를 먼저 묻는다.

결과적으로 불필요한 복잡도를 많이 줄일 수 있었다. 예를 들어 내부 관리 도구는 확장성보다 개발 속도와 유지보수성이 더 중요하다는 걸 명확히 하니, 계층형 아키텍처로 심플하게 가는 결정을 자신 있게 내릴 수 있었다.

2. 리스크스토밍 도입

Chapter 22의 리스크스토밍을 팀 회의에 도입했다. 새로운 아키텍처를 도입하기 전에 팀원들과 함께 포스트잇으로 리스크를 브레인스토밍하는 것. 처음엔 부정적인 얘기만 하는 것 같아 불편했는데, 실제로 해보니 사전에 많은 문제를 발견할 수 있었다.

특히 주니어 개발자들도 리스크를 제기할 수 있는 안전한 환경이 만들어졌다. "이거 괜찮을까요?"라고 조심스럽게 물었던 것들이 실제로 큰 문제가 될 수 있는 부분이었던 경우가 많았다.

3. 팀 토폴로지 재정비

각 아키텍처 스타일마다 '팀 토폴로지 고려 사항'이 있는데, 이게 생각보다 중요했다. 마이크로서비스를 제대로 운영하려면 팀 구조도 바뀌어야 한다는 것. 우리는 아키텍처만 바꾸고 팀 구조는 그대로 두려고 했는데, 책을 읽고 나니 그게 왜 문제인지 이해가 됐다.

결국 기능 중심 팀에서 서비스 중심 팀으로 재편했고, 각 팀이 자기 서비스에 대한 end-to-end 책임을 지도록 했다. 초반엔 혼란스러웠지만, 결과적으로 배포 속도도 빨라지고 팀 자율성도 높아졌다.

이 책이 아쉬운 점

완벽한 책은 없다. 몇 가지 아쉬운 점도 있었다.

첫째, 예제 코드가 거의 없다. 개념적인 설명은 훌륭하지만, 실제 구현 코드를 보고 싶을 때가 많았다. 특히 마이크로서비스 간 통신이나 이벤트 주도 아키텍처 같은 부분은 코드 예제가 있었으면 이해가 더 빨랐을 것 같다.

둘째, 특정 기술 스택에 대한 언급이 제한적이다. 이건 의도된 것이긴 한데(기술 중립적인 책이니까), 실무자 입장에서는 "그래서 이걸 Spring Boot로는 어떻게 구현하지?" 같은 질문이 남는다. 물론 이건 다른 책이나 문서를 참고하면 되긴 하다.

셋째, 분량이 꽤 된다. 630페이지를 다 읽으려면 시간 투자가 필요하다. 바쁜 실무자가 한 번에 쭉 읽기엔 부담스러울 수 있다. 다만 필요한 챕터만 골라서 읽어도 충분히 가치가 있으니, 레퍼런스처럼 활용하는 것도 방법이다.

누구에게 추천하는가

이 책은 다음과 같은 사람들에게 특히 유용할 것 같다:

시니어 개발자로서 아키텍처 결정에 참여하기 시작한 사람들

⦁ 코드 레벨을 넘어선 의사결정을 해야 하는데, 체계적인 방법론이 필요한 경우

⦁ "이게 정말 맞는 선택일까?" 하는 의구심이 들 때 판단 기준이 필요한 경우

레거시 시스템 개선을 고민하는 사람들

⦁ 모놀리스를 그대로 둘지, 모듈화할지, 서비스로 쪼갤지 결정해야 하는 경우

⦁ 현재 아키텍처의 문제점을 명확히 진단하고 싶은 경우

기술 리드나 테크 매니저

⦁ 팀의 기술 방향을 설정해야 하는 경우

⦁ 비즈니스 요구사항을 기술 결정으로 변환해야 하는 경우

반대로 프로그래밍 경험이 별로 없는 주니어 개발자에게는 너무 이른 감이 있다. 실제로 시스템을 설계하고 운영해본 경험이 있어야 책의 내용이 와닿는다. 최소 3~5년 정도 개발 경험이 있고, 시스템 전체를 바라볼 수 있는 시야가 생긴 다음에 읽는 게 좋을 것 같다.

결국 이 책이 주는 가장 큰 가치는 "정답"이 아니라 "사고의 틀"이다.

모든 결정에는 트레이드오프가 있고, 그 트레이드오프를 명확히 이해하고 설명할 수 있어야 한다. 기술은 수단이지 목적이 아니며, 아키텍처는 비즈니스를 위해 존재한다. 완벽한 아키텍처는 없으며, "지금 우리에게 가장 덜 나쁜" 선택을 하는 것이 현실이다.

이런 원칙들이 머릿속에 자리 잡으면, 새로운 기술이나 프레임워크가 나와도 흔들리지 않는다. "왜"를 물을 수 있기 때문이다. 그리고 그 "왜"를 팀원들에게, 경영진에게, 그리고 나 자신에게 설명할 수 있게 된다.

5년 전에 이 책을 읽었더라면 좋았을 거라고 했지만, 사실 지금 읽어서 다행이다. 이제야 이 책의 가치를 제대로 이해할 수 있으니까. 그리고 5년 후 다시 읽으면 또 다른 걸 얻을 것 같다. 경험이 쌓일수록 더 깊이 이해되는, 그런 책이다.

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

 

 

 

아키텍트가 보는 시야를 알려줍니다. 단순히 코드를 잘 짜는 단계를 넘어, 시스템 전체의 구조를 조망하고 요구사항과 기술적 제약 사이에서 비즈니스의 가치를 구현하고자 균형을 찾는 과정을 보여줍니다. 아키텍트 역할에 관심이 있거나 성장을 고민하는 개발자에게 시야를 넓힐 수 있는 좋은 기회가 되리라 생각합니다.


"아키텍처에 정답이 없으며 오직 트레이드오프만 존재한다"는 아키텍처의 가장 큰 원칙을 끊임없이 상기시킵니다.
논리적인 근거를 바탕으로 의사결정을 내릴 수 있는 힘을 키우기 위해 왜, 어떻게, 무엇을 해야 하는지 설명합니다. 이러한 설명 또한 탄탄한 구조를 가지고 있어 생각의 확장을 자연스럽게 유도합니다.


아키텍트에게 필요한 역량을 단계별로 보여줍니다. 먼저 1부에서는 아키텍처 특성을 정의하고 컴포넌트 식별하는 방법을 통해 무엇을 찾아야 하는지를 다룹니다. 2부에서는 주요한 아키텍처 스타일의 장단점과 상황에 맞게 선택하는 방법을 제시합니다. 설계 시 참고할 수 있는 레퍼런스로도 부족함이 없습니다. 3부에서는 개발자에게는 부족할 수 있는 그렇지만 아키텍트라면 갖추어야 하는 기량을 얘기합니다. 기술적 역량을 넘어 리스크 분석, 그리고 팀과의 협상 및 소통 기법을 다루고 있습니다. 실무에서 마주할 수 있는 현실적인 고민들에 대한 조언이 들어있습니다.


이 책은 '무엇을(What)' 사용하는지 보다 '왜(Why)' 그렇게 설계해야 하는지를 끊임없이 자문하게 합니다. 막연한 프로젝트나 시간이 갈수록 복잡해지는 시스템 앞에서 막막함을 느끼는 개발자라면 곁에 두면 좋을 것 같습니다. 필요할 때마다 펼쳐보면 많은 도움을 받을 수 있으리라 생각합니다. 지금 당장은 아니더라도 더 나은 설계를 고민하는 개발자라면 넓은 시야를 얻을 수 있는 좋은 기회라고 봅니다.
 

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

소프트웨어 아키텍처 The Basics 2판

 

바야흐로 인공지능 서비스의 확산과 함께 바이브 코딩이라는 분야도 떠오르면서 안타까운 현실이지만 가장 낮은 주니어 레벨의 개발자부터 대체될 것이 자명한 미래입니다. 저 역시 2025년에는 본격적으로 AI를 활용해서 개발을 하고 있어요. 그러면서 점점 내가 이 시장에서 가치있게 살아남으려면 어떤 것을 강점을 가지고 있어야 할 것인지 많은 고민이 생겼습니다.

내가 지금 몸담고 있는 분야의 도메인 지식과 함께 소프트웨어 개발의 가장 기본 및 근본이 되는 아키텍처가 가장 중요한 것이 아닌가라는 요즘 생각을 자주 합니다. 작은 부분에 집중할수록 더 큰 부분을 보는 아키텍처를 놓쳐 온 것 같습니다. 그런데 바이브 코딩을 하다 보니 크게 보는 것이 얼마나 중요한지 조금씩 느끼고 있어요. 《소프트웨어 아키텍처 The Basic 2판》는 이런 제 답답함을 풀어주는 책입니다. 1판도 정말 좋았는데 꽤 개선이 되고 추가된 내용이 많은 것 같아요! (게을러서 1판도 다 못 봤는데...)

 

《소프트웨어 아키텍처 The Basic 2판》는 기존 1판의 내용을 더 보강하고 전체적인 통일성을 위해 구성을 많이 손봤다고 합니다. 다양한 아키텍처 스타일마다 클라우드 고려 사항, 데이터 토폴로지, 팀 토폴로지 등 새로운 시대를 반영하는 내용도 포함되었으면서 아예 추가된 장도 있어요. 아키텍처 패턴, 아키텍처의 여러 교차점 등이 그 예입니다. 재밌겠네요!

여러 가지 책에서도 보고 심지어 1판에서도 봤지만 항상 처음 보는 기분으로 보는 《소프트웨어 아키텍처 The Basic 2판》의 1장은 아키텍처의 정의를 담고 있습니다. 수학 공부할 때 매번 집합을 본다는 말이 있듯이 소프트웨어 개발도 참 다르지 않네요. 마치 처음인 것처럼 또 재밌고 흥미롭게 읽고 있습니다.

 

《소프트웨어 아키텍처 The Basic 2판》에서는 개발자가 제 몫을 다하려면 알아야 하는 지식 피라미드를 알고 있는 것, 모른다는 것을 아는 것, 모르는 줄도 모르는 것으로 구분해서 그려서 각각에 대해 설명합니다. 사실 개발자에게만 해당하는 내용을 아니라서 더 와닿네요. 네... 저는 소프트웨어 아키텍처를 모른다는 것을 압니다. 그리고 그 안에 자세한 내용은 정말 모르는 것 같습니다. 《소프트웨어 아키텍처 The Basic 2판》으로 그 빈 부분을 메꿔서 튼튼한 피라미드를 만들어봐야겠어요.

《소프트웨어 아키텍처 The Basic 2판》는 다양한 형태의 아키텍처를 아주 상세하게 설명합니다. 그냥 책 읽듯 스으윽 읽다 보면 내가 만들고 있는, 혹은 내가 속해 있는 프로젝트가 어떤 스타일과 가장 비슷하게 돌아가고 있는지를 알게 되고 무엇을 개선하면 좋을지도 생각하게 됩니다. 게다가 이번 2판에서는 각각의 아키텍처들을 서로 비교하며 읽을 수 있도록 상당 부분 통일화된 개요를 가져가고 있어서 각 챕터를 병렬적으로 읽는데도 상당히 편해졌습니다.

다양한 인공지능 서비스들, 특히 AI Agent라고 불리는 녀석들의 등장으로 이제 꼭 사람이 아니더라도 일정 부분 팀원의 역할을 할 수 있는 기능들이 도입되기 시작했어요. 나중에는 결국 모든 사람이 일정 규모 이상의 에이전트를 데리고 일하는 팀장이 될 것이 분명합니다. 그렇다면 유능한 팀은 어떤 것일까요? 《소프트웨어 아키텍처 The Basic 2판》의 24장에서는 팀에 대해서도 아주 흥미롭게 설명하고 있습니다. 미래를 준비하기 위해서는 이 부분도 정말 자세하게 익혀 둘 필요가 있겠어요.

누군가와 책 《소프트웨어 아키텍처 The Basic 2판》을 함께 읽는다면, 그렇지 않고 혼자 읽더라도 APPENDIX A의 '토론용 질문 모음'과 같은 챕터는 전체적인 복습 빛 정리를 위해 큰 도움이 됩니다. 정말 이 책을 씹어 먹듯이 읽어 보려면 이 질문들 하나하나에 대해서 내가 이해한 대로 글을 적어보는 것도 좋겠네요.

정말 공부할 것은 많고 인생은 흥미롭습니다.

재밌네요!!!

《소프트웨어 아키텍처 The Basic 2판》 북 리뷰 끝.

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

 

소프트웨어 아키텍처라는 단어는 늘 거창하게 들린다. 경험 많은 시니어의 영역 같기도 하고, 막연히 나중에나 고민할 문제처럼 느껴지기도 한다. 이 책은 그런 거리감을 꽤 정직하게 좁혀 준다. 아키텍처를 특정 기술이나 유행하는 패턴의 집합이 아니라, 의사결정의 사고 체계로 풀어내기 때문이다.

 

이 책의 가장 큰 장점은 처음부터 끝까지 일관되게 흐르는 관점이다.아키텍처에는 정답이 없고, 모든 선택은 트레이드오프라는 전제. 성능을 얻으면 복잡성이 따라오고, 유연성을 얻으면 비용이나 안정성을 일부 포기해야 한다. 저자들은 이 사실을 숨기지 않는다. 오히려 가장 덜 나쁜 선택을 어떻게 판단할 것인지에 집중한다는 점이 인상적이다.

 

1부에서는 아키텍처적 사고, 모듈성, 아키텍처 특성 같은 기본 개념을 다룬다. 여기서 말하는 특성은 가용성, 확장성 같은 추상적인 단어에 그치지 않고, 어떻게 식별하고 우선순위를 매기며 측정할 것인지까지 이어진다. 아키텍처를 감각이나 경험의 영역이 아니라, 엔지니어링의 영역으로 끌어오는 느낌이다.

 

2부의 아키텍처 스타일 파트는 이 책의 중심이다. 계층형, 모듈형 모놀리스, 이벤트 주도, 마이크로서비스 등 흔히 들어본 구조들을 나열하는 데서 멈추지 않는다. 각 스타일마다 데이터 토폴로지, 팀 구조, 거버넌스, 클라우드 환경에서의 고려 사항을 함께 다룬다. 덕분에 이 구조가 왜 이 상황에 맞는지, 언제 부적합해지는지를 입체적으로 이해하게 된다. 유행처럼 소비되던 마이크로서비스를 한 발 떨어져서 보게 만드는 것도 이 책의 매력이다.

 

3부에서는 아키텍트의 현실적인 역할이 드러난다. 결정 기록, 리스크 분석, 도식화, 협상과 커뮤니케이션까지 포함된다. 아키텍트가 설계도만 그리는 사람이 아니라, 팀과 조직 사이에서 끊임없이 균형을 잡는 역할이라는 점이 분명해진다. 기술보다 사람이 더 어려운 문제라는 사실을 인정하는 부분도 인상 깊다.

 

2판에서 특히 반가운 점은 클라우드와 생성형 AI를 억지로 끼워 넣지 않았다는 것이다. 새로운 기술을 “적용해야 할 대상”이 아니라, 기존 아키텍처 사고의 연장선에서 어떻게 해석해야 하는지를 차분하게 설명한다. 덕분에 유행에 쉽게 휘둘리지 않는 책이라는 인상을 준다.

 

이 책은 아키텍트만을 위한 책은 아니다. 구조를 고민해야 하는 모든 개발자, 기술 부채와 조직 구조 사이에서 갈등해 본 경험이 있는 사람이라면 충분히 공감할 지점이 많다. 아키텍처를 배우기보다는, 아키텍처적으로 생각하는 법을 익히고 싶을 때 이 책은 꽤 든든한 기준점이 되어 줄 것으로 생각한다. 

 

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

 

아직 아키텍처를 짤 실력은 안 되지만, 하루가 다르게 발전하는 생성형 AI를 보며 자연스레 위기감을 느꼈습니다. 'AI가 못 하는 게 과연 뭘까?'를 고민하던 중, 선배 개발자들의 "AI는 아직 설계(Design) 영역까지는 침범하지 못했다"는 말이 떠올랐습니다. 그래서 선택하게 된 책이 바로 『소프트웨어 아키텍처 The Basics(2판)』입니다. 당장 아키텍트가 될 순 없더라도, 지금부터 조금씩 배우며 미래를 대비하고 싶었습니다.

책을 읽으며 가장 기억에 남는 것은 1장에 나오는 '소프트웨어 아키텍처의 법칙'이었습니다.

  • "소프트웨어 아키텍처의 모든 것은 트레이드오프이다."
  • "어떻게(방법)보다 왜(이유)가 더 중요하다."
  • "대부분의 아키텍처적 결정은 양자택일이 아니라 양극단 사이의 스펙트럼에 있는 한 지점이다."

이 문장들을 읽는 순간, 제가 프론트엔드 개발을 공부하며 겪었던 수많은 시행착오가 떠올랐습니다. React 프로젝트를 하며 기술 선택의 기로에 놓일 때마다 "트레이드오프를 따져라", "왜 그 기술을 썼는지 설명해라", "상황에 맞는 적합성을 따져라"라는 피드백을 수없이 들었기 때문입니다. 그동안 공부하면서 파편적으로 들었던 조언들이 이 책을 통해 하나의 거대한 원칙으로 정리되는 느낌을 받았습니다.

또한, 흥미로웠던 점은 개발자와 아키텍트의 차이였습니다. 개발자는 기술적 깊이(Depth)가 중요해서 흔히 말하는 'Deep Dive'가 필요하지만, 아키텍트는 기술적 너비(Breadth)가 훨씬 중요하다는 것입니다. 개발자들의 블로그 포스트를 보면 ‘Deep Dive’한 콘텐츠들이 많은 이유를 알게 되었습니다.

책은 아키텍처 스타일부터 소프트 스킬까지 방대한 내용을 다룹니다. 주니어인 저에게는 이해하기 어려운 부분도 많았지만, 조급해하지 않고 천천히 내 것으로 만들려 합니다. 이 책이 AI 시대에 저를 지켜줄 단단한 방패가 되어주길 기대해 봅니다.

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

 

초판의 탄탄한 기초 위에 AI 시대의 아키텍처 고려사항과 클라우드 비용분석, 모듈형 모놀리스, 팀 토폴로지가 추가되어 현행화를 이뤄낸 2판이다.

이 책의 핵심 통찰은 '모든 전략적 결정에는 트레이드오프가 따른다'는 것이다. 설계와 아키텍처의 모호한 경계를 스펙트럼으로 접근한다. 집의 구조를 정의하는 것은 아키텍처고, 바닥이 카펫인지 원목인지는 설계라는 비유가 직관적이다. 마이크로서비스 선택은 아키텍처 쪽이고 UI 프레임워크 선택은 설계에 가깝지만, 대부분의 결정은 그 사이 어딘가에 위치한다.

특히 5장의 '아키텍처 특성 워크시트'는 실무에서 바로 쓸 수 있는 도구다. 이해관계자들에게 필요한 특성을 물으면 늘 "전부 다"라는 답이 돌아온다. 워크시트는 최대 7개로 목록을 강제로 제한하고, 최종적으로 가장 중요한 3가지로 합의하라고 조언한다. 범용 아키텍처를 만들려는 욕망을 경계하고 정말 중요한 것에 집중하게 만드는 장치다.

 

Part2는 다양한 아키텍처 스타일을 일관된 형식으로 정리한다. 계층형, 파이프라인, 마이크로커널, 서비스 기반, 이벤트 주도, 공간 기반, 마이크로서비스까지 각 스타일의 토폴로지, 데이터 구조, 클라우드 고려사항, 그리고 언제 사용하고 피해야 하는지 명확히 제시한다.

초판 이후 DDD가 널리 채택되며 모듈형 모놀리스가 큰 인기를 끌어 2판에 새로 추가됐다. 모놀리스이지만 도메인 분할 방식을 따른다. 다만 시스템이 너무 커지거나 코드 재사용이 과도해지면 비정형 모놀리스로 전락할 위험이 있다. 도메인을 처음부터 잘 정의하는 것이 핵심이다.

마이크로서비스는 '무공유' 철학을 따른다. 재사용을 제한하고 필요하면 중복을 허용한다. 트레이드오프의 전형적인 사례다. 저자들은 "서비스 간 트랜잭션을 원한다면 '하지 마세요!'"라고 단호하게 말한다. 서비스 경계를 넘나드는 트랜잭션이 빈번하다면 마이크로서비스가 올바른 선택이 아닐 가능성이 높다.

19장은 스타일 선택 방법을 다룬다. 대부분의 문제 도메인은 거의 모든 범용 스타일로 구현 가능하다. 차별점은 어떤 특성들을 얼마나 잘 지원하느냐에 있다. 최종 결정은 세 가지 질문으로 정리된다. 모놀리스냐 분산이냐, 데이터는 어디에 둘 것인가, 통신은 동기적인가 비동기인가.

 

24장은 팀과 아키텍트의 역할을 다룬다. 전통적인 단방향 모델에서는 아키텍처 목표가 거의 달성되지 않는다. 강력한 양방향 협업이 필요하다. Part2의 모든 장에는 팀 토폴로지 고려사항이 추가되어 각 아키텍처 스타일과 팀 구성의 궁합을 구체적으로 설명한다.

완벽한 아키텍처는 없다. 중요한 것은 무엇을 얻고 무엇을 포기하는지 명확히 이해하고 설명할 수 있는가다. 이 책은 변하지 않는 원칙과 변화에 대응하는 방법을 동시에 제시한다. 소프트웨어 아키텍트로 성장하고 싶다면, 그리고 설계와 아키텍처 사이의 모호한 경계에서 방향을 잡고 싶다면, 이 책은 여전히 가장 믿음직한 나침반이다.

 

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

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

이 책은 소프트웨어 아키텍처에 대한 개념부터 실무에서 접해볼 수 잇는 다양한 내용을 담고 있어 기본기를 다질 수 있는 책이다.

소프트웨어 아키텍처가 어떤 것인지에 대한 설명을 시스템의 구조와 시스템의 행동방식의 구조를 결정하는 여러 논리적인 컴포넌트들의 결합을 토대로 아키텍처의 스타일과 관련 결정을 구성하며 시스템의 구성 방식에 대한 규칙들을 정의하는 아키텍처적 결정에 대한 요소들로 정의한다.

아키텍처에 대한 정의를 통해서 어떻게 작동하는지, 그리고 왜 이러한 사항들을 결정했는지에 대한 파악을 할 수 있다는 점들을 소프트웨어 아키텍처의 법칙들로 이해할 수 있도록 설명한다.

설계자의 눈으로 아키텍처의 관점에서 바라보는 사고인 어떤 것을 변경하려고 할 때 전반적으로 어떤 영향을 미칠지 이해하고, 시스템의 각기 다른 부분들을 어떻게 상호작용시켜야 하는지에 대한 파악과 분석인 아키텍처적 사고를 소개한다.

또한 혼동할 수 있는 아키텍처와 설계의 차이도 설명하는데, 시스템의 겉모양보다는 구조에 초점을 두는 즉, 시스템의 구조와 형태를 결정하는 소프트웨어 아키텍처와 시스템의 외관 즉, UI의 느낌과 모양에 초점을 두는 설계의 차이를 이해할 수 있도록 한다. 뿐만 아니라 소프트웨어 아키텍처 특성과 정의를 통해서 운영적, 구조적, 클라우드, 횡단적인 아키텍처의 특성도 소개하며, 이를 통해 아키텍처의 특성에 대한 범위를 지정하는 데에 영향을 미치는 부분에 대한 내용과 함께 논리적인 관점에서 컴포넌트를 정의하고 아키텍처를 이해하고 이를 작성하는 내용도 다룬다.

후반부에는 아키텍처의 스타일에 대한 기초개념과 함께 모놀리스와 분산 아키텍처에 대한 스타일을 자세히 설명한다.

특히 분산 아키텍처에 대한 8가지 오류, 착오에 대한 내용을 다루는데 이 부분은 반드시 분산 아키텍처 환경에서 개발을 하거나 서비스를 운영하는 개발자면 혹여 내가 잘못된 내용을 알지는 않았는지 이 책에서 다루는 8가지 오해를 다루는 내용을 통해서 잘못된 내용을 알고 있었다면 정정해보길 바란다.

이 외에도 분산 아키텍처에 대한 다양한 스타일을 소개한다. 예시도 함께 소개하기 때문에 내가 서비스하는 환경은 어떤 스타일로 운영이 되고 있고 이러한 스타일에는 어떤 특징과 장/단점이 존재하는지도 정리해가며 이해할 수 있기를 추천한다.

내가 가장 관심있게 보았던 부분은 아키텍처의 스타일을 시간이 지나면서 여러 요인에 의해 바뀌는데 어떻게 하면 각 상황에 맞는 아키텍처 스타일을 선택하는 것인가라는 부분이다.

과거에 경험한 여러 사례들을 통해서 미래의 아키텍처를 설계할 때 과거의 아키텍처 스타일에서 발견된 여러 특징을 결합하고 단점을 해결하려는 노력이 반영되는 경우가 많은데 어떻게 하면 각 상황에 맞게 아키텍처 스타일을 결정하는 기에 대한 기준들을 다룬다.

도메인에 따라서도 중요한 측면을 최대한 많이 분석하고 서비스를 운영함에 따라 미치는 여러 요인을 이해할 필요가 있으며, 또한 기타 외부 요인을 지원하는 아키텍처의 특성들을 식별 및 파악하고 데이터 관련 사안에 대해서는 여러 이해관계자들과 잘 협력해야 하며, 배포하는 환경인 클라우드에서도 각 애플리케이션이 얼마나 많은 데이터를 저장하고 처리하는지에 대한 파악이 중요하다는 점과 함께 탄력성, 확장성의 중요성도 설명한다.

뿐만 아니라 비용 문제에 대해서도 설계 시 고려 요소가 될 수 있고, 개발 프로세스들의 프로젝트 요인도 아키텍처의 설계 영향 미칠 수 있다는 내용도 함께 설명한다.

이외에도 재사용, 통신, CQRS, 인프라의 각 요소들에서의 우리가 잘 알고 있는 아키텍처 패턴도 소개하며, 아키텍처적 결정 사항에 안티패턴과 결정을 위한 문서 및 도식화 도구, 서비스를 개발하고 함께 운영하는 여러 이해 당사자간의 협업과 협상, 리더십 스킬의 관점에서도 아키텍처를 설계하는 중요 요소임을 이해할 수 있다.

책을 완독하고 나서 들었던 생각은 이 책은 아키텍처를 설계함에 있어 설계의 개념 및 방식, 법칙인 기술적 내용 뿐만 아니라 팀, 협업, 협상, 리더십 스킬의 관점까지 이르는 폭넓은 내용을 다룬다는 점에서 깊이있는 지식과 기술을 요구하는 아키텍처가 되기를 원하는 분들에게 실무에서 참고할 지침서가 될 것이라고 생각한다.

개발자인 나도 많은 도움이 되었던 책이다.

“한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다”

아키텍처가 뭘까?

이 책을 읽기 전까지는 굉장히 막연했다. 아키텍트가 뭐고 아키텍처가 뭘까? 구조의 이름일까?
아키텍트만 아는 그들만의 어려운 영역같다고 느꼈다.

 

건축학도의 시각에서 아키텍트는 건축가. 아키텍처는 건축물정도로 볼 수 있는데, 크게 다르지 않다.
이걸 소프트웨어 관점에서 봤을 때 아키텍처는 소프트웨어의 구조, 설계의 근간이다. 어떤 구조를 가져갈 것이며 왜 그렇게 되는지 설명하는 의사결정의 집합이다. 아키텍트는 그런 설계를 맡는 사람, 의사결정권자로 보면 된다.

 

아키텍처는 추상적인, 논리적인 구조다. 전체적인 부분을 어쩌면 감각적이고 어쩌면 논리적인 부분을 아키텍트가 요구하면 기술자가 짠 하고 나타나서 지어주는건 현실 건축가나 소프트웨어 아키텍트나 비슷하다.
아무튼 그런 일을 하는 사람들, 그런 일의 결과물이 아키텍트이고 아키텍처다.

 

이 책에서 다루는 내용

이 책은 딱 이정도 같다. "모든건 결국 트레이드오프라서 정답은 없으니 상황봐서 하세요."
초반에는 아키텍처가 뭔지, 아키텍트의 역할, 어떤 사고 방식을 가져야하는 지를 다룬다. 자기개발 방법도 추천해준다. 아키텍처들에 따라 어떤 특성을 갖는지 성능에 따라, 확장성, 보안에 따라, 그리고 각각을 어떤 지표가 있을지도 다룬다.
중반에는 각각의 아키텍처가 어떤 형태인지 다룬다. 레이어드, 이벤트 기반, 서비스 기반, MSA.. 아무튼 각 스타일은 다 좋다 나쁘다가 아니라 앞서 말했듯 트레이드오프고 상황 봐가면서 하면 된다.
후반에는 의사결정에 대한 이야기가 나온다.
의사결정하는 방법부터 시작한다. 아무리 멋진 아키텍처에 대한 청사진이 있더라도 조직에서 어떻게 의사결정을 이끌어낼 것인지 커뮤니케이션 방법도 다룬다.

이 책을 읽고

앞서 말했듯이, "정답이 없다."가 가장 중요한 메세지다. 저자는 결론 내리기를 의도적으로 피한다. 상황에 따라 다르니까 그렇다. 저자는 조금 아키텍트는 특별한 직함이라고 보지 않는 느낌이다. 코드를 많이짜지도, 가장 많은 결정을 하지도 않는다. 방향성을 제시하고 고민하며, 이유를 공유하는 그런 사람임을 그저 얘기해준다. 무심한 간지;;

 

아키텍처를 '배워야하는 기술 목록'이 아니라 '사고 방식'임을 다룬다.
자주 상기하는 말이 있다. 생각은 귀찮고 어렵다. 그래서 생각을 누군가에게 미루고 싶을 수 있지만 아무도 책임져주지 않는다. 그냥 내가 잘 생각해야하고 잘 판단해서 나아가야한다.
건축학과 설계 수업에서도 자주 상기하게 되고 개발할 때에도 많이 느낀다. 툴, 기술은 생각보다 쉽다. 생각이 어렵다. 그래서 생각이 중요한 것 같다.

 

아 책이 생각보다 The Basics라고 하는 키워드로 붙었지만 생각보다 어렵게 느껴지는 부분이 많았다. 나중에 더 크면 쏙쏙 알아듣지 않을까?

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

 

이 책은 시작부터 아키텍처 설계의 본질을 제대로 정의하고 들어간다.

 

구체적인 설계 기법을 설명하기 전에 아키텍처 설계를 하려면 어떤 사고방식으로 접근해야 하는지에 대해 이야기하며 생각의 뿌리부터 재정립해주는 느낌이었다.

그래서 읽고 나면 “어떻게 설계할 것인가”보다 “왜 그렇게 설계해야 하는가”에 대해 훨씬 더 깊이 고민하게 된다.

 

특히 인상 깊었던 부분은 서론부터 강조되는 소프트웨어 아키텍처의 법칙이었다.

그중에서도 책 전반에 걸쳐 반복적으로 다루는 핵심 개념은 단연 트레이드오프다.

 

아키텍처 설계를 정해진 방법에 대한 양자택일의 문제가 아닌, 양극단 사이의 스펙트럼에서 모든 트레이드 오프를 고려해 명확한 이유를 기반으로 최적의 지점을 선택하는 과정임을 끊임없이 강조한다.

 

 

이후 다양한 아키텍처 사례를 통해 각 구조의 장단점을 비교하고, 실무에서 어떤 기준과 고민을 통해 결정을 내려야 하는지를 차분하게 설명한다.

 

요즘 들어 AI가 점점 개발자의 역할을 대체할 수 있다는 이야기를 들을수록, 오히려 AI가 대체하기 어려운 영역은 무엇일지 고민하게 되었다. 그 과정에서 자연스럽게 아키텍처에 대한 관심도 깊어졌다.
책에서 말하듯, 아키텍처 설계란 단순히 구조를 그리는 일이 아니라 실무의 제약과 현실을 고려하며, 왜 이 선택이 최선인지 설득하는 작업이라는 점이 특히 공감되었다.

 

그동안 한빛미디어 리뷰어 활동을 통해 아키텍처 관련 서적을 읽어왔지만, 개인적으로는 이 책이 가장 ‘정석적인 아키텍처 설계서'라는 인상을 받았다.

책의 분량이 다소 두껍게 느껴질 수는 있지만, 그만큼 핵심 내용을 밀도 있게 담아냈다고 볼 수 있다.


아키텍처 설계를 체계적으로 공부하고 싶거나, 설계에 대한 사고의 기준을 세우고 싶은 개발자라면 꼭 한 번 읽어보기를 추천하고 싶은 책이다.

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

 

 

 

소프트웨어 아키텍처 The Basics (2판)는 소프트웨어 아키텍처를 기초부터 폭넓게 정리한 실용서입니다. 이 책은 단순히 아키텍처의 개념을 나열하는 데 그치지 않고, 현대 소프트웨어 개발 환경에서 아키텍처를 정의하고 적용하는 데 필요한 사고의 틀과 실전적 기준을 제시합니다. 아키텍처 스타일, 품질 속성, 컴포넌트 설계, 도식화, 진화적 아키텍처 등 아키텍처의 핵심 주제를 망라하고 있어 개발자에서 아키텍트로 성장하고 싶은 엔지니어에게 실질적 방향성을 제시합니다. 책의 초반에는 아키텍트에 대한 정의와 필요한 내용들을 잘 정리하고 있어 팀에서 어떤 역할이 되어야 하는지 명확하게 이해할 수 있습니다.

 

 

 

 

이 책의 큰 특징은 아키텍처를 하나의 기술 스택에 종속된 설계 지식으로 다루지 않고, 폭넓은 원칙과 사고 체계로 풀어낸다는 점입니다. 예를 들어, 계층형 아키텍처, 모듈형 모놀리스, 마이크로서비스 등 다양한 스타일을 비교하면서 어떤 상황에서 각 스타일이 적합한지 설계 기준과 사례 중심으로 설명합니다. 이러한 접근 방식은 단지 문법적 요소를 설명하는 것이 아니라 독자가 아키텍처 결정을 스스로 분석하고 논리적으로 설명할 수 있도록 유도합니다. 

 

아키텍처 설계는 기술적 선택뿐 아니라 비즈니스 요구와 팀의 상호작용, 품질 속성 간의 트레이드오프를 고려하는 복합적 활동입니다. 이 책은 기술적 결정과 동시에 협업, 커뮤니케이션, 발표, 문서화 등의 소프트 스킬을 중요하게 다룹니다. 이는 아키텍트 역할이 단지 기술 결정자가 아니라 팀과 조직 전체의 방향성을 조율하는 리더 역할임을 이해하는 데 중요한 맥락을 제공합니다. 

 

또한 최신 클라우드 환경과 생성형 AI 중심의 현대적 엔지니어링 관행을 반영하여, 최근 기술 흐름과 아키텍처 사이의 상관관계를 이해하도록 구성되어 있습니다. 이러한 최신 사례 중심 설명은 전통적 아키텍처 지식에 머물지 않고 실무 중심의 적용과 판단 능력을 키우는 데 도움이 됩니다. 

 

정리하면, 『소프트웨어 아키텍처 The Basics (2판)』은 아키텍처의 본질적인 개념을 체계적으로 정리하고, 실전적인 설계 사고를 확장하도록 설계된 책입니다. 아키텍처를 처음 접하는 개발자부터 이미 설계 책임을 맡고 있지만 방향성을 고민하는 테크 리더까지 아키텍처를 이해하고 실전에 적용하는 데 필요한 큰 그림과 구체적 판단 기준을 제공합니다. 

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

 

? 책 소개

오늘 소개할 책은 소프트웨어 아키텍처 The Basics (마크 리처즈, 닐 포드) 이다.

 

? 책 선택 이유

 아키텍처 관점에서 서비스를 바라보는 능력은 개발자의 성장에 핵심적인 요소라고 늘 생각해왔다. 시스템이 어떤 방식으로 구성되고 확장되며 유지될 수 있는지 이해해야 한 단계 더 나아갈 수 있다고 느꼈다. 하지만 아직까지 소프트웨어 아키텍처를 체계적으로 학습한 경험이 없어서 항상 갈증이 있었다. 그런 상황에서 이 책을 접하게 되었고 내가 놓치고 있던 관점과 개념들을 정리할 수 있는 기회라고 생각해 선택하게 되었다. 새로운 시각을 얻고 앞으로의 학습 방향까지 고민해볼 수 있을 것 같다는 기대도 함께 생겼고 무엇보다 실무 경험만으로는 채워지지 않던 구조적 사고를 보완해줄 수 있는 책이라는 점이 마음을 끌었다.

 

?? 책의 특징 및 차별점

[실무 전반에 적용 가능한 아키텍처 사고방식을 제공하는 입문서]
 이 책은 아키텍처를 거대한 이론이 아니라 실제 서비스에서 반복적으로 마주치는 핵심 질문들로부터 설명한다. 역할과 책임, 품질 속성, 트레이드오프 사고처럼 구조를 이루는 기본 단위를 한 번에 정리해주기 때문에 AI 기반 기능을 서비스로 연결하는 과정에서 느끼던 막연함이 많이 정리되었다. 특히 AI 서비스 엔지니어인 나에게는 모델 성능, 서빙 방식, API 구성, 인프라 선택이 하나의 구조적 판단으로 연결되어야 한다는 부분을 잡아준 점이 인상적이었다. 그리고 같은 내용이 백엔드 개발자에게는 확장성과 유지보수성 판단 기준, 프론트엔드에게는 API와 도메인 구조 이해의 토대, PM/기획자에게는 기술 선택과 리스크를 해석할 언어가 될 수 있을 것이라고 생각했고 서비스 개발과 관련된 대부분의 직군에게 도움이 될 내용이라고 느꼈다.

 

[기술 선택과 협업 방식을 정교하게 만드는 실전형 기준점 제시]
 이 책의 또 다른 강점은 선택 과정 자체를 문서화하고 공유할 수 있는 방법을 알려준다는 점이다. 품질 속성과 조직 구조의 연계, ADR 기반의 의사결정 기록, 아키텍처 스타일 선택 기준 등은 팀 단위로 일하는 모든 직군에게 구체적인 협업 언어가 된다. 모델 중심의 개발에서 벗어나 서비스 전체의 수명·리스크·조직 맥락까지 고려하는 시야를 확장할 수 있었고 인프라 엔지니어에게는 장기 운영 관점, 데이터 엔지니어에게는 파이프라인 품질 속성 설계 기준, 리드 개발자에게는 기술 방향성 합의 도구로 활용될 수 있을 것이라고 생각했다. 이 책은 구조를 통해 더 나은 결정을 내리는 방법을 공통 언어로 제공한다는 점에서 확실한 차별점을 가진다.

? 추천 독자

1. 모델 중심 개발에서 한 단계 나아가 서비스 전체 구조와 기술 선택 기준을 잡고 싶은 AI 서비스/ML 엔지니어
2. 다양한 요구와 제약 속에서 확장성과 유지보수성을 고려한 아키텍처 판단 흐름을 익히고 싶은 백엔드/플랫폼/데이터 엔지니어
3. 요구사항과 서비스 품질을 구조적인 언어로 정리하고 팀 협업에 반영하고 싶은 PM/기획/테크 리드 등 기술 의사결정에 관여하는 직군

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

 

책을 처음 받고 든 첫 생각은 ‘와, 정말 두껍다’였다. 총 640페이지에 달하는 이 묵직한 두께는 소프트웨어 아키텍처라는 방대한 주제를 한 권에 함축하는 것이 결코 쉬운 일이 아님을 대변하는 듯했다. 특정 기간 안에 처음부터 끝까지 완독하며 한 번에 소화하기에는 다소 부담스러워 보인 것도 사실이었다.

 

그리고 목차를 훑어보니 이 책은 한 번에 독파하기보다는, 전체적인 맥락을 한 번 훑어보고 이후 실무에서 마주하는 문제 상황에 맞춰 관련 챕터를 찾아 읽는 ‘레퍼런스 북’으로 활용하는 것이 훨씬 효율적이겠다는 생각이 들었다. 두 명의 저자 또한 이러한 방대한 지식을 실무적으로 어떻게 접근해야 할지 가이드를 제시하고 있다.

 

소프트웨어 아키텍처에 대한 근본적인 공부가 필요하다고 느꼈던 건, 역설적이게도 가장 트렌디한 기술인 'AI'를 활용하면서부터였다. 최근 개발 환경은 AI를 단순 자연어 프롬프트로 제어하든, 명세 기반의 개발(SSD, Spec-Driven Development)을 하든 간에 AI가 작성할 코드의 방향성을 인간이 어떻게 제시해 주느냐에 따라 결과가 크게 달라질 수 있었다. 기본적인 구조나 아키텍처에 대한 명확한 정의를 내려주지 않으면 아무리 뛰어난 AI 모델이더라도 일관성 없는 결과를 주기도 하고, 유지보수가 어려운 코드를 뱉어내기도 했다. AI에게 올바른 질문을 던지고 그 결과물을 견고한 시스템으로 만들기 위해서는 개발자 스스로가 아키텍처를 보는 눈, 즉 책에서도 언급하는 '아키텍처적 사고'를 갖추는 게 중요하다고 느꼈다.

 

흥미롭게도 이번 제2판(2nd Edition)에서는 이러한 시대적 흐름을 반영했다. 1판과 달리 ‘생성형 AI’와 ‘클라우드’ 환경에 맞춘 현대적인 엔지니어링 관행이 시의적절하게 추가되었다. 과거의 아키텍처가 다소 정적인 구조물이었다면, 현대의 개발 환경에서의 아키텍처는 변화하는 생태계 속에서 AI와 공존하며 진화하는 유기체에 가깝다.

 

또한 실무를 하며 느꼈던 포인트는 한 번에 모든 표준이 만들어지지 않는다는 건데, 말 그대로 ‘팀은 표준을 좋아하지만, 세상에 완벽한 표준은 없다’라는 것이다. 책에서도 언급하듯 아키텍처는 ‘대규모 트레이드오프 잔치’와도 같다. 우리는 매번 골치 아프고 번거로운 결정을 내려야 하며, 딱 한 번의 결정으로 모든 문제를 끝낼 수는 없다. 물론 특정 시점에 대략적인 표준을 정할 순 있지만, 환경이 바뀌고 상황이 달라지면서 그에 맞는 표준은 또 달라지기 마련이었다. 프로젝트 초기에는 최적이라고 생각했던 표준도 비즈니스 환경이 바뀌고 상황이 달라지면 구시대의 유물이 되기도 했다. 그때마다 단순히 유행을 좇는 것이 아니라, 왜 이런 선택을 해야 하는지 깊게 사고하고 더 현명한 결정을 내리기 위해서는 근본적인 지식이 필요했다.

 

이 책은 마이크로서비스, 모듈형 모놀리스, 마이크로커널 등 다양한 아키텍처 스타일과 패턴을 다루면서도, 특정 기술 스택에 국한되지 않는 보편적인 원칙을 설명한다. 특히 '모듈성'과 '컴포넌트 기반 사고' 파트는 복잡한 시스템을 어떻게 분해하고 조립해야 할지에 대한 뚜렷한 인사이트를 제공한다. 결합도와 응집도, 그리고 세분도를 고민하는 아키텍트들에게는 도움이 될 만한 내용이었다.

 

기술적인 내용뿐만 아니라, 이 책이 매력적인 또 다른 이유는 '사람'을 다루기 때문이다. 아키텍트는 단순히 기술적 사고에만 머물 것이 아니라 이해관계자들을 설득하고 팀을 이끄는 리더여야 한다. 책에서는 효과적인 팀 관리나 협업 방식, 협상 등 아키텍트가 갖춰야 할 소프트 스킬에 대한 내용도 비중 있게 다룬다. 기술적 결정 뒤에 숨겨진 정치적, 조직적 역학 관계를 이해하는 데 도움이 되었다.

 

책의 홍보 문구 중 "아키텍처를 '덜 나쁜 선택'에서 '의식적인 선택'으로!"라는 문구가 기억에 남았다. 이 책이 완벽한 정답을 줄 순 없다고 생각한다. 다만, 수많은 선택지 중에서 우리 상황에 가장 적합한 답을 찾아낼 수 있는 기준과 사고력을 키울 수 있는 책이라고 느꼈다.

 

AI가 코드를 짜주는 세상에서 인간 개발자가 설 곳은 어디일지 고민하는 분들, 그리고 팀의 기술적 의사결정 앞에서 매번 막막함을 느끼는 분들에게 이 책을 추천한다. 비록 두꺼운 책이지만, 이 안에 담긴 내용은 모든 게 빠르게 변하는 시대 속에서도 변치 않는 단단한 지반이 되어주리라 생각한다.

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

소프트웨어 아키텍처 The Basics 2판

 

기존의 "소프트웨어 아키텍처 101" 책의 2판이 나왔다.

"헤드퍼스트 소프트웨어 아키텍처는" 는 가벼운 마음으로 아키텍처의 기초 대해 공부하는 책 느낌이었는데,

"소프트웨어 아키텍처 The Basics 2판" 은 교과서적인 느낌이다. 조금 더 실무적이다.

 

AI 가 엄청나게 발전했다.

이제는 AI 에게 먼저 질문한다.

하지만 답이 없는 문제를 물어보면 AI 는 편향된 답변을 하거나, 여러가지 여러가지의 해법에서 한두가지를 제시해준다.

그래서 이 책을 읽어야한다.

 

"아키텍처는 트레이드 오프이다".

그렇기 때문에 정답을 구하는 것이 아니라 토론해야한다.

AI 에게 어떻게 질문하느냐에 따라 대답의 퀄리티와 정보가 달라진다.

내가 토론을 하고 판단하고 철학을 논할 수 있을 때, AI 도 제대로 활용될 수 있는 분야라고 생각한다.

 

아키텍처 시스템 구조와 아키텍처는 트레이드 오프 예시

 

아키텍처가 결정하는 시스템 구조를 보여준다.

헤드퍼스트 책에서도 동일하게 나와있다.

아키텍처의 스타일을 출발점으로 아키텍처가 지원할 특성을 정하고,

시스템의 행동 방식을 구현하는 논리적 컴포넌트들이 결합되고,

아키텍처적 결정들이 결합된다.

 

각 단계는 정답이 정해져 있지 않다.

아키텍트가 트레이드오프를 항상 고려하여 결정해야한다.

우측그림을 보면 서비스간 통신을 어떻게 구현할지에 대한 예시가 2개 나와있다.

서비스간 토픽으로 구현하면 토픽을 통해 누구나 접근가능하다는 장점이자 단점이 생긴다.

확장성 측면으로 볼것이냐 보안적 측면으로 볼것이냐.

이 모든 것은 아키텍트가 결정해야한다.

 

비즈니스 동인의 이해

 

아키텍처의 결정은 다른 결정보다 신중해질 수 밖에 없다.

한번 결정나면 다시 변경하는데 많은 비용이 들기 때문이다.

그래서 시스템을 이해하는 것을 넘어서 "시스템의 성공"에 필요한 비즈니스 동인도 이해하도록 노력해야한다.

이를 위해서는 비즈니스 이해관계자들과 원만하고 협력적인 관계를 맺어야하기 때문이다.

 

 

제품(시스템)은 컴퓨터 공학뿐 아니라 비즈니스를 이해해야 성공할 수 있다고 생각한다.

내가 가진 공학적 지식들은 제품의 품질을 높여 제품의 완성도를 높이고 적기에 납품할 수 있게 한다.

하지만 제품이 성공하기 위해서는 비즈니스를 이해하고 제품의 가치와 철학을 제대로 설정할 수 있어야한다.

 

PoC(proofs-of-concept)

 

적절한 가치를 녹이기 위해서는 적절한 기술을 선택할 수 있어야한다.

내가 시스템의 더 높은 곳을 볼 수록 코딩을 적게하게 되고 실질적인 기술과 멀어진다.

그래서 PoC(proofs of concept) 를 자주 진행하면서 구현 관점을 놓지 않도록 노력해야한다.

 

아키텍처 특성


 

개인적으로 항상 이 특성 부분이 어렵다.

무수히 많은 특성이 있고, 숨겨진 특성을 찾아야하고 ...

숨겨진 특성은 도메인을 어느정도 이해하고 경험이 있어야하니 어려운 것 같다.


 

덜 나쁜 아키텍처

 

아키텍처엔 정답은 없다.

시스템의 성공에 필수이거나 가장 중요한 아키텍처 특성을 지원하도록 하자.

나머지는 중요하게 지원하지 않아도 된다.

너무 많은 아키텍처 특성은 오히려 시스템을 복잡하게 만든다.

 

아키텍처 특성의 식별

 

어떻게 아키텍처 식별할 것인가에 대해서도 소개한다.

이해관계자들도 인정할 특성을 식별해야한다.

나만 이해한다면 그것은 중요한 특징이 아니다.

내가 중요하다고 생각한다면 그 이유를 손실없이 전달하여 동의를 받아야한다.

그렇게 식별한 특성이라도 명확하게 정의를 내리기엔 어렵다. 특성이라는 것이 "복합적" 이기 때문이다.

측정가능한 하위 특성들을 식별해서 객관적으로 볼 수 있게 하자.

 

 

이 책은 높은 관점(시스템 상위)에서 이야기를 한다.

단순 개발의 관점을 벗어나서 비즈니스 관점을 돌아보게 해주는 것 같다.

이런 책은 읽을 때마다 나의 관점이 리프레쉬해준다.

 

세상엔 답이 없다.

나의 답이 관점에 따라 맞을수도 아닐수도 있다.

항상 다양한 것들을 고려하도록 노력해야겠다.

 

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

160여페이지가 더 필요해진 이유

1판 「소프트웨어 아키텍처 101」이 470여페이지였다면, 2판은 630여페이지로 약 34% 증가했다.

단순히 분량이 늘어난 게 아니다. 이 160페이지는 지난 몇 년간 소프트웨어 아키텍처 세계가 얼마나 빠르게 변화했는지를 보여주는 증거다.

클라우드 네이티브 시대의 반영

가장 눈에 띄는 변화는 클라우드 특성이 아키텍처 특성의 한 축으로 자리 잡았다는 점이다:

온디맨드 확장성 (On-demand Scalability)

온디맨드 탄력성 (On-demand Resiliency)

존 기반 가용성 (Zone-based Availability)

지역 기반 개인정보보호 및 보안

이제 아키텍트는 단순히 "확장 가능한가?"를 넘어 "클라우드 환경에서 자동으로 확장되고 복구되는가?"를 고민해야 한다.

모듈형 모놀리스의 귀환

11장에 모듈형 모놀리스 아키텍처가 추가된 것도 의미심장하다.

만능처럼 여겨졌던 마이크로서비스가 그렇지 않다는 경험을 쌓은 결과다.

"분산 시스템의 복잡성 없이 모듈화의 이점을 누리자"는 현실적인 접근법으로 자리 잡았다.

변하지 않는 본질

그럼에도 책의 핵심 메시지는 변하지 않았다:

"소프트웨어 아키텍처의 모든 것은 트레이드오프다."

클라우드든, 모놀리스든, 마이크로서비스든 — 결국 아키텍트의 역할은 "왜 이 선택을 했는가"를 설명할 수 있어야 한다는 것.

160여페이지가 늘어났고, 소프트웨어 아키텍처 법칙이 1개 추가되었지만, 이야기하고자 하는 본질은 변한지 않앗다.

결론

이 책은 단순한 개정판이 아니다.

소프트웨어 아키텍처의 현재 주소를 담은 스냅샷이다.

1판을 읽었더라도, Head First를 읽었더라도, The Hart Parts를 읽었더라도 다시 2판을 다시 읽어야 할 이유가 충분하다.

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

 

나는 개발자다.

요즘은 좀 줄어들긴 했지만

주변에서 AI 때문에 개발자 망하는거 아니냐는 말을

아주아주 많이 들어왔다.

 

그런데 내가 느끼기에는

AI의 발전으로 개발자의 효율성이 좋아졌을 뿐

AI가 개발자를 대체하는 것은 어려울 것 같다.

 

생성형 AI는 비유하자면 랜덤 가챠와 같다.

유저가 자연어로 간소화된 기능 위주의 요구사항을 이야기하면

AI가 수많은 프로그래밍 언어와 프레임워크 중

적합한 것들을 조합해서 결과물을 내놓는다.

 

그러면 그 결과물의 구성요소는 말 그대로 랜덤으로 발생한다.

요구사항이 디테일해지면 디테일해질수록

랜덤 요소가 줄어들지만

개발자가 아닌데 기술 스택을 고려하고

아키텍쳐를 구상할 수 있을까?

 

결국 AI라는 거대한 파도가 닥쳐올때 개발자는

구경만 하는 유저의 포지션이 아니라

파도에 올라타는 주도자의 포지션이 되어야 한다.

 

그런 의미에서 이 책,

소프트웨어 아키텍처 The Basics는

아주 좋은 지침서가 되어줄 것이다.


소프트웨어 아키텍처에 대한 책들은

이미 시중에 많이 출간되어있다.

 

하지만 한빛의 OREILLY 시리즈는

개발자들 사이에서는 근본으로 불리는 시리즈다.

 

그 중에서도 소프트웨어 아키텍처 The Basics의 1판인

Fundamentals of Software Architecture는

교보문고에서 평점 9.7점을 받은 아주 인기있는 책이다.

 

2판에서는 AI 시대에 발맞춰

AI를 옵션이 아닌 기본 전제로 가정하였다.

또한 다양한 아키텍처 스타일을 추가하여

개발자에게 다양한 선택권을 제공하였다.


이 책에서는 다양한 예시를 통해

아키텍처를 설명하고 있다.

 

예를 들어 음식 주문 시스템을 개발할 때

포장 손님에게는

음식 수령 시간과 매장 위치 정보를 제공해야 한다.

따라서 외부 지도 서비스를 통합해야 하는데

서드파티 시스템이 고장나면

메인 시스템에의 신뢰성도 떨어지게 되고

따라서 아키텍처 특성을 과도하게 명세하지 않아야

서비스의 쾌적함이 증가하게 된다.

 

이 예시에서는

아키텍트가 불필요한 취약성을 설계에 도입하는 것을

항상 경계헤야 한다는 이야기를 하고 있다.

 

혹시 프로덕트를 개발할때

이런 설계적인 요소들을 고민하고 있지 않았다면

이 책이 큰 도움이 될 수 있을 것이다.


 

혹시 비개발자인데 이 책이 흥미롭다면?

도전해볼 가치가 있다고 생각한다.

 

비개발자들에게 바이브코딩을 가르쳐보면

신선한 아이디어가 가득하다.

그리고 LLM을 활용한 MVP 개발도 하루면 해낸다.

하지만 늘 문제인게

디버깅과 기능 추가다.

 

디버깅은 에러 메시지를 복사해서

LLM에게 던져주는 행위를

무한 반복하는 방법으로 해결한다 하더라도

기능 추가는 복잡도가 훨씬 높다.

 

비개발자들은 단순히 원하는 기능을 AI에게 요청한다.

하지만 아까도 말했듯 요청이 상세하지 않다면

AI의 판단하에 랜덤으로 기능 구현이 이루어지고

기존 코드와의 호환성에 문제가 생기게 된다.

 

이때 아키텍처에 대한 이해가 있다면

좀 더 원활히 기능을 추가 할 수 있다.

 

아키텍처는 소프트웨어의 전체적인 설계도이기 때문에

머릿속에 설계도가 들어있다면,

AI에게 설계도를 보여준다면,

유저가 원하는대로 기능의 추가와 제거가 가능하며

당연히 랜덤요소도 줄어들게 된다.

 

이는 개발자에게도 해당한다.

설계도 없는 프로그램 구현은

언젠가 대참사를 불러일으킨다.


 

안그런 직업이 있겠냐마는

개발자는 항상 공부해야 한다.

 

부족한 부분을 채우면서

동시에 새로운 것들을 더해야 한다.

 

특히 급속히 발전하는 AI시대에 접어들어

새로운 것들을 더해나가는 행위는

선택이 아니라 의무가 되었다.

 

C언어가 등장했을 때

그것이 근본이 아니라며

변화를 거부한 사람들은 도태되었다.

 

나는 AI도 마찬가지라고 생각한다.

LLM이 짜주는 코드는 근본이 없다며 외면할게 아니라

LLM을 효율적인 도구로 받아들이고

새로운 기술로 더함과 동시에

부족했던 부분을 채워주는 도구로 사용하는 것이

올바른 방향이라고 생각한다.

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

 

책을 신청한 이유

지난 번 리뷰했던 <아키텍트 첫걸음> 책을 읽으면서 아키텍트라는 분야에 대해 관심이 생기고, 대 AI 시대에 나만의 차별점을 갖출 수 있으려면 아키텍처를 사고할 수 있는 힘을 길러야겠다는 생각이 들었습니다. 그러던 도중, 이번에 한빛미디어에서 나온 <소프트웨어 아키텍처 The Basics 2판> 책을 읽게 된다면 아키텍처에 대해 더 깊게 배울 수 있겠다는 생각에 신청하게 되었습니다.

목차

목차는 다음과 같이 구성되어 있습니다. 책의 목차가 매우 자세하게 되어있어, 중분류까지만 작성하겠습니다.

  • 서론
  • PART 01. 기초
    • 아키텍처적 사고
    • 모듈성
    • 아키텍처 특성의 정의
    • 아키텍처 특성의 식별
    • 아키텍처 특성의 측정과 거버넌스
    • 아키텍처 특성의 범위
    • 컴포넌트 기반 사고
  • PART 02. 아키텍처 스타일
    • 아키텍처 스타일의 기초
    • 계층형 아키텍처 스타일
    • 모듈형 모놀리스 아키텍처 스타일
    • 파이프라인 아키텍처 스타일
    • 마이크로커널 아키텍처 스타일
    • 서비스 기반 아키텍처 스타일
    • 이벤트 주도 아키텍처 스타일
    • 공간 기반 아키텍처 스타일
    • 오케스트레이션 주도 서비스 지향 아키텍처
    • 마이크로서비스 아키텍처
    • 적절한 아키텍처 스타일의 선택
    • 아키텍처 패턴
  • PART 03. 기법과 소프트 스킬
    • 아키텍처적 결정
    • 아키텍처 위험 분석
    • 아키텍처 도식화
    • 유능한 팀 만들기
    • 협상과 리더십 스킬
    • 아키텍처 교차점
    • 다시 살펴본 소프트웨어 아키텍처 법칙들
  • 토론용 질문 모음

책의 특징

다음은 책을 읽으면서 정리해 본 책의 특징입니다.

다양한 아키텍처 스타일을 설명하는 것에 그치지 않고, 쓰면 좋을 때와 쓰지 않아야 할 때를 모두 알려줍니다.

 

PART 02. 아키텍처 스타일에 정의된 아키텍처 스타일을 보면, 자그마치 9가지의 아키텍처 스타일에 대해 알려주고 있습니다.

그러나, 단순히 이 아키텍처 스타일은 어떤 개념이다 라는 것에 그치지 않고 쓰면 좋을 때와 쓰지 않아야 할 때를 모두 알려줍니다.

 

흔히 신기술을 발견한 사람들은 모든 상황에서 해당 기술을 적용하면 좋을 것 같다는 착각을 하기 쉬운데, 쓰면 좋을 때와 쓰지 않아야 할 때를 모두 알려줌으로써 이런 실수를 하지 않도록 미리 차단해 주는 것 같아 좋은 점으로 다가왔습니다. 더욱이, 예시와 용례를 함께 덧붙임으로써 이해를 도와주고 있습니다.

아키텍처에 관한 책 답게, 풍부한 그림이 있습니다.

아키텍처에 관한 책들을 보면 구조를 나타내는 것이다 보니 그림이 있어야 하지 않을까라는 생각을 하는데, 이 책은 방대한 양 (약 600p 이상)에 걸맞게 그림 또한 자주 등장하고 있습니다.

 

거의 한 두장 넘기다 보면 그림이 등장하곤 하는데, 이 그림들 덕분에 책의 설명을 읽으면서 모호하게 느껴지는 부분들에 대해 이해하는 데 도움이 되었습니다.

토론용 질문 모음

 

부록으로 있는 <토론용 질문 모음>에는 개인적으로 학습하기에도 좋고, 함께 일하는 동료들과 토론해 보기 적합한 질문들이 충실히 제공되어 있습니다. 현업에 계신 분들이라면 함께 일하는 동료들과 서로 생각해 보는 시간을 갖고, 혼자 독서하시는 분께서는 ChatGPT, Claude 등 AI와 함께 논의하며 더 깊게 학습하시는 데 큰 도움이 될 것이라고 생각합니다.

총평 / 추천 대상

본 책은 아키텍처에 대해 다양한 스타일을 알려주고, 풍부한 그림과 사용하기 적절한 시점에 대한 글이 작성되어 있습니다. 뿐만 아니라 아키텍처에 대해 깊은 고민을 할 수 있도록 부록으로 토론용 질문들이 구성되어 있습니다.

 

다만, 분량이 600p 이상이다보니 아키텍처가 무엇인지 관찰하는 단계에서는 부적합하며 어느 정도 실무를 함께 다져본 개발자 분들이 읽어보시기에 적절한 책일 듯합니다.

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

 

소프트웨어 아키텍처

"시스템 아키텍처"라는 말보다 훨씬 더 부담스럽고 머리아픈 문구가 아닐까?

 

 

아키텍처의 기대 역할

1. 아키텍처적 결정을 내린다.

2. 아키텍처를 지속적으로 분석한다

3. 최신 트렌드를 계쏙 따라간다

4. 결정 사항의 준수를 준수를 보장한다.

5. 다양한 기술을 이해한다.

6. 비즈니스 도메인을 숙지한다.

7. 대인 관계 스킬을 갖춘다

8. 정치를 파악하고 헤쳐 나간다.

여기서 정치는 협상능력을 의미한다.

 

책은 다양한 아키텍처에 대해 설명한다. 

1. 토폴로지

2. 스타일 세부사항

3. 데이터 토폴로지

4. 클라우드 고려 사항

5. 일반적인 위험

6. 거버넌스

7. 팀 토폴로지 고려 사항

8. 스타일 특성

9. 예시와 용례

 

일부 소스코드가 있긴 하지만, 그보다는 개념적인 접근에 훨씬 유용하다.

어떤 아키텍처를 선택하고 적용해야 하는지를 고민할 때 큰 도움이 될만한 내용이 포함되어 있는 것이다.

 

SW 개발자든 인프라 운영자든 보안담당자든, 기본적인 구조, 개념에 대한 이해도가 높으면 큰 도움이 될 때가 있다.

소프트웨어 아키텍처랑 전혀 상관없는 사람일지라도 찾아보고 이해할 수 있는 길잡이 역할로써 이 책은 그 기능을 한다.

 

Chapter 21은 진짜 흥미롭다. 당연한 얘기를 이렇게 풀어쓴다는 게 재밌지만, 결코 웃고 넘어갈 문제는 아니라는 사실!

아키텍처적 결정의 안티패턴들

1. 보신주의 안티패턴

- 아키텍트가 잘못된 선택을 할까 두려워 아키텍처적 결정을 회피하거나 미룰 때 발생

2. 사랑의 블랙홀 안티패턴

- 왜 아키텍트가 특정 결정을 내렸는지 몰라서 그 결정을 논의만 하고 최종적 결론이나 합의에 이르지 못할때 발생

3. 이메일 주도 아키텍처 안티패턴

- 사람들이 아키텍처적 결정 사항을 놓치거나 잊어버릴 때 발생

 

그 밖에 위험 분석, 도식화, 협상스킬, 마지막엔 토론용 질문 모음까지.

잘짜여진 각본처럼, 소프트웨어 아키텍처 전문가가 되기 위한 첫걸음 또는 비전문가지만 개념적 이해를 충분히 하고싶은 모든 개발자분들에게 추천하고 싶다.

- 이 리뷰는 IT 현업개발자가, 별도의 광고료 없이 한빛미디어의 책만 제공받아서 작성한 서평입니다. -

 

소프트웨어 기획 및 개발에 대한 여러 책들을 보면 구체적인 양식 및 사례를 설명하는 책들이 많습니다. 이 책은 왜 그러한 소프트웨어 구조화 원리가 여러개 등장하게 되었는지, 그리고 각각의 내용을 적용하는데 적합한 사례는 어떠한 경우인지에 대한 설명을 하는 책 입니다.

 

이처럼 물고기 어떻게 잡는지 설명하는 책으로, IT 서비스 기획 및 개발문서에 대하여 평소에 궁금하고 해답을 찾기 원하시는 분들에게 많은 도움이 되어 줄 것입니다.

 

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

 

 

“왜 이 구조여야 하는가”를 끝까지 묻는 책

소프트웨어는 한 번 만들고 끝나는 결과물이 아니다.

끊김 없이 지속되어야 하고, 수많은 세부 로직과 외부 시스템, 사람과 조직의 관계 속에서 살아 움직이는 거대한 생태계에 가깝다. 그런 점에서 아키텍처는 단순한 설계도를 넘어선다. 코드의 구조이자 팀의 협업 방식이며, 비즈니스의 의사결정이 기술로 번역된 결과다.

 

"소프트웨어 아키텍처 The Basics 2판”은 이 복합적인 세계를 “정답”이 아닌 “사고 방식”으로 풀어내는 책이다. 이 책이 반복해서 강조하는 메시지는 분명하다.   

 

소프트웨어 아키텍처의 모든 것은 트레이드오프다.

 

이 책에서 특히 인상 깊었던 부분은 트레이드오프에 대한 집요한 강조였다.

세상에는 이미 수많은 기술, 프레임워크, 언어, 아키텍처 스타일이 존재한다. 하지만 중요한 것은 무엇을 썼는가가 아니라 왜 그것을 선택했는가다.

 

솔직히 말하면, 경험이 거의 없는 상태에서 이 책을 읽었다면 다소 추상적으로 느껴졌을지도 모른다. 하지만 온프레미스 환경의 레거시 시스템, 모놀리식 아키텍처부터 클라우드 환경에서의 Well-Architected 설계까지 두루 경험한 입장에서 읽다 보니, 책 속 문장 하나하나가 실제 현장의 장면과 겹쳐 보였다.

 

“이건 맞다”, “이건 그래서 항상 문제였다”, “결국 여기로 돌아오게 된다” 이런 혼잣말을 하며 페이지를 넘기게 되는 책이다.

 

PART 01: 기초 – 아키텍처적 사고를 기르는 과정

초반부는 소프트웨어 아키텍처를 정의하는 데서 시작한다.
아키텍처와 설계의 차이, 그리고 단순한 기술 선택을 넘어선 아키텍처적 사고가 무엇인지를 설명한다. 특히 인상 깊었던 점은, 아키텍처를 기술의 문제가 아니라 비즈니스 동인과 제약 조건의 균형 문제로 다룬다는 것이다. 

 

기술적 너비를 갖되, 모든 것을 깊게 알 필요는 없다.

“좋은 구조”보다 “지금 상황에서 덜 나쁜 구조”를 찾는다

아키텍트는 코딩에서 완전히 손을 떼는 존재가 아니다.

 

이런 이야기들은 실무에서 역할의 경계를 고민해본 사람이라면 누구나 공감할 만하다.

 

이후 모듈성(Chapter 3), 아키텍처 특성(Chapter 4~7)을 다루는 흐름은 특히 좋았다. 성능, 확장성, 가용성, 보안 같은 키워드들이 막연한 미덕이 아니라, 서로 충돌하는 특성임을 명확히 드러낸다. 모든 것을 동시에 만족시키는 아키텍처는 존재하지 않으며, 결국 우선순위를 정하고 포기할 것을 선택해야 한다는 점을 끊임없이 상기시킨다.

 

PART 02: 아키텍처 스타일 – 유행이 아닌 맥락의 문제

이 책의 분량 대부분을 차지하는 PART 02는 다양한 아키텍처 스타일을 다룬다. 계층형 아키텍처, 모듈형 모놀리스, 이벤트 주도, 서비스 기반, 마이크로서비스까지 익숙한 이름들이 대거 등장하지만, 이 책은 결코 “마이크로서비스가 답이다” 같은 식으로 흐르지 않는다.

 

각 장에서 공통적으로 다루는 구조가 인상적이다.   

토폴로지, 데이터 구조, 클라우드 환경 고려 사항, 일반적인 위험, 거버넌스, 팀 토폴로지와의 관계

 

이를 통해 독자는 아키텍처가 코드 구조만의 문제가 아니라, 팀 구성과 운영 방식, 조직 문화까지 영향을 미친다는 사실을 자연스럽게 이해하게 된다. 특히 모놀리스 vs 분산 아키텍처를 다루는 부분에서는, 무조건적인 분산 전환이 얼마나 많은 복잡성을 가져오는지도 현실적으로 보여준다.

 

PART 03: 기법과 소프트 스킬 – 아키텍트는 혼자 일하지 않는다

개인적으로 가장 마음에 들었던 파트는 PART 03이다. 아키텍처 결정 기록(ADR), 위험 분석, 도식화 같은 실무 기법뿐 아니라 협업, 협상, 리더십을 아키텍트의 핵심 역량으로 다룬다는 점이 인상 깊었다.

아키텍트는 모든 걸 결정하는 사람이 아니라, 사람과 사람 사이에서 맥락을 조율하고, 기술과 비즈니스 사이를 번역하는 역할에 가깝다. 이 책은 그 사실을 숨기지 않는다.

 

“안다는 것은 설명할 수 있다는 것”

무언가를 진짜로 안다는 것은, 그것을 다른 사람에게 설명할 수 있을 때다. 소프트웨어 역시 하나의 function이나 특정 기술로만 존재하지 않는다.  이 책은 소프트웨어 아키텍처의 A부터 Z까지를 다루지만, 일부러 깊게 파고들지 않는다. 대신 큰 그림을 그리고, 사고의 지도를 제공한다.

 

실무에 바로 적용하기엔 다소 막막할 수도 있다. 하지만 이 책을 읽고 나면, 머릿속에 있던 아키텍처의 미니맵에서 안개가 조금씩 걷히는 느낌을 받게 된다. 그리고 다음 선택의 순간에서, “왜 이걸 선택했는가”를 이전보다 분명하게 설명할 수 있게 된다.

 

“소프트웨어 아키텍처 The Basics 2판”은 아키텍트가 되고 싶은 사람보다는, 이미 고민하고 있는 사람에게 더 잘 맞는 책이다. 정답을 주기보다는 질문을 던지고, 기술보다 맥락을 이야기하며, 유행보다 이유를 묻는다.

 

경험이 쌓일수록 다시 펼쳐보게 될 책.
 그리고 “왜”를 잊지 않게 만들어주는 책이다.

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

《소프트웨어 아키텍처 The Basics(2판)》 는 개발자가 아키텍트로 성장하는 데 필요한 개념과 실무 감각을 균형 있게 다룬, 구조가 잘 잡힌 입문·실무서라는 점이 가장 큰 장점이다. 특히 최신 클라우드·생성형 AI 환경까지 반영해 “요즘 아키텍처”를 고민하는 엔지니어에게 실질적인 기준점을 제공한다.
책이 다루는 핵심 내용
이 책은 『소프트웨어 아키텍처 101』 개정판으로, 아키텍처 특성, 스타일, 컴포넌트 설계, 도식화, 진화적 아키텍처까지 아키텍처 전 영역을 한 권에 담는다.

계층형, 마이크로서비스, 모듈형 모놀리스, 마이크로커널 등 주요 아키텍처 스타일을 실제 선택 기준과 함께 비교해주어, “언제 무엇을 쓰느냐”를 고민할 때 실질적인 가이드가 된다.

장점: 실무 지침서로서의 강점
추상적인 이론보다 “특성 식별 → 스타일 선택 → 컴포넌트 분할 → 거버넌스·팀 구조 고려”처럼 의사결정 흐름을 보여줘서, 현업에서 바로 적용 가능한 프레임을 제공한다.

생성형 AI, 클라우드 배포, 데이터·팀 토폴로지, 거버넌스 등을 새로 반영해, 1판보다 훨씬 현실적인 설계 관점을 제시한다.

인상적인 지점: ‘스펙트럼’과 제3법칙
2판에서 새로 추가된 소프트웨어 아키텍처 제3법칙은 대부분의 설계 결정이 이분법이 아니라 스펙트럼 위의 연속선이라는 점을 강조한다.

이 스펙트럼 관점 덕분에 “마이크로서비스 vs 모놀리스”처럼 흑백 논쟁에 빠지지 않고, 비즈니스와 팀 상황에 맞춰 적절한 지점을 찾는 사고방식을 훈련하게 해준다.

아쉬운 점과 읽기 난이도
클라우드·데이터·팀 토폴로지·거버넌스까지 다루다 보니, 실무 경험이 적은 주니어에게는 처음 읽을 때 다소 정보량이 많게 느껴질 수 있다.

반대로 일정 이상 경험이 있는 개발자나 리드 개발자라면, “이미 알고 있던 개념을 아키텍처 언어로 재구성”해주는 구조라서 사고를 정리하는 데 큰 도움을 받게 된다.

누구에게 추천할지
마이크로서비스나 모듈형 모놀리스 전환을 고민하는 팀 리드, 혹은 중급 이상 개발자 중 “아키텍트 커리어를 고려하는 사람”에게 특히 유용하다.

특정 기술 스택 튜토리얼이 아니라, 기술 선택을 넘어 비즈니스·조직·운영까지 포괄하는 아키텍처 사고법을 체계적으로 정리하고 싶은 독자에게 권할 만한 책이다

리뷰쓰기

닫기
* 상품명 :
소프트웨어 아키텍처 The Basics(2판)
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
소프트웨어 아키텍처 The Basics(2판)
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
소프트웨어 아키텍처 The Basics(2판)
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 적립금 500P를 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?