Polyglot Persistence

여러 저장소를 쓸 때는 원본과 파생 데이터를 먼저 나눈다

폴리글랏 퍼시스턴스는 데이터를 목적별 저장소에 나누는 접근입니다. 장점은 모델 적합성이고, 대가는 동기화·트랜잭션·운영 복잡성입니다. 모든 저장소가 같은 책임을 갖는 것은 아닙니다.

Source of Truth

정합성의 기준을 한곳에 둔다

RDBMS 주문, 결제, 재고처럼 트랜잭션과 제약 조건이 중요한 원본 데이터를 담당합니다.
변경 이벤트
비동기 반영
재처리 가능
Cache Redis 세션, 캐시, 짧은 수명의 카운터처럼 빠른 키 조회를 담당합니다.
Search Search Engine 상품명, 설명, 로그처럼 텍스트 검색과 랭킹이 필요한 데이터를 담당합니다.
Vector Vector DB 유사 상품, 문서 검색, RAG 후보 검색처럼 의미 기반 조회를 보조합니다.
Analytics Warehouse 리포팅과 집계처럼 운영 트랜잭션과 다른 읽기 패턴을 분리합니다.
Owner 원본 소유자를 정한다 어느 DB의 값이 최종 기준인지 먼저 합의해야 합니다.
Sync 반영 지연을 허용할지 정한다 검색, 캐시, 벡터 인덱스가 언제 최신이어야 하는지 구분합니다.
Tx 트랜잭션 경계를 좁힌다 여러 DB를 한 트랜잭션으로 묶기보다 이벤트와 보상 흐름을 설계합니다.
Ops 운영 비용을 계산한다 모니터링, 백업, 장애 복구, 권한 관리가 저장소 수만큼 늘어납니다.
정리
폴리글랏 퍼시스턴스는 DB를 많이 쓰는 설계가 아니라 책임을 분리하는 설계입니다. 원본, 파생 데이터, 동기화 실패 처리를 먼저 정해야 비용을 감당할 수 있습니다.