
아키텍처
MSA - 원칙, 아키텍처, 그리고 DB 분리
두줄요약
단일 DB의 104개 컬렉션을 도메인별 DB 6개로 무중단 분리한 MSA 전환 과정을 정리했습니다. 서비스 경계, 데이터 일관성, CDC 기반 이관과 검증 포인트를 함께 다뤘습니다.
문제 상황
- 단일 DB에 104개 컬렉션이 모인 모놀리식 구조에서 도메인별 독립성과 무중단 운영 필요성 발생
- 서비스 경계가 흐릿하면 공유 DB, 잦은 동기 호출, 배포·장애 전파로 분산 모놀리스가 되기 쉬움
원인 분석
- 모놀리스의 전체 재배포, 부분 확장 불가, 장애 전파, 기술 스택 고착이 구조적 한계로 작용
- 경계가 애매한 컬렉션 소유권과 도메인 간 join, 직접 DB 접근이 독립 배포를 방해
해결 방법
- bounded context, 데이터 접근 패턴, 팀 경계를 기준으로 서비스 경계를 재정의
- transactional outbox, at-least-once, 멱등 처리, saga로 분산 환경의 일관성 문제 대응
- MongoShake change stream 기반 CDC로 동일 클러스터 내 DB 분리와 무중단 참조 전환 수행
성능/운영 포인트
- full sync와 incremental sync를 나누고 oplog 윈도우보다 충분히 짧은 이관 시간 확보
- replication lag, count·샘플·애플리케이션 테스트로 컷오버 안정성 검증
- loopback 방지, 인덱스 유지, rolling deploy 구간의 이벤트 미발행 공백 관리


