Microservices Decomposition
모놀리식 애플리케이션을 독립 배포 가능한 작은 서비스들로 분해하는 설계 결정.
sys.entry
M
Me
hyunyoun's Blog
system-architecture-distributed-systems1 min read
Microservices Decomposition
모놀리식 애플리케이션을 독립 배포 가능한 작은 서비스들로 분해하는 설계 결정.
분해 전략
도메인 기준 분해 (DDD Bounded Context): 비즈니스 도메인 경계를 서비스 경계로 매핑. 팀 자율성과 일치. Conway의 법칙: 시스템 구조가 조직 구조를 반영.
기능 기준 분해: 주문, 결제, 배송처럼 비즈니스 능력(Business Capability) 단위로 분리.
서비스 경계 설계 원칙
- 높은 응집도: 한 서비스 내 변경이 다른 서비스를 건드리지 않아야 함
- 낮은 결합도: 서비스 간 통신은 API나 이벤트로만. DB 공유 금지.
- 독립 배포 가능: 각 서비스가 자체 CI/CD 파이프라인으로 배포
분해 실패 패턴
Distributed Monolith: 마이크로서비스로 나눴지만 동기 호출 체인이 길어 하나가 죽으면 전체 장애. 모놀리식의 단점 + 분산 시스템 복잡도를 동시에 가짐.
Chatty Services: 너무 잘게 나눠 네트워크 홉이 과다. 단일 요청에 10개 이상 서비스 호출.
연결 노트
- ZK-Event-Sourcing — 서비스 간 상태 공유 대신 이벤트 스트림으로 연결
- ZK-CQRS-Pattern — 서비스별 독립 Read/Write 모델 운용
- ZK-SLI-SLO-Error-Budget — 각 서비스의 가용성 SLO를 독립적으로 정의
- ZK-ReAct-Pattern — 에이전트가 각 서비스를 tool로 호출하는 오케스트레이션 유사