본문으로 건너뛰기

1 DynamoDB 트랜잭션

  • Amazon DynamoDB의 트랜잭션 기능은 여러 테이블에 걸친 복잡한 비즈니스 로직을 구현할 때 데이터의 일관성과 정확성을 보장하는 강력한 도구입니다.
  • 이 기능을 통해 개발자는 여러 작업을 원자적으로 처리할 수 있어, 금융 거래나 재고 관리와 같은 중요한 애플리케이션을 더욱 안전하게 구축할 수 있습니다.

1.1 DynamoDB 트랜잭션의 특징

  • ACID 보장: 트랜잭션은 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)을 보장합니다.
  • 다중 테이블 지원: 하나 이상의 테이블에 걸쳐 항목을 추가, 업데이트, 삭제하는 작업을 조정할 수 있습니다.
  • 모든 작업 성공 또는 실패: 트랜잭션 내의 모든 작업이 성공하거나, 아니면 전체가 실패합니다.

2 트랜잭션 작업 모드

  • 읽기 모드:
    • 최종 일관성 읽기
    • 강력한 일관성 읽기
    • 트랜잭션 읽기
  • 쓰기 모드:
    • 표준 쓰기
    • 트랜잭션 쓰기

3 트랜잭션 작업 유형

  • TransactGetItems: 하나 이상의 GetItem 작업을 수행합니다.
  • TransactWriteItems: 하나 이상의 PutItem, UpdateItem, DeleteItem 작업을 수행합니다.

4 트랜잭션의 용량 소비

  • 트랜잭션 작업은 일반 작업에 비해 2배의 읽기 용량 단위(RCU)와 쓰기 용량 단위(WCU)를 소비합니다.
  • 이는 DynamoDB가 각 항목에 대해 '준비'와 '커밋' 두 단계의 작업을 수행하기 때문입니다.

5 트랜잭션 사용 예시

Pasted image 20240817193719.png

  • 이 예시에서는 하나의 트랜잭션으로 두 개의 테이블을 동시에 업데이트합니다:
    1. AccountBalance 테이블의 계좌 잔액을 업데이트합니다.
    2. BankTransactions 테이블에 새로운 거래 기록을 추가합니다.
  • 이 두 작업은 하나의 원자적 트랜잭션으로 처리되어, 둘 다 성공하거나 둘 다 실패합니다.

6 트랜잭션 용량 계산

  • 쓰기 트랜잭션 예시:
    • 초당 3회의 트랜잭션 쓰기, 항목 크기 5 KB
    • 필요한 WCU = 3 * (5 KB / 1 KB) * 2(트랜잭션 비용) = 30 WCUs
  • 읽기 트랜잭션 예시:
    • 초당 5회의 트랜잭션 읽기, 항목 크기 5 KB
    • 필요한 RCU = 5 * (8 KB / 4 KB) * 2(트랜잭션 비용) = 20 RCUs
    • (5 KB는 상위 4 KB 단위인 8 KB로 반올림됩니다)

7 트랜잭션의 사용 사례

  • 금융 거래: 계좌 간 송금, 결제 처리 등
  • 주문 관리: 재고 감소와 동시에 주문 생성
  • 게임: 플레이어 간 아이템 교환, 점수 업데이트 등
  • 데이터 일관성이 중요한 모든 애플리케이션