본문 바로가기
프로그래밍언어/프로그래밍 지식(programming knowledge)

ports-and-adapter architecture

by 바코94 2022. 4. 10.

프로그램의 아키텍쳐 중 ports-and-adapter architecture 을 알아보자. 
"포트와 어댑터 아키텍처"라는 용어는 알리스테어 콕번이 만든 용어이다.

hexagonal architecture(출처: https://alistair.cockburn.us/hexagonal-architecture/)

어플리케이션과 어댑터 사이에 경계를 두고 육각형 모양의 선이 있어서 hexagonal 아키텍쳐라 불린다. 육각형에는 큰 의미는 없다.

육각형 안에는 도메인 엔티티와 유스케이스가 있다. 육각형에서 외부로 향하는 의존성이 없기 때문에 "클린 아키텍쳐" 에서 제시하는 의존성 규칙이 그대로 적용된다는 점이 있다. 즉, 모든 의존성은 코어를 향한다.

육각형 바깥에는어플리케이션과 상호작용하는 다양한 어댑터들이 존재한다. 웹 브라우저나 데이터베이스 등과 상호작용하는 어댑터들이 여기에 위치한다.

어플리케이션 코어(육각형 내부)와 어댑터 간의 통신이 가능하도록 어플리케이션 코어가 각각의 포트를 제공하게 된다.
어댑터는 어플리케이션을 사용하는 것과 어플리케이션에 의해 사용되어 지는 것으로 나뉜다.
어플리케이션을 사용하는 것을 어댑터는 어플리케이션 코어를 호출하게 된다. 예를 들면, 웹 브라우저와 상호작용 어댑터는 포트를 통해 어플리케이션 코어를 호출하게 된다.
데이터베이스와 상호작용하는 어댑터 등은 어플리케이션에 의해 사용되어 지게 된다.
이런한 개념으로 인하여 "ports-and-adapter" 아키텍쳐라고 한다.