한 리전에 쓰기 모드(단일 기본) - AWS 규범적 지침

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

한 리전에 쓰기 모드(단일 기본)

한 리전에 쓰기 모드는 액티브-패시브이며 모든 테이블 쓰기 작업을 단일 활성 리전으로 라우팅합니다. (DynamoDB에는 단일 활성 지역이라는 개념이 없습니다. DynamoDB 외부의 계층이 이를 관리합니다.) 한 지역에 쓰기 모드에서는 쓰기 작업이 한 번에 한 지역에만 흐르도록 하여 쓰기 충돌을 방지합니다. 이 쓰기 모드는 조건식이나 트랜잭션을 사용하려는 경우에 유용합니다. 이러한 표현식은 최신 데이터를 기반으로 행동한다는 사실을 모르는 한 사용할 수 없으므로 모든 쓰기 요청을 최신 데이터가 있는 단일 리전으로 보내야 합니다.

결국 일관된 읽기 작업을 모든 복제본 리전으로 이동하여 지연 시간을 줄일 수 있습니다. 매우 일관된 읽기 작업은 단일 기본 리전으로 이동해야 합니다.

단일 기본 쓰기 모드

나중에 설명하겠지만 지역 장애에 대응하여 활성 지역을 변경해야 하는 경우가 있습니다. 일부 사용자는 follow-the-sun배포 구현과 같은 정기적인 일정에 따라 현재 활성화된 지역을 변경합니다. 이렇게 하면 활동이 가장 많은 지역 (보통 낮이라 이름 붙여짐) 근처에 활성 지역이 배치되어 읽기 및 쓰기 작업 지연 시간이 가장 짧습니다. 또한 지역 변경 코드를 매일 호출하고 재해 복구 전에 제대로 테스트되었는지 확인할 수 있다는 부수적인 이점도 있습니다.

패시브 리전은 DynamoDB가 액티브 리전이 될 경우에만 구축되는 DynamoDB를 둘러싼 축소된 인프라를 유지할 수 있습니다. 이 가이드에서는 파일럿 라이트 및 웜 스탠바이 설계에 대해서는 다루지 않습니다. 자세한 내용은 블로그 게시물인 재해 복구 (DR) 아키텍처AWS, 파트 III: 파일럿 라이트 및 웜 스탠바이에서 읽을 수 있습니다.

지연 시간이 짧고 전역으로 분산된 읽기 작업에 글로벌 테이블을 사용할 때는 한 리전에 쓰기 모드를 사용하는 것이 좋습니다. 전 세계 모든 지역에서 동일한 참조 데이터를 사용할 수 있어야 하는 대형 소셜 미디어 회사를 예로 들 수 있습니다. 데이터를 자주 업데이트하지는 않지만 업데이트할 때는 잠재적인 쓰기 충돌을 피하기 위해 한 지역에만 기록합니다. 읽기 작업은 모든 지역에서 항상 허용됩니다.

또 다른 예로, 앞서 설명한 금융 서비스 회사가 일일 캐시백 계산을 구현했다고 가정해 보겠습니다. 잔액을 계산할 때는 모든 지역에 쓰기 모드를 사용했지만 캐시백 지급액을 추적하려면 한 지역 모드로 쓰기 모드를 사용했습니다. 10달러를 지출할 때마다 1페니씩 보상하고 싶다면 전날의 모든 거래에 Query 대해 총 지출 금액을 계산하고 캐시백 결정을 새 테이블에 기록하고 쿼리된 항목 세트를 삭제하여 소비된 것으로 표시하고 남은 금액을 저장하는 단일 항목으로 교체해야 합니다. 이 작업에는 트랜잭션이 필요하므로 한 지역에 쓰기 모드에서 더 잘 작동합니다. 워크로드가 중복될 가능성이 없는 한 애플리케이션은 동일한 테이블에서도 쓰기 모드를 혼합할 수 있습니다.