우당탕탕

[개발서적] 클린 아키텍처(Clean Architecture) 핵심 요약 및 리뷰 본문

여러내용들/IT서적 요약

[개발서적] 클린 아키텍처(Clean Architecture) 핵심 요약 및 리뷰

모찌모찝 2025. 8. 4. 08:34
클린 아키텍처(Clean Architecture) 핵심 요약 및 리뷰 - 시스템 구조, 책 하나로 끝낸다

안녕하세요!
오늘은 소프트웨어 설계와 구조의 정석, 『클린 아키텍처(Clean Architecture)』 – 로버트 C. 마틴 책을 한눈에 보기 쉽게 챕터별 리뷰 & 요약으로 작성해보려고 합니다. 
“코드는 잘 짜는데, 왜 점점 개발이 어려워질까?” 실제 현장 개발자에게 진짜 필요한 아키텍처 원칙이 궁금하다면 꼭 읽어봐야 할 책입니다.

 

📚 목차 및 핵심요약

1. 서문 – 소프트웨어 아키텍처가 왜 중요한가

• “나쁜 구조는 개발을 더디게 한다”
• 소프트웨어 설계는 코드 품질, 생산성, 유연성의 기초
• 아키텍처를 무시하면 유지보수 지옥 도래!

2. 프로그래밍의 본질 & 소프트웨어 설계의 핵심 원칙

• SW 구조는 ‘변화를 쉽게 수용할 수 있어야 한다’
결합도(Dependency), 응집도(Cohesion), SOLID 원칙 강조
“좋은 소프트웨어는 요구사항이 바뀌어도 쉽게 적응 가능해야 한다”

3.  프로그래밍 패러다임 – 절차적/객체지향/함수형

• 각 패러다임별 핵심 가치와 구조적 장단점 설명
“패러다임보다 더 중요한 건, 아키텍처적 독립성(Immutability)”

4. 소프트웨어 설계의 5가지 구조 원칙 (SOLID)

S: 단일 책임 원칙 (Single Responsibility Principle)
O: 개방폐쇄 원칙 (Open/Closed Principle)
L: 리스코프 치환 원칙 (Liskov Substitution Principle)
I: 인터페이스 분리 원칙 (Interface Segregation Principle)
D: 의존성 역전 원칙 (Dependency Inversion Principle)
• ⭐️ 아키텍처 설계는 SOLID 원칙 기반 위에 세운다

5. 경계(BOUNDARIES)와 계층(LAYERS)

• 시스템은 반드시 “계층(층)” 구조를 가져야 한다
엔티티(Entity)-유즈케이스(Use Case)-인터페이스(Interface)3 계층 모델 강조
• 외부 시스템(데이터, UI, 프레임워크)은 교체 가능성이 높으니 내부 핵심 로직과 분리 필요

6. 아키텍처 패턴 – 클린 아키텍처, 헥사고날, 온리언, 계란프라이

• 여러 설계 패턴의 공통점:

    -> “비즈니스 로직(내부) ↔ 프레임워크·DB·UI(외부)” 분리
• 클린 아키텍처:
    -> 내부 원(엔티티, 유즈케이스)은 결코 외부 원(인프라, UI, DB)에 의존하면 안 된다
    -> 중심일수록 더 변경이 어렵고, 가치가 크다

7. 주입(Dependency Injection) vs 소유(Ownership)

“의존성 방향은 항상 안에서 밖으로, 프레임워크를 소유하지 않고 사용만 해라”
• DIP(의존성 역전)은 가장 중요한 구조적 원칙
• 확장/테스트도 이런 구조에서 강한 힘을 발휘

8. 프레임워크, UI, DB를 로직에서 분리하라

• 프레임워크와 DB는 ‘바꿀 수 있는 도구’로 취급해야 함
“비즈니스 규칙은 프레임워크, UI, DB에 종속돼선 안 된다”

9. 경계 넘어 데이터 전달 – DTO, Boundary, Gateways

• 데이터 전달 객체(VO/DTO), 인터페이스 어댑터 등 아키텍처 계층 간 변환 책임 분리
• 각 계층별 데이터를 변환, 필요한 정보만 전달

10. 실제 프로젝트의 클린 아키텍처 적용 사례

• 실제 대형 프로젝트에서 아키텍처가 무너진 이유와 교훈
• “아키텍처는 항상 변화한다, 핵심은 의존성 방향을 잘 지키는 것”

클린 아키텍처

📝 한 문장 요약

“클린 아키텍처란, 비즈니스 로직(중심)이 UI/DB/프레임워크에 결코 종속되지 않는 탄탄하고 변화에 강한 구조를 만드는 법이다.”

읽으면서 느낀 점

• 레이어를 나누는 게 목적이 아니라, “내부 규칙이 가장 귀중하다는 인식이 깔려 있어야 한다”
• 테이블 구조에 끌려가지 말고, 본질(비즈니스 규칙)에 집중할 것
“프레임워크 정할 때 시간 낭비 말고, 아키텍처 핵심부터 그려볼 것”

Reference

- Uncle Bob의 Clean Architecture 블로그 - https://blog.cleancoder.com

 

Comments