핵심 메시지

같은 서비스라도 데이터 요구가 다르면 저장소도 달라진다

폴리글랏 퍼시스턴스는 하나의 DB에 모든 상태를 몰아넣는 대신, 데이터가 먼저 필요로 하는 속성에 맞춰 저장소를 나누는 방식이다.

변경 전 관점

모든 데이터를 한 DB로 처리

주문의 정합성, 세션의 초저지연, 검색의 전문 탐색, 로그의 대량 쓰기를 하나의 저장소가 동시에 최적화하기는 어렵다.

한곳에 몰리면 생기는 충돌
정확한 커밋이 필요한 상태
즉시 읽고 금방 사라지는 상태
텍스트 탐색과 랭킹이 필요한 상태
계속 쌓이는 이벤트 상태
변경 후 상태

같은 시스템 안에서 역할별로 DB를 맡긴다

선택 기준은 제품 이름보다 먼저, 그 데이터가 시스템에서 수행해야 하는 일이다.

주문 · 결제
강한 일관성
RDBMS 트랜잭션으로 결제와 재고 상태를 안전하게 확정한다.
사용자 세션
짧은 지연
Redis 로그인 상태를 빠르게 읽고 갱신한 뒤 쉽게 만료시킨다.
상품 검색
탐색 품질
검색 엔진 검색어 분석과 랭킹을 통해 원하는 결과를 더 잘 찾게 만든다.
클릭 로그
대량 쓰기
분산 NoSQL 끊임없이 쌓이는 이벤트를 분산 저장하며 확장성을 확보한다.
얻는 것

정합성, 응답 속도, 검색성, 확장성을 데이터 성격에 맞춰 각각 최적화할 수 있다.

새 과제

상태가 여러 DB에 나뉘므로 데이터 동기화, Saga 또는 분산 트랜잭션, 운영 관측과 백업이 더 중요해진다.