마이크로서비스 패턴 모음

-
패턴 개괄
- 애플리케이션 패턴(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): 주로 개발 영역 밖의 인프라 문제를 해결합니다.
- 배포
- 배포
- 애플리케이션 패턴(application pattern): 개발자가 맞닥뜨리는 문제를 해결합니다.
-
Microservices Patterns - Conceptual Map