육각형 아키텍처 스타일
육각형 아키텍처는 논리 뷰를 비즈니스 로직 중심으로 구성하는 계층화 아키텍처 스타일의 대안입니다(그림 2-2). 애플리케이션에 표현 계층 대신 비즈니스 로직을 호출하여 외부에서 들어온 요청을 처리하는 인바운드 어댑터(들)와 영속화 계층 대신 비즈니스 로직에 의해 호출되고 외부 애플리케이션을 호출하는 아웃바운드 어댑터(들)를 둡니다. 비즈니스 로직이 어댑터에 전혀 의존하지 않는다는 것이 이 아키텍처의 가장 중요한 특장점입니다. 외려 어댑터가 비즈니스 로직에 의존하죠.
비즈니스 로직에는 하나 이상의 포트가 있습니다. 포트는 비즈니스 로직이 자신의 외부 세계와 상호 작용하는 방법이 정의된 작업(operation, 오퍼레이션)입니다. 가령 자바라면 인터페이스가 포트겠죠. 포트 종류는 인바운드/아웃바운드 두 가지입니다. 인바운드 포트는 비즈니스 로직이 표출된 API로서, 외부 애플리케이션은 이 API를 통해 비즈니스 로직을 호출합니다(예: 서비스의 퍼블릭(public, 공개) 메서드가 정의된 서비스 인터페이스). 아웃바운드 포트는 비즈니스 로직이 외부 시스템을 호출하는 방법에 관한 것입니다(예: 데이터 접근 작업이 정의된 리포지터리 인터페이스).
▲ 그림 2-2 육각형 아키텍처 예시. 비즈니스 로직 및 외부 시스템과 통신하는 하나 이상의 어댑터로 구성되어 있다. 비즈니스 로직은 하나 이상의 포트를 지니며, 인바운드 어댑터는 외부 시스템의 요청을 처리하고 인바운드 포트를 호출한다. 아웃바운드 어댑터는 아웃바운드 포트를 통해 외부 시스템을 호출한다