항해99 26일차 개발일지

홍당무·2022년 12월 19일
0

소프트웨어 아키텍쳐

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

정의

- 사전적 의미로는 "육각형 건축물"을 뜻한다.

- 레이어 간의 원하지 않는 종속성이나 비즈니스 로직으로 인한 사용자 인터페이스 코드의 오염과 같은 객체 지향 소프트웨어 설계의 알려진 구조적 함정을 피하기 위해 Alistair Cockburn에 의해 발명

- 포트 및 어댑터 아키텍처라고도 불린다.

장점

- 아키텍쳐 확장이 용이하다.

- SOLID 원칙을 쉽게 적용할 수 있다.

- 모듈 일부를 배포하는 게 용이하다.

- 테스트를 위해 모듈을 가짜로 바꿀 수 있으므로 테스트가 더 안정적이고 쉽다.

- 더 큰 비즈니스적 가치를 갖고 더 오래 지속되는 도메인 모델에 큰 관심을 둔다.

구성

내부 영역 - 순수한 비즈니스 로직을 표현하며 캡슐화된 영역이고 기능적 요구사항에 따라 먼저 설계

외부 영역 - 내부 영역에서 기술을 분리하여 구성한 영역이고 내부 영역 설계 이후 설계

포트와 어댑터

포트는 내부 비즈니스 영역을 외부 영역에 노출한 API이고 인바운드(Inbound)/아웃바운드(Outbound) 포트로 구분됩니다.

인바운드 포트 - 내부 영역 사용을 위해 노출된 API

아웃바운드 포트 - 내부 영역이 외부 영역을 사용하기 위한 API

어댑터는 외부 세계와 포트 간 교환을 조정하고 역시 인바운드/ 아웃바운드 어댑터로 구분된다.

인바운드 어댑터 - 외부 어플리케이션/서비스와 내부 비즈니스 영역(인바운드 포트) 간 데이터 교환을 조정

아웃바운드 어댑터 - 내부 비즈니스 영역(아웃바운드 포트)과 외부 어플리케이션/서비스 간 데이터 교환을 조정

결국 이 구조의 핵심은 비즈니스 로직이 표현 로직이나 데이터 접근 로직에 의존하지 않는 것이다.

Reference

https://mesh.dev/20210910-dev-notes-007-hexagonal-architecture/

profile
공부하는 백엔드 개발자

0개의 댓글