📖 [15장] 아키텍처란?
📘 클린 아키텍처 북스터디 정리입니다
📚 도서: 로버트 C. 마틴 《Clean Architecture》
🧑💻 목적: 올바른 설계에 대한 감각과 습관을 익히기 위해
🗓️ 진행 기간: 2025년 7월 ~ 매주 2장
✅ 핵심 요약 (Key Takeaways)
이 장의 핵심 문장은?
좋은 아키텍트는 결정되지 않은 사항의 수를 최대화한다
저자가 전달하고자 하는 메세지 요약
- 아키텍처의 주된 목적은 시스템의 생명주기를 지원하고, 생산성을 높이는 것
- 좋은 아키텍처는 시스템이 개발·배포·운영·유지보수되는 전 과정에서 유연하고 효율적이어햐 함
- 핵심 정책과 세부 구현(입출력, DB 등)을 명확히 분리해야 함
💡 내용 정리
서론:아키텍처란 무엇인가?
- 소프트웨어 시스템의 아키텍처: 시스템을 구축했던 사람들이 만들어낸 시스템의 형태
- 아키텍처의 주된 목적: 시스템의 생명주기를 지원하는 것
- 아키텍처의 궁극적인 목적:
- 시스템 수명과 관련된 비용을 최소화하고- 개발자의 생산성을 극대화하는 것
개발
- 시스템 아키텍처는 개발팀들이 시스템을 쉽게 개발할 수 있도록 뒷받침해야 함
- 팀 구조에 따라 아키텍처의 설계는 달라질 수 있음
배포
- 소프트웨어 아키텍처는 시스템을 단 한번에 쉽게 배포할 수 있도록 만드는 데 목표를 두어야 함
운영
- 좋은 소프트웨어 아키텍처는 시스템을 운영하는 데 필요한 요구를 알려줌
→ 시스템 아키텍처가 개발자에게 시스템의 운영 방식을 명확하게 전달
유지보수
- 소프트웨어 시스템에서 비용이 가장 많이 드는 단계
- 유지보수의 가장 큰 비용
- 탐사 비용: 어디를 고쳐야 할지, 어떤 전략을 써야 할지를 파악하는 데 드는 비용
- 위험 부담: 잘못된 변경으로 발생할 수 있는 오류와 그 여파
- 탐사 비용: 기존 소프트웨어에 새로운 기능을 추가하거나 결함을 수정할 때, 소프트웨어의 어느 부분을 고칠 지, 어떤 전략을 쓰는 게 최적일지를 결정할 때 드는 비용
선택 사항 열어두기
좋은 아키텍트는 결정되지 않은 사항의 수를 최대화한다
- 소프트웨어의 두 가지 가치 중 구조적 가치가 더 중요함
- 소프트웨어를 부드럽게 유지하는 방법은 선택 사항을 가능한 한 많이, 오랫동안 열어두는 것
소프트웨어 시스템의 구성요소
- 정책(policy): 모든 업무 규칙과 업무 절차를 구체화
- 세부사항(details):
- 사람, 외부 시스템, 프로그래머가 정책과 소통할 때 필요한 요소
- 예시: 입출력 장치, DB, 웹 시스템, 서버, 프레임 워크, 통신 프로토콜 등
아키텍트의 목표
1. 시스템에서 정책을 가장 핵심 요소로 식별
2. 세부사항은 정책에 무관하게 만들 수 있는 형태의 시스템 구축
결론
- 좋은 아키텍처는 핵심 로직(정책)과 세부 구현(입출력, 프레임워크 등)을 명확히 분리함
- 이렇게 하면 시스템은 변경에 유연하고, 개발·운영·유지보수가 쉬워짐