이번 챕터에서는 두 가지 아키텍처 스타일 중 두번째 육각형 아키텍처(헥사고날 아키텍처)에 대해 이야기 한다.
1. 육각형 아키텍처(헥사고날 아키텍처)
육각형 아키텍처는 애플리케이션 코어가 각 어댑터와 상호 작용하기 위해 특정 포트를 제공한다.
육각형 안에는 도메인 엔티티와 이와 상호 작용하는 유스케이스가 있다.
육각형 외부로 향하는 의존성이 없기 때문에 마틴이 클린 아키텍처에서 제시한 의존성 규칙이 그대로 적용된다.
대신 모든 의존성은 코어로 향한다.
육각형 바깥에는 애플리케이션과 상호 작용하는 다양한 어댑터들이 있다.
왼쪽에 있는 어댑터들은 애플리케이션 코어를 호출하기 때문에 애플리케이션을 주도하는 어댑터(driving adapter)들이다.
반면 오른쪽에 있는 어댑터들은 애플리케이션 코어에 의해 호출되기 때문에 애플리케이션에 의해 주도되는 어댑터(driven adapter)들이다.
애플리케이션 코어와 어댑터들 간의 통신이 가능하려면 애플리케이션 코어가 각각의 포트를 제공해야 한다.
주도하는 어댑터(driving adapter)에게는 포트가 코어에 있는 유스케이스 클래스 중 하나에 의해 구현되고 어댑터에 의해 호출되는 인터페이스가 될 것이고,
주도되는 어댑터(driven adapter)에게는 포트가 어댑터에 의해 구현되고 코어에 의해 호출되는 인터페이스가 될 것이다.
따라서 가장 바깥쪽에 있는 계층은 애플리케이션과 다른 시스템 간의 번역을 담당하는 어댑터로 구성, 포트와 유스케이스 구현체를 결합해 애플리케이션 계층으로 구성, 마지막 계층에는 도메인 엔티티로 구성을 나누어 볼 수 있다.
2. 결론
클린 아키텍처, 육각형 아키텍처는,
의존성을 역전시켜 도메인 코드가 바깥쪽 코드에 의존하지 않게 함으로써 영속성과 UI에 특화된 모든 문제로부터 도메인 로직의 결합을 제거하고 코드를 변경할 이유의 수를 줄일 수 있어 유지보수성이 좋아진다.
또한 도메인 코드는 비즈니스 문제에 맞게 자유롭게 모델링될 수 있고, 영속성 코드와 UI 코드도 각 문제에 맞게 자유롭게 모델링될 수 있다.
Reference.
만들면서 배우는 클린 아키텍처
'Architecture' 카테고리의 다른 글
[Architecture] 3. 클린 아키텍처(Clean Architecture) (0) | 2024.04.15 |
---|---|
[Architecture] 2. 계층형 아키텍처의 대안 (0) | 2024.04.11 |
[Architecture] 1. 계층형 아키텍처의 문제 (0) | 2024.04.09 |