- Robert C. Martin (SOLID - 객체지향 설계 원칙의 창시자)라는 SW 엔지니어가 제시한 개념
- 소프트웨어를 관심사에 따라 계층으로 분리해서 개발하는걸 제안
- 계층으로 나누어 개발하는 아키텍쳐
- 단, 계층으로 나눈 후 의존성 방향은 외부에서 내부로만 (안에서는 바깥계층을 모르게!)
- Bob 삼촌 블로그 https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
- Entities
- 엔티티는 비즈니스의 핵심 개념을 나타내는 객체
- 예) User, Product 클래스
- Use Cases
- 유스케이스는 사용자가 시스템을 어떻게 사용할지를 정의하는 애플리케이션의 특정 기능
- 예) 회원가입, 상품등록
- Interface Adapters
- Use Cases 와 Frameworks and Drivers 사이의 중간 연결 역할
- 예) Controller, Presenter, ViewModel
- Frameworks and Drivers
- 시스템 핵심 업무와는 상관없는 계층
- 예) Web, Database, UI, 외부 API 등