Amazon Web Services 한국 블로그

Amazon DynamoDB 시간 기반 (TTL) 데이터 관리 기능 출시

많은 AWS 고객들이 Amazon DynamoDB를 잘 활용하고 있습니다. 본 DB 서비스가 제공하는 속도와 유연성을 좋아하고, Ad Tech, Gaming, IoT 분야 등에서, 수 밀리 초 단위의 지연 시간을 원하는 다양한 애플리케이션 구축에 도움이 됩니다.  또한, DynamoDB가 수 테라 바이트 크기의 테이블에 대해 초당 수백만 건의 요청을 처리 할 수 있는 완전 관리형 서버리스(Serverless) 데이터베이스라는 점도 매력적입니다.

DynamoDB 사용자는 데이터 수명이 낮거나 시간이 지남에 따라 접근 빈도가 낮은 데이터를 저장합니다. 대부분 최근 로그인 기록, 평가판 구독 또는 응용 프로그램 통계치를 추적합니다.  또한, 저장 기간에 대한 제약 또는 계약 상의 제한이 있는 데이터를 저장하기도 합니다. 지금까지 이러한 고객은 자체 시간 기반 데이터 관리 기능을 직접 구현했습니다. 대량으로 DynamoDB 항목을 검사한 뒤, 날짜 속성을 확인하며 더 이상 필요하지 않은 항목에 대한 삭제 요청을 실행해야 할 때는 Amazon Elastic Compute Cloud (EC2) 인스턴스를 실행해서 처리해야 했기 때문에, 애플리케이션 비용과 복잡성이 증가했습니다.

신규 시간 기반 (TTL) 데이터 관리 기능
이러한 요구 사항을 해결 하기 위해 오늘 시간 기반(Time to Live) 데이터 처리 기능을 새로 출시합니다. 데이터 아이템의 만료 시간을 항목 속성을 지정하여 테이블별로 본 기능을 활성화 할 수 있습니다.

항목 속성이 지정되고 TTL 관리가 활성화되면 (단일 API 호출이 두 작업 모두를 처리 함) DynamoDB는 만료 된 항목을 찾아 자동으로 삭제합니다. 본 처리 작업은 자동 및 백그라운드에서 수행되며 테이블에 대한 읽기 또는 쓰기 트래픽에는 영향을 주지 않습니다.

DynamoDB 스트림 (자세한 정보는 Sneak Preview – DynamoDB Streams 참조)을 사용하여, 삭제된 항목을 처리하거나 보관할 수 있습니다. 스트림 중 다른 업데이트 레코드처럼 삭제 작업은 24 시간 기준으로 가능합니다. AWS Lambda 및 DynamoDB Triggers를 사용하여 만료 된 항목을 장기 보관용 스토리지로 이동하거나, 다른 테이블을 업데이트 할 수 있습니다.

테이블에 TTL을 사용하고 원하는 속성을 지정하는 방법은 다음과 같습니다.

이 속성은 DynamoDB의 Number 데이터 유형에 있어야 하며 Unix Epoch 시간 시스템 당 초로 해석됩니다.

위 스크린 샷에서 볼 수 있듯이 DynamoDB 스트림을 활성화 할 수 있으며 TTL을 사용할 때 삭제 될 항목의 미리보기를 볼 수 있습니다.

또한, 프로그래밍 코드에서 UpdateTimeToLive 함수를 호출하거나 AWS 명령어 모드 (CLI)에서 update-time-to-liv 명령을 사용할 수 있습니다.

TUNE의 사용 사례
AWS 고객 인 TUNE은 이미 HasOffers 서비스 중에서 본 기능을  잘 활용하고 있습니다.

HasOffers-Dashboard-Phone

HasOffers는 고객이 마케팅 캠페인의 효과를 분석하고  대용량 광고 참여 데이터를  저장하는 기능을 제공합니다. 캠페인에 대한 고객이 정한 시간대가 지나면, 데이터가 더 이상 필요 없으며 삭제 될 수 있습니다. TUNE에서 TTL 기능을 사용하기 전에는 수동으로 이를 식별하여 과거 데이터를 삭제했습니다. 이는 직접 사람이 투여되어 컴퓨팅 리소스를 들여야 하는 일로 DynamoDB 테이블의 처리랑 일부를 사용했습니다.

이제는 각 항목의 만료 시간을 설정하고 나머지는 DynamoDB에 맡기면 됩니다. 불필요한 데이터는  처리량에 영향을 미치지 않으면서도, 자동으로 사라집니다. 결과적으로 TUNE은 85 테라 바이트의 오래된 데이터를 제거 할 수 있었으며 애플리케이션 로직을 단순화하는 동시에 연간 200,000 달러 이상의 비용을 절감했습니다.

추가 정보
TTL을 응용 프로그램에 사용할 때 염두에 두어야 할 몇 가지 사항이 있습니다.

  • TTL 속성 – TTL 속성은 색인화될 수 있지만 JSON 문서 요소가 될 수 없습니다. 이전에 언급했듯이, Number 데이터 유형이 있어야 합니다. 다른 속성과 마찬가지로 IAM을 사용하여 이 속성에 대한 접근 방식을 조절할 수 있습니다. 지정된 TTL 속성이 없는 항목은 삭제 대상이 아닙니다. 잘못된 TTL 값으로 인해 우발적인 삭제가 발생하지 않도록 5 년 이상인 항목은 삭제되지 않습니다.
  • 테이블 적용 내역 – 새 테이블 또는 기존 테이블에 TTL을 적용 할 수 있습니다. 표에 TTL을 사용하는 프로세스는 최대 한 시간이 걸릴 수 있으며 한 번에 하나의 표만 변경할 수 있습니다.
  • 백그라운드 처리 – 스캔 및 삭제는 백그라운드에서 수행되며 프로비저닝 된 처리량에 포함되지 않습니다. 삭제 시간은 만료 된 항목의 수와 특성에 따라 다릅니다. 만료 후 실제 삭제 전에 항목은 테이블에 남아 있으며 읽기 및 검색에 나타납니다.
  • 색인 방식 – 항목은 모든 로컬 보조 색인에서 즉시 제거되고 전역 보조 색인에서는 보통 일관된 방식으로 제거됩니다.
  • 가격 책정 – 내부 스캔 작업 또는 삭제 비용은 없습니다. 항목이 실제로 삭제 될 때까지 저장 비용을 지불하게됩니다.

정식 출시
본 기능은 오늘 부터 바로 사용하실 수 있으며, 자세한 사항은 DynamoDB Time to Live 가이드 문서를 참고하시기 바랍니다.

Jeff;

이 글은 New – Manage DynamoDB Items Using Time to Live (TTL)의 한국어 번역입니다.