온디맨드 용량에 대한 DynamoDB 테이블의 비용 추정 - AWS 권장 가이드

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

온디맨드 용량에 대한 DynamoDB 테이블의 비용 추정

환경: 프로덕션

기술: 데이터베이스, 클라우드 네이티브, 서버리스, 비용 관리

AWS 서비스: Amazon DynamoDB

요약

Amazon DynamoDB는 페타바이트 규모에서도 10밀리 초 미만의 지연 시간을 지원하는 NoSQL 트랜잭션 데이터베이스입니다. 이 Amazon Web Services(AWS) 서버리스 제품은 일관된 성능과 확장성으로 인기를 얻고 있습니다.  기본 인프라의 프로비저닝이 필요하지 않습니다. 단일 테이블은 페타바이트까지 확장 가능합니다.

온디맨드 용량 모드를 이용하면 애플리케이션이 테이블에서 수행하는 데이터 읽기 및 쓰기에 대해 요청당 요금을 지불합니다. AWS 요금은 한 달 동안 누적된 읽기 요청 단위(RRU) 및 쓰기 요청 단위(WRU)를 기준으로 합니다. DynamoDB는 한 달 내내 지속적으로 테이블 크기를 모니터링하여 스토리지 요금을 결정합니다. point-in-time-recovery (PITR) 를 통한 연속 백업을 지원합니다. DynamoDB는 한 달 내내 지속적으로 PITR 지원 테이블 크기를 모니터링하여 백업 요금을 결정합니다.

프로젝트의 DynamoDB 비용을 추정할 때 제품 수명 주기의 여러 단계에서 소비되는 RRU, WRU 및 스토리지의 양을 계산하는 것이 중요합니다. 대략적인 비용 산정을 위해 AWS 요금 계산기를 사용할 수 있지만 테이블에 필요한 RRU, WRU 및 스토리지 요구 사항의 대략적인 수를 제공해야 합니다. 프로젝트 초기에는 이러한 수치를 예측하기 어려울 수 있습니다. AWS 요금 계산기는 데이터 증가율이나 항목 크기를 고려하지 않으며, 기본 테이블과 글로벌 보조 인덱스(GSI)의 읽기 및 쓰기 수를 별도로 고려하지 않습니다. AWS 요금 계산기를 사용하려면 WRU, RRU 및 스토리지 크기에 대한 모든 측면을 추정하여 예상 비용을 산출해야 합니다.

이 패턴은 온디맨드 용량 모드에서 쓰기, 읽기, 스토리지, 백업 및 복구 비용과 같은 기본 DynamoDB 비용 요소를 추정하는 메커니즘과 재사용 가능한 Microsoft Excel 템플릿을 제공합니다. AWS 요금 계산기보다 더 세분화되어 있으며 기본 테이블과 GSI 요구 사항을 독립적으로 고려합니다. 또한 월별 품목 데이터 증가율을 고려하여 3년간의 비용을 예측합니다.

사전 조건 및 제한 사항

사전 조건

  • DynamoDB 및 DynamoDB 데이터 모델 설계에 대한 기본 지식

  • DynamoDB 요금, WRU, RRU, 스토리지, 백업 및 복구에 대한 기본 지식(자세한 내용은 온디맨드 용량 요금 참조)

  • DynamoDB의 데이터, 데이터 모델, 항목 크기에 대한 지식

  • DynamoDB GSI에 대한 지식

제한 사항

  • 템플릿은 대략적인 계산을 제공하지만 모든 구성에 적합하지는 않습니다. 더 정확한 추정치를 얻으려면 기본 표와 GSI에 있는 각 항목의 개별 크기를 측정해야 합니다.

  • 더 정확한 추정을 위해서는 월별 각 항목에 대한 예상 쓰기(삽입, 업데이트, 삭제) 및 읽기 횟수를 고려해야 합니다.

  • 이 패턴은 고정된 데이터 증가 가정을 기반으로 향후 몇 년간 쓰기, 읽기, 스토리지, 백업 및 복구 비용만 추정하는 것을 지원합니다.

도구

서비스

  • Amazon DynamoDB는 빠르고 예측 가능하고 확장 가능한 성능을 제공하는 완전 관리형 NoSQL 데이터베이스 서비스입니다.

기타 도구

  • AWS 요금 계산기는 AWS 사용 사례에 대한 추정치를 생성하는 데 사용할 수 있는 웹 기반 계획 도구입니다.

