Hexagonal Architecture

hi·2023년 8월 2일
0

아키텍처

목록 보기
6/7
post-thumbnail

Hexagonal Architecture - 헥사고날(육각형) 아키텍처

각 계층에서 하던 일들을 내부와 외부라는 개념으로 나누어 각각에 맞는 별도의 인터페이스를 정의 - 어댑터와 포트


내부의 로직은 외부을 통해서만 접근 가능

  • 모든 외부 시스템과의 직접적인 상호작용은 "어댑터"의 역할
  • 각 서비스에서 비즈니스 로직에 맞게 정의된 인터페이스는 포트
  • 즉, 외부 서비스와의 상호작용 (어댑터)은 비즈니스 로직과의 작업을 정의한 인터페이스 (포트)랑만 서로 통신

모든 비즈니스 로직은 외부 -> 내부 / 내부 -> 외부 방향으로만 호출

  • 인바운드 어댑터 -> 인바운드 포트 -> 비즈니스 로직
  • 비즈니스 로직 -> 아웃바운드 포트 -> 아웃바운드 어댑터



Adapter와 Port

Adapter: 서비스의 입장에서 서비스가 사용하는 외부 시스템과의 직접적인 구현 및 상호작용을 처리

예시

  • 외부 시스템 (UI) 으로부터 들어온 Request가 가장 처음 만나는 Controller는 인바운드 어댑터
  • 메세지 브로커 (Kafka)로부터 Consume 하는 동작을 처리하는 로직 핸들러는 인바운드 어댑터
  • DB에 직접적으로 접근하여 다양한 작업 (CRUD)을 처리하기 위한 DAO는 아웃바운드 어댑터

Port: 비즈니스 로직 입장에서 어댑터와 통신하기 위한 동작을 정의한 인터페이스

예시

  • Controller로부터 들어온 요청을 기반으로 특정 비즈니스 로직을 수행하는 동작을 정의한 인바운드 포트
  • Consume한 메세지를 처리하기 위한 비즈니스 로직의 동작을 정의한 인바운드 포트
  • 비즈니스 로직에서 DB 접근을 위해 정의한 Repository 인터페이스는 아웃바운드 포트

어댑터를 통해 외부 서비스와의 의존성을 분리하고 포트를 통해 내부 비즈니스 로직과 인터페이스를 분리.

0개의 댓글