피드로 돌아가기
Dev.toDatabase
원문 읽기
Polyglot Persistence 기반의 도메인 최적화 데이터 저장소 설계
Polyglot Persistence in Microservices: Choosing the Right Database for Each Service
AI 요약
Context
단일 RDBMS 기반의 Monolithic 아키텍처에서 발생하는 Tight Coupling 및 확장성 제한 문제를 분석. 모든 도메인을 동일한 Persistence Paradigm에 강제함으로써 발생하는 데이터 모델 불일치와 성능 병목 현상을 해결하고자 함.
Technical Solution
- Database per Service 패턴 적용을 통한 서비스 간 데이터 격리 및 독립적 스키마 진화 구조 설계
- Order Service에 PostgreSQL을 도입하여 금융 데이터의 정합성 보장을 위한 ACID 트랜잭션 및 Foreign Key 제약 조건 구현
- Product Service에 MongoDB를 채택하여 이기종 상품 속성을 수용하는 Schema-less Document 구조로 EAV 패턴의 복잡성 제거
- Cart Service에 Redis In-memory K/V 스토어를 배치하여 휘발성 상태 데이터의 Sub-millisecond 응답 속도 달성
- Flyway를 통한 데이터베이스 버전 관리로 환경 간 Schema Drift 방지 및 재현 가능한 마이그레이션 환경 구축
- 분산 트랜잭션의 한계를 극복하기 위해 Saga 패턴을 통한 서비스 간 데이터 일관성 유지 전략 채택
실천 포인트
1. 데이터가 법적/금융적 증빙을 포함하여 ACID 보장이 필수적인가? (Yes $\rightarrow$ RDBMS)
2. 데이터 속성이 다양하고 빈번한 스키마 변경이 발생하는가? (Yes $\rightarrow$ Document DB)
3. 데이터 수명이 짧으며 극도의 저지연 응답이 필요한가? (Yes $\rightarrow$ In-memory DB)
4. 서비스 간 직접적인 DB 참조를 제거하고 API를 통한 통신 구조를 갖췄는가?