AWS CDK 및 DynamoDB: 이 하나의 구성 라인은 수백 달러의 비용이 듭니다.

안녕하세요, 서버리스 애호가와 애호가 여러분 😶‍🌫️! 팀에 수백 달러의 비용을 들이는 불행한 실수 🙊를 한 적이 있습니까? 그 이상? 안 돼요. 수천!? 먼저, 이런 일을 겪게 해서 죄송합니다. 둘째, 나는 당신이 어떻게 느끼는지 압니다.

TL;DR



AWS Cloud Development Kit을 사용하여 DynamoDB 테이블을 프로비저닝할 때 CDK는 요청당 지불 대신 기본적으로 the billing mode as "Provisioned"을 설정합니다. 따라서 Dynamodb는 본질적으로 진정한 서버리스가 아닙니다. 스케일 투 제로를 기억하십니까?

빠른 수정: AWS Dynamodb 테이블을 인스턴스화할 때 청구 모드를 "요청당 지불"로 명시적으로 설정해야 합니다. 장난감 더미를 가지고 놀고 있다면 removal policy을 "destroy"로 설정할 수도 있습니다. 즉, 스택을 제거하면 결과적으로 테이블이 삭제됩니다(프로덕션에서 이 설정을 사용하는 것은 나쁜 생각일 수 있음).

// code/dynamodb-cdk.ts

import { App, RemovalPolicy, Stack } from '@aws-cdk/core';
import { AttributeType, Table, BillingMode } from '@aws-cdk/aws-dynamodb';

const app = new App();
const stack = new Stack(app);

const table = new Table(stack, 'MyTable', {
  partitionKey: { name: 'PK', type: AttributeType.STRING },
  sortKey: { name: 'SK', type: AttributeType.STRING },
  billingMode: BillingMode.PAY_PER_REQUEST,
  removalPolicy: RemovalPolicy.DESTROY,
});


소프트웨어 엔지니어로서 서버리스에 익숙해지기



주니어 개발자로서 저의 첫 번째 임무 중 하나는 "서버리스 101 과정"설계를 돕는 것이었습니다. 우리 팀의 미래 신인들이 클라우드 네이티브 개념에 빠르게 익숙해질 수 있도록 돕는 것이 목표였습니다. 서버리스의 기본 사항인 람다, API 게이트웨이, IAM 역할 및 dynamodb 테이블을 통해 AWS를 클라우드 공급자로 하는 간결한 자습서를 만들었습니다. 결과에 매우 만족했습니다! 초보자는 마침내 FaaS(Functions-as-a-Service) 및 클라우드 네이티브 관리 데이터베이스와 같은 복잡하고 처음에는 무서운 개념이 있는 샌드박스 환경에서 플레이할 수 있습니다!

나는 자부심을 느꼈다. 우리는 모든 새로운 개발자가 장난감 스택을 배포하는 작은 프로토콜을 가지고 있었습니다. 그것은 그 목적을 잘 수행했고 서버리스 초보자는 그것을 좋아했습니다.

저는 서버리스 기술의 scale-to-zero 속성을 당연하게 여겼습니다 🥺



확실히, TL;DR과 작은 배경 이야기를 읽으면 내가 이 전체 호언장담으로 어디로 가는지 알기 시작합니다.

우리 팀의 각 신입 엔지니어는 장난감 스택을 배포하여 서버리스 및 AWS에 대해 배웠습니다. 서버리스 자습서에서는 AWS CDK를 사용합니다. 가볍게 유지하기 위해 대부분 기본 설정을 사용했습니다. 이러한 설정 중에는 "프로비저닝된"청구 모드와 "유지"제거 정책이 숨겨져 있습니다.

단순화하기 위해 DynamoDB "프로비저닝된"청구 모드를 사용하여 AWS는 플로어 스토리지 공간과 최소 읽기 용량 단위(RCU) 및 쓰기 용량 단위(WCU)를 프로비저닝합니다. 그런 다음 AWS는 사용량에 관계없이 요금을 청구합니다.

DynamoDB의 경우 테이블을 전혀 사용하지 않는 경우에도 "프로비저닝"청구 모드 비용이 테이블당 월 $11(미국 리전)인 것으로 나타났습니다. 또한 스택이 제거될 때 "보유"제거 정책은 DynamoDB 테이블이 스택과 함께 삭제되는 것을 방지합니다.

각 신인은 샌드박스 스택을 배포합니다. 스토리지 리소스가 프로비저닝됩니다. 즉, 테이블을 사용하지 않더라도 테이블 비용이 바닥입니다. 테이블은 삭제되지 않습니다. 네, 잠재적으로 바닥이 없는 구덩이가 만들어졌습니다.

마무리: 매달 서버리스 비용을 확인하고 서버리스의 저렴한 가격을 당연하게 여기지 마십시오.



서버리스는 서버리스가 아닌 기술 스택에 비해 저렴합니다. 훨씬 저렴합니다. 서버리스 튜토리얼의 일부로 배포된 스택이 매달 수백 달러의 비용이 들었을 때 관리자는 조금 놀란 것 같았습니다!

고맙게도 ✨, 팀원들이 몇 달 후에 오류를 발견하여 수천 달러(그리고 많은 전기 💚)를 낭비하지 않도록 제 oopsie를 제한했습니다.

좋은 웹페이지 즐겨찾기