DynamoDB로 포인트 시스템을 설계한 Buzzvil의 기술 노하우
by DD
10년 전
조회수 2
MySQL RDS의 확장성 한계로 DynamoDB로 전환
Atomic Transaction 부재로 테이블 구조를 통합하고, Conditional Write 적용
GSI를 활용하여 데이터 읽기 성능을 개선하고 Hot Partition 문제 해결
DynamoDB 테이블 설계의 핵심
초기 amount table과 sum table 분리 설계는 Atomic Transaction 부재로 인해 데이터 일관성 문제를 야기했다. 따라서 user_id를 파티션 키로, version을 정렬 키로 사용하는 amount_sum_version table로 통합했다. Conditional Write를 통해 동시성 문제를 해결하고, GSI를 활용하여 데이터 조회 성능을 향상시켰다.
Conditional Write와 Versioning의 역할
Conditional Write는 동시 쓰기 문제를 해결하기 위해 필수적이다. Version 속성을 활용하여 데이터 정합성을 보장하고, 충돌 발생 시 재시도하는 방식으로 안정성을 확보했다. Version 관리를 통해 데이터 손실을 방지하고, 최신 데이터를 유지하는 것이 핵심이다.
GSI를 활용한 데이터 조회 최적화
GSI(Global Secondary Index)를 통해 데이터 조회 속도를 개선했다. Scatter 속성을 활용하여 Hot Partition 문제를 해결하고, 병렬 쿼리를 가능하게 했다. Scatter-date-index를 통해 시간 순 데이터 조회를 효율적으로 처리하여 서비스 안정성을 높였다.
댓글 0
첫 번째 댓글을 남겨보세요!