DynamoDB Streams 및 전역 테이블
Streams로 항목 수준의 변경 사항을 실시간 처리하고, 전 세계에서 지연 시간이 짧은 읽기를 지원하도록 전역 테이블로 여러 리전에 데이터를 복제합니다.
DynamoDB Streams 및 전역 테이블은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
DynamoDB 스트림: 변경 데이터 캡처
DynamoDB 스트림은 DynamoDB 테이블에서 항목 단위로 발생하는 수정 사항을 시간 순서대로 캡처합니다. 항목이 생성, 업데이트 또는 삭제될 때마다 DynamoDB는 변경 내용을 설명하는 스트림 레코드를 기록합니다. 스트림 레코드는 기록된 후 24시간 동안 사용할 수 있습니다.
스트림은 DynamoDB를 사용하는 이벤트 기반 아키텍처의 기반입니다. 일반적인 사용 사례로는 실시간 처리를 위한 Lambda 함수 트리거, 감사 로그 유지, 다른 저장소로의 데이터 복제, 데이터 변경 시 캐시 무효화 등이 있습니다.
# Enable a DynamoDB Stream on an existing table
aws dynamodb update-table \
--table-name Orders \
--stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES스트림 보기 유형
스트림을 활성화할 때 각 스트림 레코드에 포함할 데이터를 결정하는 StreamViewType을 선택합니다.
- 키만: 수정된 항목의 기본 키 속성만 포함합니다
- 새 이미지: 변경 후의 전체 항목을 포함합니다
- 이전 이미지: 변경 전의 전체 항목을 포함합니다
- 변경 전후 이미지: 변경 전과 후의 항목 상태를 모두 포함합니다
감사를 위해서는 무엇이 변경되었는지 확인할 수 있는 NEW_AND_OLD_IMAGES를, 복제 또는 캐시 업데이트를 위해서는 NEW_IMAGE를 선택하십시오. 어떤 항목이 변경되었는지만 알고 현재 상태는 별도로 가져오면 되는 경우에는 KEYS_ONLY를 선택하십시오.
Lambda를 사용한 스트림 처리
DynamoDB 스트림을 소비하는 가장 일반적인 방법은 AWS Lambda를 사용하는 것입니다. Lambda는 스트림을 폴링하고 스트림 레코드 배치를 함수에 전달하여 호출합니다. 폴링, 체크포인트 기록 및 재시도를 Lambda가 자동으로 처리합니다.
주요 구성 매개변수는 다음과 같습니다. 배치 크기(호출당 레코드 수, 최대 10,000개), 오류 발생 시 분할(실패한 배치를 나누어 문제가 있는 레코드를 격리), 실패 시 대상(처리할 수 없는 레코드를 위한 SQS 또는 SNS)입니다. Lambda는 각 샤드에서 병렬로 읽으므로 병렬 처리 수준은 스트림의 샤드 수와 같습니다.
# Add Lambda as a stream trigger via CLI
aws lambda create-event-source-mapping \
--function-name process-orders-stream \
--event-source-arn arn:aws:dynamodb:us-east-1:123456789:table/Orders/stream/2026-06-20T00:00:00.000 \
--starting-position LATEST \
--batch-size 100 \
--bisect-batch-on-function-error스트림 사용 사례
SAA-C03 시험에서 다루는 DynamoDB 스트림의 실용적인 사용 사례는 다음과 같습니다.
- 리전 간 복제: Lambda가 스트림을 읽고 다른 Region의 테이블에 변경 사항을 기록합니다(Global Tables가 등장하기 전의 표준 패턴이었습니다)
- ElastiCache 무효화: DynamoDB 항목이 변경되면 Lambda가 해당 캐시 키를 무효화하거나 업데이트합니다
- 검색 인덱스 동기화: 항목 변경 사항을 OpenSearch Service로 전달하여 DynamoDB 데이터에 대한 전문 검색을 활성화합니다
- 감사 로깅: 규제 준수를 위해 모든 변경 사항을 S3 또는 규정 준수용 저장소에 기록합니다
- 이벤트 기반 마이크로서비스: 특정 항목이 변경될 때 다운스트림 서비스를 트리거합니다
DynamoDB 글로벌 테이블: 개념과 사용 이유
DynamoDB 글로벌 테이블은 완전 관리형 다중 리전, 다중 활성 복제를 제공합니다. 각 Region에는 테이블의 전체 복사본이 생성되며 모든 복사본에서 동시에 쓸 수 있습니다. 어느 Region에서 발생한 쓰기든 약 1초 이내에 다른 모든 Region으로 비동기 복제됩니다.
글로벌 테이블은 두 가지 중요한 시나리오를 지원합니다. 전 세계에 분산된 사용자를 대상으로 지연 시간이 짧은 읽기와 쓰기를 제공하는 것과, 다중 리전 액티브-액티브 재해 복구를 제공하는 것입니다. 후자의 경우 마지막 복제 이후의 데이터 손실 없이 살아남은 어느 Region에서든 애플리케이션을 계속 실행할 수 있습니다.
글로벌 테이블 생성
글로벌 테이블을 만들려면 먼저 DynamoDB 스트림이 활성화된 테이블을 생성해야 합니다(글로벌 테이블에서 내부적으로 NEW_AND_OLD_IMAGES가 필요합니다). 그런 다음 복제본 Region을 추가합니다. AWS는 추가된 각 Region에 복제본 테이블을 생성하고 양방향으로 데이터 동기화를 시작합니다.
글로벌 테이블(버전 2019.11.21)은 현재 표준이며, Auto Scaling을 사용하는 온디맨드 또는 프로비저닝된 용량을 지원합니다. 각 Region 복제본은 동일한 테이블 이름을 사용해야 합니다. 글로벌 테이블에서 Region을 언제든 추가하거나 제거할 수 있습니다.
# Create a global table replica in eu-west-1
aws dynamodb create-global-table \
--global-table-name GlobalOrders \
--replication-group RegionName=us-east-1 RegionName=eu-west-1글로벌 테이블의 충돌 해결
글로벌 테이블은 여러 Region에서 동시에 쓰기를 허용하므로, 거의 같은 시점에 두 Region이 동일한 항목을 업데이트하면 쓰기 충돌이 발생할 수 있습니다. DynamoDB는 스트림 레코드에 저장된 타임스탬프를 기준으로 최종 작성자 우선 방식을 사용하여 충돌을 해결합니다.
실제로 이는 거의 동시에 발생한 두 충돌 업데이트 중 하나가 적용되고 다른 하나는 덮어써진다는 의미입니다. 애플리케이션은 서로 다른 Region에서 동일한 항목에 동시에 쓰지 않도록 설계해야 합니다. 충돌이 자주 발생하는 사용 사례라면 특정 사용자 또는 엔터티에 대한 모든 쓰기를 하나의 홈 Region으로 라우팅하는 방법을 고려하십시오.
글로벌 테이블과 용량 고려 사항
글로벌 테이블에서는 한 Region의 쓰기가 다른 모든 Region에 자동으로 복제됩니다. 복제된 각 쓰기는 대상 Region에서 WCU를 소비합니다. 예를 들어 Region이 3개라면 한 번의 쓰기에 모든 Region에서 대략 3배의 WCU가 소요됩니다. 이에 맞춰 용량을 계획하십시오.
각 Region의 읽기는 해당 로컬 복제본의 RCU를 소비합니다. 최종적 일관성 읽기(기본값)는 로컬 데이터를 사용하지만, 강력한 일관성 읽기는 Region 간에 지원되지 않습니다. 대부분의 글로벌 애플리케이션에서는 Region 간 약 1초 이내의 최종적 일관성으로 충분합니다.
글로벌 테이블과 리전 간 읽기 전용 복제본(RDS)
SAA-C03 시험에서 중요한 구분은 다음과 같습니다. DynamoDB 글로벌 테이블은 다중 활성이므로 모든 Region에서 읽기와 쓰기를 모두 허용하지만, RDS 리전 간 읽기 전용 복제본은 읽기 전용입니다. 복제본을 승격해야 쓰기가 가능해지며, 이 경우 복제가 중단됩니다.
다중 리전 액티브-액티브 쓰기, 전 세계 100ms 미만의 액세스 또는 NoSQL 데이터의 RPO가 0인 다중 리전 DR이 필요하다면 DynamoDB 글로벌 테이블을 사용하십시오. 관계형 데이터베이스의 전 세계 읽기 확장성이나 장애 조치를 위해 승격할 수 있는 웜 DR 대기 복제본이 필요하다면 RDS 리전 간 복제본을 사용하십시오.
스트림과 Lambda를 결합한 아키텍처 패턴
스트림과 Lambda를 결합하는 일반적인 아키텍처 패턴은 다음과 같습니다.
- 팬아웃: Lambda가 스트림을 읽고 SNS에 게시하면, SNS가 여러 SQS 대기열로 팬아웃하여 독립적인 소비자가 처리하도록 합니다
- 집계: Lambda가 변경 사항을 누적하고 별도의 DynamoDB 테이블에 집계 합계를 업데이트합니다(예: 일일 주문 수)
- 쓰기 후 캐시: 각 스트림 이벤트가 발생할 때 Lambda가 ElastiCache를 업데이트하여 읽기 요청을 캐시에서 처리할 수 있게 합니다
- 알림: 스트림이 Lambda를 트리거하고, 특정 조건이 변경되면 Lambda가 SES 이메일 또는 SNS 푸시 알림을 전송합니다
DynamoDB Kinesis Data Streams 통합
DynamoDB Streams의 대안으로 항목 수준의 변경 사항을 Amazon Kinesis Data Stream으로 전송할 수 있습니다. 이는 더 긴 보존 기간이 필요할 때(DynamoDB Streams의 기본 보존 기간인 24시간에 비해 최대 1년), 더 많은 소비자가 필요할 때 또는 Kinesis에서 읽는 서비스와 통합할 때 유용합니다.
Kinesis Data Streams 통합은 테이블별로 활성화하며 DynamoDB Streams를 대체하지 않습니다. 두 기능을 동시에 활성화할 수 있습니다. 이는 2021년에 추가된 새로운 기능으로, 사용자 지정 복제 로직 없이 DynamoDB 변경 이벤트 파이프라인을 확장합니다.
# Enable Kinesis Data Streams for a DynamoDB table
aws dynamodb enable-kinesis-streaming-destination \
--table-name Orders \
--stream-arn arn:aws:kinesis:us-east-1:123456789:stream/ddb-changes빠른 확인
이 레슨에서 다룬 AWS Solutions Architect (SAA-C03) 개념에 대한 이해도를 확인해 보세요.
레슨 요약
이 레슨에서는 다음을 배웠습니다. DynamoDB Streams는 항목 수준의 변경 사항을 24시간 동안 캡처하고 이벤트 기반 처리에 Lambda를 통합합니다. 또한 Global Tables는 최종 기록 우선 충돌 해결 방식을 사용해 다중 활성 다중 Region 복제를 제공하며, Kinesis Data Streams 통합은 24시간 스트림 기간을 넘어 보존 기간을 확장합니다. 다음에는 Route 53 호스팅 영역과 DNS 레코드 유형을 살펴보겠습니다.
자주 묻는 질문
“DynamoDB Streams 및 전역 테이블” 강의는 무료인가요?
네 — “DynamoDB Streams 및 전역 테이블” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
“DynamoDB Streams 및 전역 테이블”에서 뭘 배우나요?
Streams로 항목 수준의 변경 사항을 실시간 처리하고, 전 세계에서 지연 시간이 짧은 읽기를 지원하도록 전역 테이블로 여러 리전에 데이터를 복제합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“DynamoDB Streams 및 전역 테이블” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 테이블, 항목 및 기본 키
- 프로비저닝된 용량과 온디맨드 용량
- 전역 보조 인덱스 및 로컬 보조 인덱스
- DynamoDB Streams 및 전역 테이블