배민 고객 속성으로 segment를 만들어 coupon·push와 실시간 personalization에 쓰는 Buzz를, 70개 국가·수억 명 규모의 글로벌 Segmentum으로 확장하며 내린 architecture 결정을 정리한다. 지연·비용·tail latency·코드 분기라는 상충 요구를 어떻게 절충했는지 보여준다.
핵심 포인트- p95 60ms·수만 TPS를 비용 효율적으로 맞추기 위해 중앙 집중과 70개국 개별 배포 사이에서 4개 region 배포를 택하고, 일관된 millisecond 성능·managed scaling을 근거로 Redis·Cassandra 대신 DynamoDB를 선택
- 매일 전체 관계를 재작성하는 대신 snapshot delta만 반영하는 CDC로 보통 3~4% 변경분만 write하고, 만료는 유료 delete 없이 TTL로 자동 정리하며, partition key=customer ID·sort key=segment ID로 활성 segment를 range query
- metadata를 15초마다 Caffeine local cache로 복제해 요청당 DB 호출을 한 번으로 줄이고 fail-fast·request hedging으로 tail latency를 잡아 p95 10ms·p99 20ms 달성, tenant 조건은 AOP·Hibernate session filter로, 국내외 platform 차이는 interface·repository mirroring으로 흡수
왜 읽나글로벌 규모의 저지연·저비용 personalization 백엔드를 설계하며 DynamoDB data model, tail latency, 멀티테넌시를 동시에 다뤄야 하는 엔지니어에게 밀도 높은 결정 기록.