Learning
토픽 148 / 192·시스템 설계 및 아키텍처 패턴

헥사고날 아키텍처 (Hexagonal Architecture)

헥사고날 아키텍처 (Hexagonal Architecture)

Alistair Cockburn이 제안한 포트(인터페이스)와 어댑터(구현)를 통해 핵심 도메인을 외부 시스템으로부터 격리하는 아키텍처 패턴

특징: 테스트 용이(↑), 유연성(↑), 기술 독립(↑), 초기 복잡도(↑)

구성요소

  • Domain(Core): 비즈니스 로직, 엔터티, 기술 독립
  • Inbound Port(Driving): 외부→애플리케이션 요청 (Use Case 인터페이스)
  • Outbound Port(Driven): 애플리케이션→외부 요청 (Repository 인터페이스)
  • Inbound Adapter: REST Controller, CLI, 이벤트 리스너
  • Outbound Adapter: JPA Repository, HTTP Client, Message Publisher

동작 흐름: 외부 → Inbound Adapter → Inbound Port → Domain → Outbound Port → Outbound Adapter → 외부

적용사례: DDD 프로젝트, 마이크로서비스, 장기 유지보수 시스템

비교: Hexagonal(포트어댑터/수평) vs Clean(동심원/유스케이스) vs Onion(양파/도메인) vs Layered(계층/수직)

연관: 클린 아키텍처, DDD, 의존성 역전, SOLID