임의의 리전에 쓰기(기본 리전 없음) - AWS 규범적 지침

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

임의의 리전에 쓰기(기본 리전 없음)

모든 리전에 쓰기 모드는 완전 활성 모드이며 쓰기 작업이 발생할 수 있는 위치에 제한을 두지 않습니다. 모든 지역은 언제든지 쓰기 요청을 수락할 수 있습니다. 가장 간단한 모드이지만 일부 유형의 응용 프로그램에서만 사용할 수 있습니다. 모든 쓰기 작업이 무력한 경우에 적합합니다. 중복성은 사용자가 연락처 데이터를 업데이트하는 경우와 같이 지역 간의 동시 또는 반복 쓰기 작업이 충돌하지 않도록 안전하게 반복 가능함을 의미합니다. 또한 모든 쓰기 작업이 확정적 기본 키 아래에 고유한 삽입이 이루어지는 추가 전용 데이터세트에서도 잘 작동하는데, 이는 등등성이 있는 특수한 경우입니다. 마지막으로, 이 모드는 쓰기 작업의 충돌 위험이 허용되는 경우에 적합합니다.

기본 쓰기 모드 없음

임의의 리전에 쓰기 모드는 가장 간단하게 구현할 수 있는 아키텍처입니다. 어느 리전이나 언제든지 쓰기 대상이 될 수 있으므로 라우팅이 더 쉽습니다. 최근의 모든 쓰기 작업을 보조 리전에 원하는 횟수만큼 재생할 수 있으므로 페일오버가 더 쉽습니다. 가능하면 이 쓰기 모드에 맞춰 설계해야 합니다.

예를 들어, 여러 비디오 스트리밍 서비스는 북마크, 리뷰, 시청 상태 플래그 등을 추적하기 위해 글로벌 테이블을 사용합니다. 이러한 배포에서는 모든 쓰기 작업이 동일한지 확인하는 한 모든 리전에 쓰기 모드를 사용할 수 있습니다. 새 최신 시간 코드 설정, 새 리뷰 할당, 새 시계 상태 설정 등 모든 업데이트가 사용자의 새 상태를 직접 할당하고 항목의 다음 올바른 값이 현재 값에 좌우되지 않는 경우가 이에 해당합니다. 우연히 사용자의 쓰기 요청이 다른 지역으로 라우팅되는 경우 마지막 쓰기 작업이 지속되고 글로벌 상태는 마지막 할당에 따라 해결됩니다. 이 모드에서의 읽기 작업은 결국 일관성이 유지되고 최신 ReplicationLatency 값만큼 지연됩니다.

또 다른 예로 한 금융 서비스 회사는 시스템의 일부로 글로벌 테이블을 사용하여 각 고객의 직불 카드 구매 현황을 지속적으로 집계하여 해당 고객의 캐시백 보상을 계산합니다. 신규 거래는 전 세계에서 유입되어 여러 리전으로 이동합니다. 이 회사는 세심한 재설계를 통해 모든 리전 모드에 쓰기 기능을 사용할 수 있었습니다. 초기 설계 스케치에서는 고객당 하나의 RunningBalance 항목으로 유지되었습니다. 고객 조치로 밸런스가 ADD 표현식으로 업데이트되었는데, 이는 정확한 새 값이 현재 값에 따라 달라지기 때문입니다. 서로 다른 리전에서 거의 같은 시간에 동일한 밸런스에 대한 쓰기 작업이 두 번 발생하면 밸런스가 동기화되지 않았습니다. 재설계에서는 추가 전용 워크플로우가 있는 원장처럼 작동하는 이벤트 스트리밍을 사용합니다. 각 고객 작업은 해당 고객을 위해 유지 관리되는 항목 컬렉션에 새 항목을 추가합니다. (항목 컬렉션은 기본 키를 공유하지만 정렬 키가 다른 항목 집합입니다.) 각 쓰기 작업은 고객 ID를 파티션 키로 사용하고 트랜잭션 ID를 정렬 키로 사용하는 즉석 삽입입니다. 이 설계에서는 항목을 가져온 다음 클라이언트측 계산을 수행해야 Query 하기 때문에 밸런스 계산이 더 어려워지지만 모든 쓰기 작업이 중복되고 라우팅과 페일오버가 크게 단순화됩니다. (이에 대해서는 이 설명서 후반부의 섹션을 자세히 설명합니다.)

세 번째 예로는 온라인 광고 게재 서비스를 제공하는 회사가 있습니다. 이 회사는 데이터 손실 위험이 낮으면 모든 지역 모드에 대한 쓰기 설계의 단순화를 달성할 수 있다고 판단했습니다. 광고를 게재할 때 몇 밀리초 안에 충분한 메타데이터를 검색하여 어떤 광고를 게재할지 결정한 다음 광고 노출을 기록하여 동일한 광고를 곧 반복하지 않도록 할 수 있습니다. 글로벌 테이블을 사용하여 전 세계 최종 사용자에게 지연 시간이 짧은 읽기 작업과 지연 시간이 짧은 쓰기 작업을 모두 제공합니다. 사용자의 모든 광고 노출을 단일 항목 내에 기록하며, 이 항목은 증가 목록으로 표시됩니다. 항목 컬렉션에 추가하는 대신 하나의 항목을 사용하므로 삭제 작업에 대한 비용을 지불하지 않고도 각 쓰기 작업의 일부로 오래된 광고 노출을 제거할 수 있습니다. 이 쓰기 작업은 불완전하지 않습니다. 동일한 최종 사용자가 거의 동시에 여러 지역에서 게재되는 광고를 보게 되면 하나의 광고 노출에 대한 하나의 쓰기 작업이 다른 쓰기 작업을 덮어쓸 수 있습니다. 위험은 사용자가 때때로 반복되는 광고를 보게 될 수 있다는 것입니다. 그들은 이것이 받아들일 수 있다고 결정했습니다.