1. 레이어드 아키텍처를 사용하지 않은 이유
- 각 서비스가 독립적인 비즈니스 도메인을 가지고 있습니다. 외부 의존성(MySQL, Redis, Kafka)으로부터 핵심 비즈니스 로직을 보호할 수 있습니다.
- 다른 서비스와의 결합도를 낮출 수 있습니다.
유연한 인프라 변경
- MySQL, Redis, Kafka 등의 외부 시스템은 포트 어댑터를 통해 연결되어 있어, 인프라 변경이 필요할 때 핵심 비즈니스 로직을 수정하지 않고도 어댑터만 교체할 수 있습니다.
- 예를 들어, MySQL을 다른 오라클 데이터베이스로 교체하더라도 비즈니스 로직은 영향을 받지 않습니다.
2. 레이어드 아키텍처를 사용하지 않은 이유
복잡성 감소
- 레이어드 아키텍처는 계층 간 의존성이 복잡해질 수 있으며, 특히 MSA 환경에서는 이러한 복잡성이 더욱 증가할 수 있습니다.
- 헥사고날 아키텍처는 핵심 비즈니스 로직과 외부 시스템 간의 경계를 명확히 하여 복잡성을 줄일 수 있습니다.
테스트 용이성
- 각 서비스의 비즈니스 로직을 외부 의존성 없이 독립적으로 테스트할 수 있습니다.
- 모의 객체(Mock)를 사용하여 외부 시스템과의 통합 테스트를 쉽게 수행할 수 있습니다.
3. 레퍼런스
- 팀원 전원 프로젝트 전에 아래 책을 읽고 각 서비스에 적용 했습니다.
https://m.yes24.com/Goods/Detail/105138479