로버트 C. 마틴의 『클린 아키텍처 — 소프트웨어 구조와 설계의 원칙』을 읽으며 장 단위로 정리합니다. 클린 코드가 문장 수준, 리팩터링이 변형 수준, TDD가 작업 리듬, 오브젝트가 객체 설계였다면 이 책은 그 한 층 위 — 시스템 수준입니다. 클래스와 컴포넌트를 어떤 선으로 갈라놓아야, 프레임워크와 데이터베이스와 웹이 바뀌어도 업무 규칙이 흔들리지 않는가.
이 책이 처음부터 끝까지 붙들고 있는 주장은 하나입니다.
- 아키텍처의 목표는 시스템을 만드는 데 드는 인력을 최소로 유지하는 것이다. 기능이 아니라 유지 비용이 설계의 성패를 가른다.
- 좋은 아키텍처는 결정을 최대한 미룰 수 있게 해준다. 데이터베이스·웹·프레임워크는 업무 규칙에 꽂았다 뺐다 하는 세부사항(플러그인)일 뿐, 그 선택을 빨리 확정할수록 손해다.
- 그 모든 것을 가능케 하는 유일한 도구는 경계선이다. 어디에 선을 긋고 무엇을 어느 쪽에 두느냐 — 이 책은 결국 선긋기에 관한 책이다.
패러다임(3부)에서 SOLID 원칙(설계·컴포넌트)을 거쳐 아키텍처(5부)와 세부사항(6부)으로 내려가는 동안, 노트에서는 원칙이 코드로 구체화되는 순간을 스텝 플레이어의 diff로 기록합니다.
