Hexagonal Architecture 란?
Hexagonal Architecture, 또는 Ports and Adapters Architecture로도 알려진 이 패턴은 애플리케이션을 내부 핵심과 외부 요소로 구분짓는 것을 목표로 합니다. 이를 통해 외부 요소에 대한 의존성을 최소화하고 테스트 가능한 코드를 작성할 수 있습니다.
Hexagonal Architecture의 구성 요소
1. Ports (포트)
애플리케이션의 외부와 상호 작용하는 인터페이스를 나타냅니다. 주로 인풋과 아웃풋을 처리하는 데 사용되며, 외부 시스템과의 통합 지점입니다.
2. Adapters (어댑터)
외부 시스템과의 통합을 담당하는 구현체입니다. 이는 실제로 외부 시스템과 통신하고 결과를 애플리케이션에 맞게 변환하는 역할을 수행합니다.
3. Core (코어)
애플리케이션의 핵심 비즈니스 로직이 위치하는 부분입니다. 이 부분은 외부 시스템과의 통합에서 분리되어 있어야 합니다.
Hexagonal Architecture는 이러한 구성 요소를 육각형으로 나타낼 수 있습니다. 외부에서 들어오는 요청과 나가는 응답은 포트를 통해 Core로 들어가고 나가게 됩니다. 외부 시스템과의 통합은 어댑터를 통해 이루어집니다.
MSA에서 Hexagonal Architecture
MSA 환경에서는 Hexagonal Architecture가 서비스 간 상호 작용을 관리하는데 특히 유용합니다. 각각의 마이크로서비스는 자체의 Hexagonal Architecture를 가지며, 내부의 포트와 어댑터를 통해 외부 서비스나 데이터 스토어와 통신합니다.
이 구조를 통해 마이크로서비스 간의 의존성을 최소화하고, 각 서비스를 독립적으로 배포하고 테스트할 수 있습니다. 또한, 새로운 서비스를 도입하거나 기존 서비스를 변경할 때 기존 시스템에 영향을 최소화할 수 있습니다.
Hexagonal Architecture의 장점
1. 유연성과 확장성
포트와 어댑터를 통한 외부 시스템과의 결합도가 낮아져 새로운 기능을 추가하거나 시스템을 확장하기가 용이합니다.
2. 테스트 용이성
Core 부분은 외부 의존성에서 분리되어 있어 유닛 테스트 및 모의 객체를 사용한 테스트를 용이하게 만듭니다.
3. MSA와의 호환성
서비스 간의 통신이 핵심 로직에서 분리되므로 MSA 환경에서의 상호 운용성이 향상됩니다.
4. 변경 관리 용이성
외부 시스템과의 통합이 어댑터에 의해 처리되므로 외부 시스템의 변경에 민감하지 않습니다.
'인프라 > MSA' 카테고리의 다른 글
[MSA] 분산 트랜잭션 - 2PC (0) | 2023.12.18 |
---|---|
[MSA] 분산 트랜잭션 - ACID (1) | 2023.12.18 |
[MSA] MSA가 어려운 이유 (0) | 2023.12.01 |
[MSA] MSA의 핵심 원칙 (0) | 2023.11.30 |
[MSA] MSA란 무엇인가? (0) | 2023.11.30 |