모범 사례

비용을 낮게 유지하려면 다음과 같은 DynamoDB 설계 모범 사례를 고려해 보세요.

  • 파티션 키 설계-카디널리티가 높은 파티션 키를 사용하여 로드를 균등하게 분산합니다.

  • 인접 목록 디자인 패턴 - 이 디자인 패턴을 관리 one-to-many 및 many-to-many 관계에 사용합니다.

  • 스파스 인덱스 - GSI에 스파스 인덱스를 사용합니다. GSI를 생성할 때는 파티션 키와 정렬 키(선택 사항)를 지정해야 합니다. 해당 GSI 파티션 키를 포함하는 기본 테이블의 항목만 스파스 인덱스에 나타납니다. 이는 GSI를 더 작게 유지하는 데 도움이 됩니다.

  • 인덱스 오버로딩 - 다양한 유형의 항목을 인덱싱하는 데 동일한 GSI를 사용합니다.

  • GSI 쓰기 샤드 - 효율적이고 빠른 쿼리를 위해 파티션 전체에 데이터를 현명하게 샤드합니다.

  • 대용량 항목 - 테이블 내에 메타데이터만 저장하고, Amazon S3에 blob을 저장하고, DynamoDB에 참조를 유지합니다. 대용량 항목을 여러 항목으로 나누고 정렬 키를 사용하여 효율적으로 인덱싱합니다.

추가 설계 모범 사례는 Amazon DynamoDB 개발자 안내서를 참조하세요.

에픽

작업설명필요한 기술
항목의 크기를 확인합니다.
  1. 테이블에 저장할 항목 유형의 수를 확인합니다.

  2. 각 항목의 크기를 킬로바이트 단위로 계산하려면 각 속성의 키와 값 크기를 더합니다.

  3. 기본 테이블과 각 GSI의 항목 크기를 계산합니다.

데이터 엔지니어
쓰기 비용을 추정합니다.

온디맨드 용량 모드에서 쓰기 비용을 추정하려면 먼저 한 달에 소비될 WRU 수를 측정해야 합니다. 이를 위해서는 다음 요소를 고려해야 합니다.

  • 한 달 간 각 항목에 대한 생성, 업데이트 및 삭제 작업 수.

  • 사용 가능한 GSI 수. 각 지수를 개별적으로 고려합니다. 

    • 인덱스 항목의 평균 크기

    • 인덱스의 동기화 횟수

  • 매달 테이블에 새로 추가되는 항목(예: 구성 요소 또는 제품)은 몇 개입니까? 추가되는 항목의 수는 매달 다를 수 있지만 비즈니스 사례를 기반으로 평균 증가율을 가정할 수 있습니다. 

자세한 내용은 추가 정보 섹션을 참조하세요.

데이터 엔지니어
읽기 비용을 추정합니다.

온디맨드 모드에서 읽기 비용을 추정하려면 먼저 한 달에 소비될 RRU 수를 측정해야 합니다. 이를 위해서는 다음 요소를 고려해야 합니다. 

  • 사용 가능한 GSI 수. 각 지수를 개별적으로 고려합니다. 

    • 인덱스 항목의 평균 크기

  • 제품당 월별 평균 읽기 횟수.

  • DynamoDB 테이블에서 사용 가능한 총 항목(구성 요소 또는 제품)의 수입니다.

데이터 엔지니어, 앱 개발자
스토리지 크기 및 비용을 추정합니다.

먼저 표의 항목 크기를 기준으로 월 평균 스토리지 요구량을 추정합니다. 그런 다음 스토리지 크기에 AWS 리전의 GB당 스토리지 가격을 곱하여 스토리지 비용을 계산합니다. 

쓰기 비용 추정을 위한 데이터를 이미 입력한 경우 스토리지 크기를 계산할 때 다시 입력할 필요가 없습니다. 그렇지 않으면 스토리지 크기를 추정하기 위해 다음 요소를 고려해야 합니다. 

  • 테이블 디자인에 따른 모듈(제품)의 데이터 항목 수.

  • 평균 항목 크기(킬로바이트).

  • 사용 가능한 GSI 수. 각 지수를 개별적으로 고려합니다. 

    • 인덱스 항목의 평균 크기

  • 매달 테이블에 새로 추가되는 제품은 몇 개입니까? 추가되는 제품의 수는 매달 다를 수 있지만 비즈니스 사례를 기반으로 평균 증가율을 가정할 수 있습니다. 이 예시에서는 매월 평균 1천만 개 새 제품을 사용합니다.

