Hexagonal Architecure란?

조윤상·2024년 6월 14일

MSA

Sprig boot MSA 과정 수강 중 Hexagonal Architecture가 MSA에 많이 사용된다고 하여 공부해 보았다.

Architecture란?

아키텍처란 비즈니스 요구 사항을 만족하는 시스템을 구축하기 위한 체계적인 구조를 정의한 것.

소프트웨어 응용 프로그램을 설계하기 위해 필요한 전반적인 패턴.

Hexagonal(육각형) Architecture란?

Layered architecture의 각 계층에서 하던 일들을 '내부'와 '외부'라는 개념으로 나누어 각각에 맞는 별도의 인터페이스를 정의한다.

내부의 로직은 오직 외부를 통해서만 접근 가능하다.

  • 모든 외부 시스템과의 직접적인 상호작용은 어댑터의 역할
  • 각 서비스에서 비즈니스 로직에 맞게 정의된 인터페이스는 포트의 역할

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

ex)
1. 외부(UI)로부터 들어온 request가 가장 처음 만나는 Controller는 인바운드 어댑터라고 할 수 있다.
2. 메세지 브로커(kafka)로부터 Consume하는 동작을 처리하는 핸들러는 인바운드 어댑터라고 할 수 있다.
3. DB(MySql)에 직접 접근하여 CRUD를 처리하는 DAO는 아웃바운드 어댑터라고 할 수 있다.

포트: 서비스 입장에서 어댑터와 통신하기 위한 동작을 정의한 인터페이스

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

어댑터를 통해 외부 서비스와의 의존성을 분리하여 확장성 높음.

포트를 통해서 내부 비즈니스 로직과 인터페이스를 분리하여 내부 로직의 구현은 인터페이스와 무관하게 개발 하도록함.

코드의 양이 많아지고 재사용이 불편하다고 생각할 수도 있지만, Layered architecture보다 유연성과 확장성이 좋기 때문에 MSA에는 더 적합할 수도 있다.

0개의 댓글