버즈빌, DynamoDB로 포인트 시스템 성능 3배 향상!

by DD
10년 전
조회수 8

MySQL RDS의 한계로 DynamoDB를 도입하여 포인트 시스템을 구축함

DynamoDB transaction 부재로 인해 amount_sum 테이블을 설계함

Conditional WriteGlobal Secondary Index를 활용하여 데이터 일관성조회 성능을 개선함

DynamoDB 테이블 설계 심층 분석

기존 MySQL에서 DynamoDB로 전환하며, amountsum 테이블을 통합하여 amount_sum 테이블을 설계했다. 구체적으로, user_id를 파티션 키, date를 정렬 키로 설정하여 데이터 접근성을 높였다. 따라서, Conditional Write를 통해 동시성 문제를 해결하고, 데이터 일관성을 확보했다.

데이터 일관성 확보를 위한 트랜잭션 처리

DynamoDBtransaction 부재로 인해, amount_sum_version 테이블을 도입하여 데이터 일관성을 유지했다. Version 값을 활용하여 동시성 문제를 해결하고, Conditional Write를 통해 데이터 덮어쓰기를 방지했다. 반면, Global Secondary Index를 통해 전체 데이터 조회 성능을 개선했다.

성능 최적화를 위한 인덱싱 전략

전체 데이터 시간순 조회를 위해 scatter-date-index를 활용했다. 구체적으로, scatter 값을 랜덤하게 부여하여 hot partition 문제를 해결하고, 쓰로틀링을 방지했다. 따라서, Query 성능을 향상시키고, 대규모 데이터 처리의 효율성을 높였다.

AWS DynamoDB at Buzzvil