피드로 돌아가기
I Built a Global Opinion Platform in 72 Hours — Here Is What Actually Went Wrong
Dev.toDev.to
Database

Polyglot Persistence 기반 글로벌 투표 플랫폼의 72시간 구축 및 최적화

I Built a Global Opinion Platform in 72 Hours — Here Is What Actually Went Wrong

Hafiz Muhammad Salman2026년 6월 29일5intermediate

Context

글로벌 투표 및 예측 시스템 구축 과정에서 Write-heavy한 투표 데이터 처리와 Complex Read 기반의 랭킹 산출이라는 상충하는 요구사항 발생. 초기 설계 시 Aurora DSQL과 DynamoDB의 특성 오판으로 인한 스키마 설계 및 권한 설정 병목 직면.

Technical Solution

  • Write-heavy한 투표 집계 처리를 위해 DynamoDB의 Atomic ADD 연산을 통한 Lock-free 카운팅 구조 설계
  • 복잡한 순위 산정 및 조인 쿼리 해결을 위해 Window Function 및 Join 연산이 가능한 Aurora DSQL 기반의 Read Layer 구축
  • DynamoDB(Write)에서 Aurora DSQL(Read)로 데이터를 이동시키는 Nightly Pipeline을 통한 CQRS 패턴의 실질적 구현
  • IAM 권한 제약 사항 해결을 위한 DynamoDB Single-table Design 적용 및 Partition Key Prefix(VOTE, COUNTER)를 통한 엔티티 구분
  • Aurora DSQL의 제약 사항을 반영하여 Foreign Key 제거 및 Application Layer 수준의 Referential Integrity 관리 체계 도입
  • Amazon Bedrock을 통한 JSON 구조의 문제 생성 자동화 및 Admin 검수 프로세스 구축

- Aurora DSQL 도입 전 Foreign Key 미지원 및 ASYNC Index 생성 등 표준 PostgreSQL과의 차이점 검토 - DynamoDB 사용 시 Access Pattern을 우선 정의하고 Single-table Design 적용 가능 여부 판단 - 고빈도 쓰기와 복잡한 읽기 요구사항이 공존할 경우, DB 분리 및 데이터 동기화 파이프라인 구축 고려 - Vercel Marketplace 등 자동 프로비저닝 도구 사용 시 할당된 IAM Role의 리소스 범위 확인

원문 읽기