더북(TheBook)

어댑터는 비즈니스 로직 주변을 감싸고 있습니다. 포트처럼 어댑터도 인바운드/아웃바운드 두 종류입니다. 인바운드 어댑터는 외부에서 들어온 요청을 인바운드 포트를 호출해서 처리합니다(예: REST 끝점, 웹 페이지가 구현된 스프링 MVC 컨트롤러, 메시지를 구독하는 메시지 브로커 클라이언트). 동일한 인바운드 포트를 여러 인바운드 어댑터가 호출할 수도 있습니다.

아웃바운드 어댑터는 비즈니스 로직에서 들어온 요청을 외부 애플리케이션/서비스를 호출해서 처리합니다(예: DB 작업이 구현된 데이터 접근 객체(DAO) 클래스, 원격 서비스를 호출하는 프록시(proxy) 클래스). 아웃바운드 어댑터는 이벤트를 발행하기도 합니다.

육각형 아키텍처 스타일의 가장 큰 장점은 비즈니스 로직에 있던 표현/데이터 접근 로직이 어댑터와 분리되었기 때문에 비즈니스 로직이 표현/데이터 접근 로직 어디에도 의존하지 않는다는 점입니다.

이렇게 분리를 하니 비즈니스 로직만 따로 테스트하기도 쉽고, 현대 애플리케이션 아키텍처를 좀 더 정확하게 반영할 수 있습니다. 제각기 특정한 API나 UI가 구현된 인바운드 어댑터가 비즈니스 로직을 호출하고, 비즈니스 로직은 다양한 외부 시스템을 호출하는 아웃바운드 어댑터를 호출하는 구조죠. 육각형 아키텍처는 마이크로서비스 아키텍처를 이루는 각 서비스 아키텍처를 기술하는 가장 좋은 방법입니다.

계층화/육각형 아키텍처 모두 아키텍처 스타일입니다. 둘 다 3계층 아키텍처 형태로 논리 뷰를 구성하고, 아키텍처 구성 요소를 정의하며 그들 간 관계에 제약 조건을 두는 것은 같습니다. 그럼 마이크로서비스 아키텍처를 구현 뷰를 구성하는 아키텍처 스타일로 정의해 봅시다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.