피드로 돌아가기
Optimistic concurrency is the whole design: event sourcing on Aurora DSQL
Dev.toDev.to
Database

Aurora DSQL의 Optimistic Concurrency와 Event Sourcing을 통한 Zero-Forking 아키텍처 구현

Optimistic concurrency is the whole design: event sourcing on Aurora DSQL

Jonathan2026년 6월 15일6advanced

Context

멀티 리전 환경에서 다수의 응답자가 동시에 동일한 인시던트에 접근할 때 발생하는 데이터 충돌 및 분기(Forking) 방지가 필수적인 상황. 기존 Pessimistic Lock 기반 DB의 경우 리전 장애 시 보관된 Lock 상태를 복구해야 하는 복잡성과 성능 저하 문제가 존재함.

Technical Solution

  • Event Sourcing 기반의 Append-only 데이터 모델을 채택하여 상태 업데이트 대신 불변 이벤트 로그를 누적하는 구조 설계
  • Aurora DSQL의 Optimistic Concurrency Control(OCC)을 활용하여 Row Lock 없이 커밋 시점에 충돌을 검증하는 무잠금(Lock-free) 메커니즘 적용
  • 이벤트 UUID를 Primary Key이자 Idempotency Key로 정의하여 네트워크 재시도 시 발생하는 중복 쓰기를 원천 차단
  • SQLSTATE 40001(Serialization Error) 발생 시 Bounded Retry와 Backoff 전략을 통해 트랜잭션을 재시도하는 애플리케이션 로직 구현
  • Vercel OIDC Federation과 DSQL의 Serverless 특성을 결합하여 Connection Pool 관리 및 정적 자격 증명 관리 비용 제거
  • Kysely Query Builder를 사용하여 ORM의 추상화 대신 SQL 실행 계획을 직접 제어함으로써 분산 DB의 쿼리 최적화 달성

1. 분산 DB 도입 시 SELECT ... FOR UPDATE가 블로킹이 아닌 Retryable Conflict를 유발하는지 확인하십시오.

2. 재시도 전략이 포함된 트랜잭션 설계 시, 데이터 모델 수준에서 Idempotency Key를 강제하여 멱등성을 보장하십시오.

3. 서버리스 환경에서는 Connection Pool 오버헤드를 줄이기 위해 인스턴스 기반 DB보다 Serverless/HTTP 기반 DB 인터페이스를 검토하십시오.

원문 읽기