데이터 엔지니어
작업설명필요한 기술
첨부 파일 섹션에서 Excel 템플릿을 다운로드하여 사용 사례 표에 맞게 조정합니다.
  1. Excel 템플릿을 다운로드합니다.

  2. 테이블 디자인에 따라 비즈니스 모듈과 GSI를 조정합니다.

데이터 엔지니어
Excel 템플릿에 정보를 입력합니다.
  1. 시트에서 항목 정보를 업데이트합니다. 주황색 셀의 데이터만 업데이트합니다.

  2. 객체 수 조정: 매월 테이블에 추가할 수 있는 개수는 얼마인가요?

  3. AWS 리전의 백만 개당 WRU 및 RRU 가격을 업데이트합니다.

  4. AWS 리전의 월별 GB당 스토리지 및 백업 가격을 업데이트합니다.

  5. AWS 리전의 GB당 복구 가격을 업데이트합니다.

템플릿에는 정보, 메타데이터, 관계라는 세 가지 항목 또는 엔티티가 있습니다. 두 개의 GSI가 있습니다. 사용 사례에 따라 더 많은 항목이 필요한 경우 새 행을 생성합니다. GSI가 더 필요한 경우 기존 GSI 블록을 복사한 다음 붙여넣어 필요한 만큼 GSI 블록을 생성합니다. 그런 다음 합계 및 총계 열 계산을 조정합니다.

데이터 엔지니어

관련 리소스

참조

가이드 및 패턴

추가 정보

작성 비용 계산 예제

DynamoDB 데이터 모델 설계에서는 한 제품에 대해 세 개의 항목이 표시되며 평균 항목 크기는 4KB입니다. DynamoDB 기본 테이블에 새 제품을 추가하면 항목 수 * (항목 크기/1KB 쓰기 단위) = 3 * (4/1) = 12WRU를 소비합니다. 이 예제에서 1KB를 쓰는 경우 제품은 1WRU를 소비합니다. 

읽기 비용 계산 예제

RRU 추정치를 구하려면 매달 각 항목을 읽는 횟수의 평균을 고려합니다. 예를 들어 정보 항목은 한 달에 평균 10회, 메타데이터 항목은 2회, 관계 항목은 5회 읽습니다. 예제 템플릿에서 모든 구성 요소의 총 RRU는 매월 생성되는 새 구성 요소 수 * 월별 구성 요소당 RRU = 1천만 * 17 RRU = 매월 1억 7천만 RRU입니다.

매달 새로운 항목(구성 요소 또는 제품)이 추가되며 총 제품 수는 시간이 지남에 따라 늘어납니다. 따라서 RRU 요구 사항도 시간이 지남에 따라 증가합니다.

  • 첫 달 RRU 소비량은 1억 7천만입니다.

  • 두 번째 달의 RRU 소비량은 2 * 1억 7천만 = 3억 4천만이 됩니다.

  • 세 번째 달의 RRU 소비량은 3 * 1억 7천만 = 5억 1천만이 됩니다.

다음 그래프는 월별 RRU 소비량과 비용 예측을 보여줍니다.

그래프 내의 가격은 설명을 돕기 위한 것입니다. 사용 사례에 대한 정확한 예측을 생성하려면 AWS 요금 페이지를 확인하고 Excel 시트에서 해당 가격을 사용합니다.

스토리지, 백업 및 복구 비용 계산 예제

DynamoDB 스토리지, 백업, 복원은 모두 서로 연결되어 있습니다. 백업은 스토리지와 직접 연결되고 복구는 백업 크기와 직접 연결됩니다. 테이블 크기가 커지면 그에 따라 해당 스토리지, 백업 및 복원 비용도 증가합니다.

스토리지 크기 및 비용

