본문 바로가기
세미나 컨퍼런스 후기

AWS Summit Seoul 2025 - 오로라 DSQL 아키텍처

by Jaejin Sim 2025. 8. 28.
반응형

서버리스 분산 SQL DB: Amazon Aurora DSQL의 아키텍처 알아보기

AWS Summit Seoul 2025에서 발표된 "Amazon Aurora DSQL의 아키텍처" 세션 내용을 정리한 기술 블로그입니다. PostgreSQL 호환성, 트랜잭션 처리 방식, 격리 수준, 멀티리전 지원 등 Aurora DSQL의 아키텍처적 특성과 장점을 소개합니다.


📌 Aurora DSQL이란?

Amazon Aurora DSQL은 서버리스 기반의 PostgreSQL 호환 관계형 데이터베이스입니다. Aurora의 안정성과 확장성을 그대로 유지하면서, OLTP(트랜잭션 처리)에 최적화된 구조를 갖추고 있습니다.

주요 특징

  • 서버리스: 엔드포인트 생성만으로 즉시 사용 가능. 인프라 관리 불필요.
  • PostgreSQL 호환: 기존 SQL 쿼리 및 툴 그대로 사용 가능.
  • 트랜잭션 처리 최적화: 초당 수천 건의 쓰기에도 견딜 수 있도록 설계.
  • 멀티 리전, 액티브-액티브 구성 지원: 글로벌 서비스 환경에 적합.
  • AWS 최적화: S3, Lambda 등과 연계된 클라우드 네이티브 설계.

💡 Aurora DSQL은 리포트나 BI 분석 용도보다는 금융, 커머스 등 트랜잭션 중심 시스템에 더 적합합니다.


⚙️ 트랜잭션은 어떻게 처리될까?

기본 예제

BEGIN;
INSERT INTO dogs VALUES ('snuffles', 4);
INSERT INTO dogs VALUES ('sophie', 8);
COMMIT;

처리 흐름

  1. BEGIN: 트랜잭션 시작 시점 T_start를 선택
  2. INSERT: 쓰기 작업은 Query Processor(QP)에 임시 저장
  3. COMMIT: 격리 수준 규칙을 검사한 후, 변경 사항을 Journal에 기록

이처럼 Aurora DSQL은 쓰기 작업을 커밋 전까지 QP에 보관하고, 최종 커밋 시점에만 영구 저장소에 기록합니다. 이때 사용되는 Journal은 **원자성(Atomicity)**과 **내구성(Durability)**을 보장합니다.


🔒 격리 수준과 동시성 제어 (Snapshot Isolation)

Aurora DSQL은 **전통적인 Lock 기반 방식 대신, 낙관적 동시성 제어(Optimistic Concurrency Control)**를 사용합니다.

예제: 충돌 가능성 있는 트랜잭션

BEGIN;
UPDATE dogs SET age = age + 1 WHERE name IN ('snuffles', 'max');
COMMIT;

이 트랜잭션은 T_start 시점의 데이터를 기준으로 실행되며, 커밋 시점에 같은 key를 수정한 다른 트랜잭션이 없었는지 adjudicator가 확인합니다. 충돌이 없다면 커밋되고, 있다면 실패합니다.


Snapshot Isolation 특징 요약

항목설명
읽기 일관성 모든 읽기는 T_start 기준 Snapshot에서 처리됨
쓰기 충돌 방지 같은 key에 중복 쓰기가 감지되면 커밋 거부
커밋 시점 처리 모든 쓰기는 T_commit 시점에 실행됨
격리 보장 수준 PostgreSQL의 Repeatable Read 수준과 동일

격리 흐름 예시

BEGIN;
SELECT count(*) FROM dogs WHERE state = 'hungry';
UPDATE food SET quantity = quantity - 2 WHERE type = 3;
UPDATE dogs SET state = 'well fed' WHERE name IN ('fido', 'max');
COMMIT;
  • SELECT는 T_start 시점의 Snapshot을 기반으로 수행
  • UPDATE는 QP에 저장
  • COMMIT 시점에 adjudicator가 충돌 여부 확인 → Journal에 기록

충돌 예제 (쓰기 경합 시나리오)

-- 트랜잭션 A
START TRANSACTION;
SELECT n FROM t WHERE id IN (1,2);
UPDATE t SET n = 2 WHERE id = 1;
COMMIT;

-- 트랜잭션 B
START TRANSACTION;
SELECT n FROM t WHERE id IN (1,2);
UPDATE t SET n = 2 WHERE id = 1;
COMMIT;

동일한 id = 1을 갱신하는 트랜잭션이므로, 두 트랜잭션 중 하나만 커밋에 성공하고, 다른 하나는 롤백됩니다. 이 충돌 처리는 adjudicator가 전담합니다.


🧠 Query Processor & Adjudicator의 역할

구성 요소역할
Query Processor (QP) 트랜잭션의 시작 시점을 결정하고, 읽기/쓰기 요청을 임시 저장
Adjudicator 커밋 시점에 격리 수준 검사 및 Journal 기록 결정

adjudicator의 커밋 판단 예시

QP가 T_start 시점 선택 →
쓰기 대상 key 목록 전달 →
adjudicator는:
  → 해당 key에 T_start 이후 다른 트랜잭션의 쓰기가 있는지 검사
  → 없으면 T_commit 시점으로 확정, Journal에 기록

🌍 멀티 리전 & 글로벌 아키텍처

Aurora DSQL은 Cross-Region 환경에서도 안정적으로 작동합니다.

네트워크 지연 최적화

  • 네트워크 지연은 물리적으로 줄일 수 없지만,
  • 읽기와 쓰기 작업은 로컬에서 처리하며,
  • COMMIT 시점에 단 한 번의 coordination만 수행되도록 설계되어 있습니다.

주요 특징

항목설명
Read-Only 트랜잭션 Coordination 없이 로컬에서 바로 완료
쓰기 트랜잭션 커밋 시점에 한 번만 cross-region coordination 수행
장애 조치 리더십 전환 시 데이터 이동 없이 빠른 Failover 가능

🔚 마무리하며

Amazon Aurora DSQL은 서버리스 아키텍처의 확장성과 분산 트랜잭션의 복잡성을 절묘하게 조율한 서비스입니다. 특히 낙관적 동시성 제어 기반의 Snapshot Isolation, 쓰기 병렬성 확보, 멀티 리전 처리 최적화는 고성능 분산 시스템이 필요한 서비스에 강력한 대안이 될 수 있습니다.

반응형