최근 깃허브의 다른 프로젝트를 보면서 코드 서리 중인데 헥사고날 아키텍처로 되어있는 프로젝트는 코드 이해하기가 어려워서 정리 글 링크만 올림...
기존의 레이어드 아키텍쳐
헥사고날 아키텍쳐
어댑터 (Adapter): 외부 시스템과의 통신을 처리하는 부분입니다. 이는 외부 시스템과의 상호작용을 포함하며, 외부 시스템과의 통신을 추상화하여 나중에 변경이 필요한 경우에도 쉽게 대응할 수 있도록 합니다.
포트 (Port): 어댑터가 시스템과 상호작용하는 방식을 정의하는 인터페이스입니다. 이는 시스템의 외부로 노출되는 접점으로, 외부 시스템과의 통신 방법을 추상화합니다.
포트와 어댑터의 구분: 포트는 시스템 내부의 인터페이스로, 어댑터는 이 포트를 구현하여 외부와의 상호작용을 담당합니다. 이를 통해 시스템 내부 로직은 인터페이스에 의존하며, 외부와의 실제 상호작용은 어댑터에서 처리됩니다.
애플리케이션 (Application) 계층: 비즈니스 로직을 처리하는 부분으로, 포트와 어댑터 사이에서 중재 역할을 수행합니다. 애플리케이션 계층은 외부 시스템과 도메인 계층 사이의 연결 역할을 하며, 도메인 로직의 실행을 조정합니다.
도메인 (Domain) 계층: 핵심 비즈니스 로직과 데이터를 포함하는 부분입니다. 시스템의 핵심 기능을 정의하고, 비즈니스 규칙을 구현합니다.
포트와 어댑터의 구분 항목을 보면 어댑터가 외부와의 상호작용을 담당한다고 했다.
레이어드 아키텍처와 비교하면 컨트롤러가 어댑터 계층에 해당할 것 같다.
애플리케이션 계층이 서비스계층과 비슷할 거 같은데 그렇다면 포트 계층은 어떤 계층이 분리된건지 확인해봐야겠다. 주말에~