기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
GAMESUS01-BP02 수명 주기 정책 또는 TTL 만료를 사용하여 불필요한 게임 사용자 데이터, 로그 파일 또는 더 이상 사용되지 않는 자산 삭제
태그와 데이터 유형을 사용하여 수명 주기 정책 또는 TTL을 생성하여 데이터를 아카이브 스토리지로 이동하거나 서비스에서 완전히 제거할 수 있습니다. 여기에는 임시 구성, 만료된 아카이브된 콘텐츠 및 더 이상 필요하지 않은 기록 로그가 포함될 수 있습니다. 대부분의 서비스는 태그 지정을 지원합니다.
이 모범 사례가 확립되지 않을 경우 노출되는 위험 수준: 높음
구현 지침
S3에 저장된 데이터의 경우 수명 주기 정책을 사용하여 데이터를 자주 액세스하지 않는 스토리지 계층 및 아카이브 계층으로 이동할 수 있습니다. S3 수명 주기 구성에서, 객체를 한 스토리지 클래스에서 다른 스토리지 클래스로 전환하여 스토리지 비용을 절약하도록 규칙을 정의할 수 있습니다. 객체의 액세스 패턴을 모르거나 시간이 지남에 따라 액세스 패턴이 변하면 자동 비용 절감을 위해 객체를 S3 Intelligent-Tiering 스토리지 클래스로 전환할 수 있습니다.
Amazon S3은 다음 다이어그램과 같이 스토리지 클래스 간 전환을 위한 폭포형(Waterfall) 모델을 지원합니다.
S3 수명 주기 구성에 이전 작업을 추가하여 Amazon S3가 수명 주기 종료 시 객체를 삭제하도록 지시할 수 있습니다. 수명 주기 구성에 따라 객체의 수명이 종료되면 Amazon S3는 버킷이 있는 S3 버전 관리 상태를 기반으로 만료 작업을 수행합니다.
-
버전이 지정되지 않은 버킷: Amazon S3는 제거를 위해 객체를 대기열에 넣고 비동기적으로 제거하여 객체를 영구적으로 제거합니다.
-
버전 관리가 활성화된 버킷: 현재 객체 버전이 삭제 마커가 아닌 경우 Amazon S3는 고유한 버전 ID로 삭제 마커를 추가합니다. 이를 통해 최신 버전이 최신이 아닌 버전이 되고 삭제 마커가 최신 버전이 됩니다.
-
버전 관리가 일시 중지된 버킷: Amazon S3는 null을 버전 ID로 사용하여 삭제 마커를 생성합니다. 이 삭제 마커는 객체를 효과적으로 삭제하는 버전 계층 구조에서 객체 버전을 null 버전 ID로 대체합니다.
-
버킷에 수명 주기 구성을 추가할 경우 구성 규칙이 기존 객체는 물론 나중에 추가하는 객체에도 적용됩니다. 예를 들어 특정 접두사가 있는 객체가 생성 후 30일 후에 만료되도록 하는 만료 작업으로 오늘 수명 주기 구성 규칙을 추가하는 경우 Amazon S3는 30일 이상 경과하고 지정된 접두사가 있는 기존 객체를 제거하기 위해 대기열에 넣습니다.
DynamoDB용 Time To Live(TTL)는 더 이상 관련이 없는 항목을 삭제하기 위한 비용 효율적인 방법입니다. TTL을 사용하면 항목이 더 이상 필요하지 않은 시점을 나타내는 항목별 만료 타임스탬프를 정의할 수 있습니다. DynamoDB는 쓰기 처리량을 소비하지 않고 만료 후 며칠 내에 만료된 항목을 자동으로 삭제합니다.
-
TTL을 사용하려면 먼저 테이블에서 TTL을 활성화한 다음 TTL 만료 타임스탬프를 저장할 특정 속성을 정의해야 합니다. 타임스탬프는 초 단위로 Unix epoch 시간 형식
으로 저장해야 합니다. 항목이 생성되거나 업데이트될 때마다 만료 시간을 계산하여 TTL 속성에 저장할 수 있습니다. -
유효하고 만료된 TTL 속성이 있는 항목은 일반적으로 만료 후 며칠 이내에 시스템에서 삭제할 수 있습니다. 삭제 보류 중인 만료된 항목은 여전히 TTL 속성 변경 또는 제거 등의 작업으로 업데이트할 수 있습니다. 만료된 항목을 업데이트할 때는 조건식을 사용하여 해당 항목이 이후에 삭제되지 않도록 하는 것이 좋습니다. 필터 표현식을 사용하여 스캔 및 쿼리 결과에서 만료된 항목을 제거합니다.
-
삭제된 항목은 일반적인 삭제 작업을 통해 삭제된 항목과 비슷하게 작동합니다. 삭제되면 다른 삭제 작업과 마찬가지로 항목이 사용자 삭제 대신 서비스 삭제로 DynamoDB Streams로 이동하고 로컬 보조 인덱스 및 글로벌 보조 인덱스에서 제거됩니다.
ElastiCache for Redis를 사용하면 TTLs 또는 캐시된 키의 만료를 사용하여 캐시된 데이터의 최신성을 제어할 수 있습니다. 설정된 시간이 지나면 키가 캐시에서 삭제되고 업데이트된 데이터에 도달하는 동시에 오리진 데이터 스토어에 대한 액세스가 필요합니다.
-
두 가지 원칙에 따라 적용할 적절한 TTLs과 구현할 캐싱 패턴 유형이 결정됩니다. 먼저 기본 데이터의 변경 속도를 이해하는 것이 중요합니다. 둘째, 업데이트된 데이터 대신 오래된 데이터가 애플리케이션에 반환될 위험을 평가하는 것이 중요합니다.
-
동적 데이터가 자주 변경되면 기본 데이터베이스의 변경 속도와 일치하는 변경 속도로 데이터를 만료시키는 더 낮은 TTLs을 적용할 수 있습니다. 이렇게 하면 데이터베이스 요청을 오프로드하기 위한 버퍼를 계속 제공하면서 오래된 데이터를 반환할 위험이 줄어듭니다.
-
또한 몇 분 또는 몇 초 동안만 데이터를 캐싱하고 지속 시간이 길더라도 캐시된 키에 TTLs을 적절하게 적용하면 성능이 향상되고 게임에서 전반적으로 더 나은 플레이어 경험을 얻을 수 있다는 점을 인식해야 합니다.
구현 단계
-
Amazon S3 수명 주기 정책을 사용하여 객체를 자주 액세스하지 않는 액세스 또는 아카이브 계층으로 전환하고 수명 주기 규칙에 따라 불필요한 객체를 삭제하도록 만료 작업을 구성합니다.
-
DynamoDB 테이블에서 TTL(Time to Live)을 활성화하여 쓰기 처리량을 소비하지 않고 만료된 항목을 자동으로 삭제하고 만료 타임스탬프를 Unix epoch 시간으로 정의합니다.
-
데이터 변경 속도 및 오래된 데이터에 대한 위험 허용치를 기반으로 ElastiCache 키에 적합한 TTLs을 설정하여 캐시된 데이터 신선도를 높이고 플레이어 경험을 개선합니다.