스토리지 비용은 데이터 증가율에 따라 시간이 지나면서 증가합니다. 예를 들어 기본 테이블과 GSI에 있는 구성 요소 또는 제품의 평균 크기가 11KB이고 데이터베이스 테이블에 매달 1천만 개의 새 제품이 추가된다고 가정해 보겠습니다. 이 경우 DynamoDB 테이블 크기가 매월 (11KB * 1천만)/1024/1024 = 105GB씩 늘어납니다. 첫 번째 달에는 테이블 스토리지 크기가 105GB이고, 두 번째 달에는 105 + 105 = 210GB가 되는 식입니다.

  • 첫 달의 스토리지 비용은 AWS 리전의 GB당 105GB * 스토리지 요금이 부과됩니다. 

  • 두 번째 달의 스토리지 비용은 해당 리전의 GB당 210GB * 스토리지 요금이 부과됩니다.

  • 세 번째 달의 스토리지 비용은 해당 리전의 GB당 315GB * 스토리지 요금이 부과됩니다.

향후 3년간의 스토리지 크기 및 비용은 스토리지 크기 및 예측 섹션을 참조하세요.

백업 비용

백업 비용은 데이터 증가율에 따라 시간이 지나면서 증가합니다. point-in-time-recovery (PITR) 를 사용하여 연속 백업을 켜면 연속 백업 요금은 월별 평균 스토리지 GB를 기준으로 부과됩니다. 월별 평균 백업 크기는 테이블 스토리지 크기와 같지만 실제 크기는 약간 다를 수 있습니다. 매달 새 제품이 추가되므로 시간이 지남에 따라 전체 스토리지 크기와 백업 크기도 커집니다. 예를 들어 첫 달의 평균 백업 크기가 105GB에서 두 번째 달에 210GB로 증가할 수 있습니다.

  • 첫 달의 백업 비용은 AWS 리전의 GB당 월 105GB * 연속 백업 요금입니다. 

  • 두 번째 달의 백업 비용은 해당 리전의 GB당 월 210GB * 연속 백업 요금입니다.

  • 세 번째 달의 백업 비용은 해당 리전의 GB당 월 315GB * 연속 백업 요금입니다.

  • 이런 식으로 계속 진행됩니다.

백업 비용은 스토리지 크기 및 비용 예측 섹션의 그래프에 포함됩니다.

복구 비용

PITR을 활성화한 상태에서 연속 백업을 수행하는 경우 복구 작업 요금은 복원 크기에 따라 달라집니다. 복원할 때마다 기가바이트의 복원된 데이터를 기준으로 비용을 지불합니다. 테이블 크기가 크고 한 달에 여러 번 복원을 수행하면 비용이 많이 듭니다.

복원 비용을 추정하기 위해 이 예에서는 매월 말에 PITR 복구를 1회 수행한다고 가정합니다. 이 예에서는 월별 평균 백업 크기를 해당 월의 복원 데이터 크기로 사용합니다. 첫 달의 평균 백업 크기는 105GB이고, 월말 복구의 경우 복원 데이터 크기는 105GB입니다. 두 번째 달에는 210GB가 되는 식입니다.

복구 비용은 데이터 증가율에 따라 시간이 지나면서 증가합니다.

  • 첫 달의 복구 비용은 AWS 리전의 GB당 105GB * 복원 요금이 부과됩니다. 

  • 두 번째 달의 복구 비용은 해당 리전의 GB당 210GB * 복원 요금이 부과됩니다.

  • 세 번째 달의 복구 비용은 해당 리전의 GB당 315GB * 복원 요금이 부과됩니다.

자세한 내용은 Excel 템플릿의 스토리지, 백업 및 복구 탭과 다음 섹션의 그래프를 참조하세요.

스토리지 크기 및 비용 예측

템플릿에서 실제 청구 가능한 스토리지 크기는 표준 테이블 클래스의 월 25GB 프리 티어를 빼서 계산합니다. 이 시트에는 월별 값으로 구분된 예측 그래프가 포함되어 있습니다.

다음 예제 차트는 향후 36개월의 월별 스토리지 크기(GB), 청구 가능한 스토리지 비용, 온디맨드 백업 비용, 복구 비용을 예측합니다. 모든 비용은 USD로 표시됩니다. 그래프를 보면 스토리지, 백업 및 복구 비용이 스토리지 크기 증가에 비례하여 증가한다는 것을 알 수 있습니다.

그래프에 사용된 가격은 설명을 돕기 위한 것입니다. 사용 사례에 대한 정확한 가격을 생성하려면 AWS 요금 페이지를 확인하고 Excel 템플릿에서 해당 가격을 사용합니다.

첨부

이 문서와 관련된 추가 콘텐츠에 액세스하려면 attachment.zip 파일의 압축을 풉니다.