•
로버트 마틴의 클린 아키텍처의 구성요소는 다음과 같다.
1.
Entities
•
시스템의 비즈니스 로직과 객체가 정의된다.
•
시스템의 핵심으로 외부의 영향을 받지 않아야 하며 가장 변하지 않아야 하는 영역이다.
2.
Use cases
•
비즈니스 흐름과 엔티티 간의 상호작용을 관리한다.
•
사용자의 요청을 처리하고 그에 따라 엔터티를 조작한다.
3.
Interface adapters
•
외부 인터페이스와 Use Cases를 연결하는 역할을 한다.
•
외부의 요청을 내부 형식으로 변환하거나 내부의 데이터를 외부 형식으로 변환한다.
4.
Frameworks & Drivers
•
시스템의 외부와 상호 작용한다.
•
주로 사용자와 상호 작용하거나 데이터베이스나 외부 서비스 등과 통신하는 역할을 담당한다.
•
클린 아키텍처는 위와 같은 기준으로 시스템의 경계를 나누고, 이 경계의 방향이 항상 단방향이 될 것을 강조한다.
•
더불어 의존 방향이 항상 바깥 원에서 안쪽 원을 향하도록 강조한다. 내부의 원이 외부의 원에 관해 알고 있어서는 안된다는 말이다. 그래서 각 영역별 관심사 분리라는 목적을 달성한다.
•
클린 아키텍처는 개념적인 해결책만 제시한다. 이를 위한 구현은 따로 존재하는데, 대표적으로 헥사고날과 양파를 꼽을 수 있다.