문제
마이크로서비스 아키텍처(Microservices Architecture)에서 서비스 간 결합도 관리와 서비스 내 응집도 최적화를 위한 설계 원칙을 제시하고, **도메인 주도 설계(Domain-Driven Design)**와 **이벤트 기반 아키텍처(Event-Driven Architecture)**가 이러한 목표 달성에 어떻게 기여하는지 서술하시오.
정답
마이크로서비스에서 서비스 간 결합도 관리는 비동기 메시징, API 게이트웨이, 서킷 브레이커 패턴을 통해 달성하며, 서비스 내 응집도는 바운디드 컨텍스트 기반 도메인 분리로 최적화한다. DDD는 도메인 모델을 중심으로 비즈니스 응집도를 높이고 컨텍스트 맵을 통해 서비스 경계를 명확히 정의한다. 이벤트 기반 아키텍처는 도메인 이벤트와 이벤트 소싱을 통해 서비스 간 시간적 결합을 제거하고, 이벤트 스토어를 중심으로 한 eventual consistency로 데이터 결합도를 최소화한다.
해설
마이크로서비스 아키텍처에서는 기존 모놀리식 시스템과 다른 차원의 결합도/응집도 관리가 필요하다. 서비스 간 결합도 관리를 위해서는 HTTP 동기 호출 대신 메시지 큐를 통한 비동기 통신으로 시간적 결합을 제거하고, API 게이트웨이로 클라이언트-서비스 간 직접 결합을 차단하며, 서킷 브레이커로 장애 전파를 방지한다. 서비스 내 응집도는 DDD의 바운디드 컨텍스트를 기준으로 비즈니스 도메인별로 서비스를 분리하여 높인다. 이벤트 기반 아키텍처는 도메인 이벤트 발행/구독으로 서비스 간 느슨한 결합을 실현하고, 이벤트 소싱으로 상태 변경을 이벤트 시퀀스로 관리하여 데이터 일관성과 서비스 독립성을 동시에 확보한다.