AWS CDK и DynamoDB: одна строка конфигурации обходится вам в сотни долларов

Привет, поклонники и поклонницы serverless 😶🌫️! Вы когда-нибудь совершали досадную ошибку 🙊, которая стоила вашей команде сотни долларов? А еще больше? Не может быть. Тысячи!? Во-первых, мне жаль, что вы через это прошли. Во-вторых, я знаю, что вы чувствуете.

TL;DR

При использовании AWS Cloud Development Kit для инициализации таблицы DynamoDB, CDK по умолчанию устанавливает режим тарификации «Provisioned» вместо pay-per-request. Таким образом, Dynamodb по сути перестает быть по-настоящему бессерверной — помните про scale-to-zero?

Быстрое решение: при инстанцировании таблицы AWS Dynamodb убедитесь, что вы явно установили режим тарификации «pay-per-request». Если вы играете с игрушечным стеком, вы также можете установить политику удаления на «уничтожение». Это означает, что если вы удалите свой стек, таблица будет удалена (вероятно, это плохая идея для использования этой настройки в производстве).

// 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,
});
Вход в полноэкранный режим Выход из полноэкранного режима

Знакомство с serverless в качестве инженера-программиста

Одним из моих первых заданий в качестве младшего разработчика была помощь в разработке «курса serverless 101». Мы стремились помочь будущим новичкам в моей команде быстро освоить концепции облачных технологий. Мы создали краткий учебник, в котором рассматривались основы serverless: ламбды, шлюз API, роли IAM и таблицы dynamodb — с AWS в качестве нашего облачного провайдера. Я был очень доволен результатом! Новички наконец-то смогли поиграть в песочнице со сложными — и пугающими поначалу — концепциями, такими как функции как сервис (FaaS) и облачные управляемые базы данных!

Я чувствовал гордость. У нас был небольшой протокол, в котором каждый новый разработчик развертывал игрушечный стек. Он хорошо справлялся со своей задачей, и новичкам serverless это нравилось.

Раньше я воспринимал свойство бессерверных технологий масштабироваться до нуля как должное 🥺.

Конечно, если вы прочитали TL;DR и небольшую предысторию, вы начинаете понимать, к чему я веду всю эту тираду.

Каждый новый инженер нашей команды развернул игрушечный стек, чтобы узнать о serverless и AWS. В учебнике по serverless используется AWS CDK. Чтобы сохранить его легким, мы в основном использовали настройки по умолчанию. Среди этих настроек скрывались режим биллинга «provisioned» и политика удаления «retain».

Для упрощения, в режиме тарификации DynamoDB «provisioned», AWS предоставляет минимальное пространство для хранения, а также минимальное количество единиц емкости для чтения (RCU) и единиц емкости для записи (WCU). Затем AWS взимает с вас плату за это, независимо от использования.

Для DynamoDB я обнаружил, что режим тарификации «provision» стоит около $11/месяц за таблицу (в регионах США), даже если вы вообще не используете таблицу. Более того, когда стек удаляется, политика удаления «retain» предотвращает удаление таблицы DynamoDB вместе со стеком.

Каждый новичок развертывает стек в песочнице. Ресурсы хранения предоставляются, т.е. таблица стоит пол суммы, даже если мы ее не используем. Таблицы не могут быть удалены. Да, создана потенциально бездонная яма.

Подводя итог: проверяйте свои расходы на serverless каждый месяц и не принимайте низкие цены на serverless как должное.

Бессерверные технологии недороги по сравнению с бессерверными технологическими стеками. На порядок дешевле. Мой менеджер был немного удивлен, когда стеки, развернутые в рамках нашего учебника по бессерверным технологиям, обходились нам в сотни в месяц!

К счастью ✨, мои товарищи по команде заметили ошибку через пару месяцев, что позволило мне не тратить тысячи долларов (и много электричества 💚).

Оцените статью
devanswers.ru
Добавить комментарий