마이크로서비스 패턴 모음

  • 패턴 개괄

    • 애플리케이션 패턴(application pattern): 개발자가 맞닥뜨리는 문제를 해결합니다.
      • 분해: 시스템을 여러 서비스로 분해하는 기준을 결정하는 것.
        • 비즈니스 능력 <-> 하위 도메인(DDD)
      • 쿼리: 분산 db에서 쿼리하는 방법
        • API 조합 <-> CQRS
      • 데이터 일관성: 분산 db 간 일관성 유지하는 방법
        • 참고 - 2PC는 가용성 이슈와 성능 이슈 때문에 제외
      • 테스트 자동화: 가급적 E2E를 피하고, 서비스 별로 분리하여 테스트하는 단순화가 필요
        • consumer-driven contract test / consumer-side contract test / service component test
    • 애플리케이션 인프라(application infrastructure): 개발에도 영향을 미치는 인프라 문제를 해결합니다.
      • 통신:
        • 통신(IPC) 스타일
        • 서비스 디스커버리
        • 신뢰성: 한 서비스가 불능일때 서비스 간 통신의 신뢰성 보장하는 방법
        • 트랜잭셔널 메시징: 여러 서비스에 걸친 트랜잭션의 일관성 보장하는 방법
        • 외부API: 클라이언트와 서비스의 통신 방법
      • 보안: 일반적으로 API 게이트웨이가 인증(인가까지도) 처리. 보통 JWT 같은 액세스 토큰 사용
      • 관측성: 여러 서비스에 걸친 동작의 모니터링과 트러블슈팅을 위한 방법
        • 헬스 체크 / 로그 수집 / 분산 추적 / 예외 추적 / 애플리케이션 지표 / audit logging
      • 횡단 관심사 처리: 횡단(공통) 관심사(cross-cutting concerns)를 한 곳에서 처리하도록
    • 인프라 패턴(infrastructure pattern): 주로 개발 영역 밖의 인프라 문제를 해결합니다.
      • 배포
  • Microservices Patterns - Conceptual Map

refs