허브
그렇다면 도메인을 다른 도메인과 분리해 순수하게 유지하려면 어떻게 해야 할까? 인터페이스를 사용해 모든 도메인 로직을 감쌀 수 있다. 이런 접근 방식을 ‘포트와 어댑터’라고 한다. 이 접근 방식은 앨리스테어 콕번이 제안한 것으로4, 객체 지향 패러다임에 기반하고 있지만 함수형 프로그래밍에서도 매우 잘 작동한다.
Note ≡ | 포트와 어댑터 패턴
포트와 어댑터 패턴은 육각형 아키텍처(Hexagonal Architecture)라고도 하며, 유연하고 유지보수가 쉽고 변화에 적응할 수 있는 소프트웨어 시스템을 만드는 것을 목표로 하는 소프트웨어 아키텍처 패턴이다. 이 패턴의 주요 목표는 시스템의 핵심 비즈니스 로직과 시스템이 의존하는 데이터베이스, 웹 서비스 및 사용자 인터페이스 같은 외부 의존관계를 분리하는 것이다.
이 아이디어는 핵심 로직과 그에 대한 외부 의존관계 사이에 추상화 계층을 도입하는 것이다. 이 외부 의존관계가 포트와 어댑터라고 알려져 있다. 포트는 핵심 로직이 외부 의존관계와 통신할 때 사용할 인터페이스를 정의하고, 어댑터는 이러한 인터페이스를 구현하면서 외부 의존관계와의 실제 통신을 제공한다.
전반적으로 포트와 어댑터 패턴은 특히 외부 의존관계가 많고 자주 변경될 수 있는 복잡한 도메인에서 유지보수가 가능하고 변경하기 쉬운 소프트웨어 시스템을 만들 때 사용할 수 있는 강력한 도구다.