..
Hexagonal Architecture: 유연하고 테스트 가능한 도메인 중심 설계
1. Hexagonal Architecture (Ports and Adapters) 란?
헥사고날 아키텍처는 애플리케이션의 핵심 비즈니스 로직(내부)을 외부 시스템(UI, DB, 외부 API 등)으로부터 완전히 분리하여, 핵심 로직이 기술적 환경에 구애받지 않게 설계하는 아키텍처 패턴입니다.
2. 계층별 역할과 책임
- 내부(Inside) - 도메인 계층: 애플리케이션의 본질적인 비즈니스 규칙이 담긴 곳입니다. 외부 계층에 전혀 의존하지 않으며 독립적으로 존재합니다.
- 외부(Outside) - 애플리케이션 계층: 사용자로부터 요청을 받아 도메인 로직을 실행(Orchestration)합니다. 컨트롤러, UI 등이 여기에 속합니다.
- 외부(Outside) - 인프라 계층: 실제로 데이터를 저장하거나 외부 시스템과 통신하는 기술적 세부사항(DB 설정, Repository 구현체 등)이 위치합니다.
3. 도입 효과 (Benefit)
- 높은 응답성: 도메인 로직이 분리되어 있어, DB를 MySQL에서 MongoDB로 바꾸더라도 핵심 비즈니스 로직은 수정할 필요가 없습니다.
- 쉬운 테스트: 외부 연동 없이도 핵심 도메인 로직만 따로 떼어 순수하게 단위 테스트를 진행할 수 있습니다.
- 복잡성 제어: 기술적 문제와 비즈니스 요구사항이 섞이지 않아 코드를 이해하고 유지보수하기 훨씬 수월해집니다.
헥사고날 아키텍처는 “핵심(비즈니스)은 변하지 않게 보호하고, 외부(기술)는 언제든 갈아 끼울 수 있게 만든 구조”입니다.