Make. Build. Break. Reflect.
912 subscribers
115 photos
1 video
119 links
Полезные советы, всратые истории, странные шутки и заметки на полях от @kruchkov_alexandr
Download Telegram
#aws #aurora #terraform #finops
Материал уровня senior

Мы умеем определять тип инстанса - по нагрузке на CPU/Memory и другим факторам.
Но насколько эффективно мы выбрали Cluster storage configuration Авроры вашего проекта?
Эффективно ли это спустя год или два?
А никто не знает, давайте разбираться.

- сперва пилим Dashboard к нашему существующему кластеру
https://gist.github.com/kruchkov-alexandr/d9335d7927e58d06557b994dc9f194de
- применяем, видим панель в CloudWatch
Сверху у нас панель чтения/записи хранилища, снизу размер базы данных (+снепшоты?).
Разделение нужно из-за разницы масштабов и удобства экспорта.
- выбираем период три месяца и кликаем на трех точках у обоих панелей и выбираем Download as .csv и качаем оба файла
- заходим в cost explorer и экспортируем дату за три месяца по кластеру
- заходим в вашу любимую AI(я спрашивал у клаудии, перплексити и грок3, все платные) и пилим промт нечто типа(можете писать свой, если мой вам кажется тупым):
"Help me decide if we should switch to Amazon Aurora I/O-Optimized. Use the attached billing screenshot/csv, three-month IOPS data from the CSV, and the IOPS/storage graphs to analyze our costs. Calculate our current I/O expenses, compare them to I/O-Optimized costs and check if our I/O costs exceed AWS’s 25% threshold for switching. Look at IOPS and storage trends, then recommend whether to switch, including specific cost figures. I’ve attached all files (billing, CSV, graphs).
based on this article
https://aws.amazon.com/blogs/database/estimate-cost-savings-for-the-amazon-aurora-i-o-optimized-feature-using-amazon-cloudwatch/"

- ждём ответа и все 4 нейронки мне выдали на 95% одинаковый подробнейший расчёт ответ. Вкратце "Переходить пока рано".
- пишем менеджеру/боссу
I've analyzed our infrastructure costs over the last three months billing and IOPS data, to see if switching to Amazon Aurora I/O-Optimized makes sense. Right now, it's not cost-effective. Our I/O costs an average of $******* monthly (************ I/Os at $**** per million). Moving to I/O-Optimized would increase instance costs by ***%, from $******* to $******* - a $******* jump, which is $415.21 more than our current I/O expenses.
Our IOPS trends show peaks up to *** but no major growth, averaging ~** Write and ~**** Read IOPS hourly in February. Storage usage is growing at *** GB/month, but that doesn't impact the I/O-Optimized cost comparison. AWS suggests I/O-Optimized when I/O costs exceed **% of total Aurora spend, but ours ($******) are only **% of the $******* total, so we're below that threshold.
I recommend sticking with our standard configuration for now. We should keep monitoring I/O activity -if it exceeds **** I/Os monthly or I/O costs reach **% of our Aurora spend, we can revisit I/O-Optimized.

Прикладываем все файлы,скрины,расчёты.
- закрываем таску и трекаем время

Всё вышеописанное заняло у меня минут 15, а вот подготовительные работы(чтение про фичу, особенности, лимиты, как считать, написание борды, особенности биллинга и тп) почти половину дня.
* Если не верите ИИ, можете пересчитать вручную🐒

Дополнительные полезные ссылки(а вдруг вы мне не верите):
- анонс фичи
https://aws.amazon.com/about-aws/whats-new/2023/05/amazon-aurora-i-o-optimized/
- обзор менеджер уровня
https://aws.amazon.com/awstv/watch/b9bfc040ac5/
- пример расчётов (там руками считают, без ИИ)
https://aws.amazon.com/blogs/database/estimate-cost-savings-for-the-amazon-aurora-i-o-optimized-feature-using-amazon-cloudwatch/
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8😁1
#aws #azure #finops

Не стыдно.

А вот совершенно не стыдно за каждый чих клянчить/требовать деньги обратно у клауд операторов, если они не правы.
У меня было 26 обращений за последние 3 года моего опыта с клауд(юбилееейчик), где я просил вернуть деньги за неуказанные услуги или за глюки.
Один из самых интересных, на мой взгляд, для 2024/2025 это внедрение около AI фич со стороны провайдера.
Например новое поведение у AWS cost anomaly.

Был случай, когда я по своей глупости(я об этом ещё обязательно напишу) включал пару фичей, которые быстро слили много денег на CloudWatch.
Проблему увидели через два-три дня с письмом от Cost anomaly detection, все выключили, за косяк пришлось заплатить. (На скрине первый спайк).

Прошло несколько месяцев(!) и руководитель этого проекта кое-что для теста включал и снова по CloudWatch пошли траты, но в этот момент письмо от cost anomaly detection уже не было отправлено. Траты увидели случайно только через несколько дней(на скрине второй спайк). Само собой написали в  саппорт "а чо нет уведомлений?😭".
Получили ответ типа "блабла, у нас ai везде ai. Из-за первого спайка система решила, что этот, второй спайк, это норма, будет исправлено"
Естественно тут же написали "а ведь если бы не ваш баг с неверным определением поведения, мы бы раньше увидели ишшую и погасили бы логи, пусть будет формула такая: 1 день гэп общий, 1 день я/команда слоупок, дальше реакция на письмо, а вот все последующие дни - ваша проблема. Верните деньги за эти дни. Если бы не баг, я бы раньше все узнали бы и выключили".

Получаем ответ "Considering the financial impact, we've approved and processed a billing adjustment in the form of a refund back to your credit card ending in *. Please see Refund ID *** [383.48 USD] here."
🎉 Крохотная, но победа.

Суммарно за весь мой опыт удалось вернуть около $5230 разными обращениями, где виноват был облачный провайдер. Вернуть, к слову, удавалось не всё и не всегда.

Не стыдитесь и не бойтесь требовать там, где вы уверены в своей правоте.
Возвращать свои же деньги не стыдно.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍1
#aws #azure #finops #fuckup

Ну что ж, истории про мои всратости и заоблачные прайсы в облаках..
Критикал счетов не было, все терпимые и, к сожалению, за дело.
Ниже перечислены ошибки со стороны команды или девопс/инфра инженера.

1) Datadog + все(!) ивенты AWS EKS + все(!) логи приложений в AWS EKS.
~$11600 за 4 дня из-за кинконглионов событий и метрик.

2) AWS RDS + зачем-то general log + CloudWatch + unlimited retention.
~$2600 за несколько дней(пятница-понедельник утро).

3) Нескончаемое количество раз все ML/DWH/AI сервисов.
Например использование мультирегион дисков с репликацией для кеша в Trino.
~$4300 за месяц.
Или, например ЗАЧЕМ-ТО запуск AWS Kendra раз в сутки(30 баксов в день) вместо запуска 2 раза в месяц
~$150, за 5 дней

4) CloudFront(все настройки по дефолту) + s3 бакетом с файлами дистрибутивами программы + "клиент решил массово установить наш софт по всем компьютерам своей локальной сети через планировщик задач. Однако, как оказалось, прав на установку не хватило, задача вошла в цикл и выкачала несколько десятков терабайт с нашего s3 (файл вроде около 15 мегабайт).
~$450 за 2 дня.
Зато узнали много нового про WAF + код ответа 429 после этого.

5) AWS MSK + огромная цифра на макс сторадж скейлере + изначально большой сторадж + отсутствие алёртов на эти события и нет аномали детекшн + анлимитед ретеншн тайм у топика. Бинго как обычно. Бинго на максималке.
Разработчики начали писать годзиллионы событий в один топик. Нечто типа уровень дебага. Дев энвайронмент.
Каждые 4 часа сторадж скейлился на 10%.
Могу соврать, то там формула будет нечто такого:
Vn = V0 × (1.1)^n

где:
- V0 = 1000 (начальный объем),
- n = 180 (число увеличений за месяц, каждое через 4 часа),
- 1.1 = коэффициент роста (10% увеличение).
Короче как бы там не было, но из 1000 гигабайт, недели через 3-4 (не уследили) уперелось в максимум 16 терабайт и кластер превратился в тыкву.
~$4100 за сторадж отдали.

6) AWS EKS + большое значение макс нод + cluster autoscaler + неверные аффинити/антиафинити. Вместо динамического увеличения нод получили неприлично большое количество нод.
ну типа
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- {{ .Release.Name }}
topologyKey: kubernetes.io/hostname

вместо
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- {{ .Release.Name }}
topologyKey: kubernetes.io/hostname

Вроде всего ~$700 за сутки за EC2 инстансы. Никаких алёртов на количество нод не было, спасло аномали детекшн.

7) Кто-то разместил ссылку на s3 бакет напрямую на веб-портале.
Не срабатывал WAF от CloudFront и снова траты при циклическом запуске со стороны клиента.
~$180 за сутки

8) Какая-то галочка в Azure OpenAI в балансировке.
Честно не помню параметр, но при частом использовании OpenAI в аппликейшн + этот параметр в API Management service сожрал много.
~$11300 за три недели🤡

Были и более мелкие, тысяча стори🤦🏽, но там уровня "девопс инженер пошёл в бар и потратил больше".
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14😨43🔥1🤡1
#azure #finops #devops

Меня вдохновили одной историей-задачей от коллеги, но расскажу всё от своего имени, а что вы мне сделаете, заметки то мои 🤣
На мой личный взгляд это потрясающая работа сильного, профессионального и изобретательного инженера.

Была подзадача "перетащить часть проекта с Azure stack на Bare metal".
С платформой и стеком выбор был уже почти сделан, надо было лишь развернуть инфру и перетащить данные.
Инфру развернули за 0.0001мс - мы же все гитопсы теперь.
С данными вышла засада - их было 330+ терабайт. И это лишь в одном блобе. Блобов много.
Мы были не готовы к таким цифрам в bare metal и это пахло проблемами.
И капасити и скорость передачи данных в бар метал - это сколько недель ждать?
Решили вообще узнать - а все ли данные нужны?
Зашли к девелоперам по datawarehouse стеку, они сказали нечто типа "ну мы, конечно же, компания, специализирующая на данных, данных у нас ОЧЕНЬ много, но цифра не похожа на настоящую".
Это отличный пойнт, а значит время для анализа.
Базово ажур ничего не даёт по аналитике, либо за деньги, а потому надо всё включать.
Первым делом включили Inventory - специальный инструмент, позволяющий получать отчёт о всех данных внутри блоба. Запустили, сутки ждали, он сформировался в CSV файле, вроде около 150 мегабайт.

Ок, у нас есть миллионы строчек, но сами же мы не будем глазами считать.
Создаём локально базу данных PostgreSQL.
Затем создаём табличку типа (тут есть ошибки, но это не влияет на саму задачу)
https://gist.github.com/kruchkov-alexandr/9f1210db954c92b059113835e950562e
Запускаем DBeaver и импортируем CSV файл в это локальную базу данных PostgreSQL.

Данные по объектам в блобе, а значит пора мучать любимый AI ассистент SQL запросами, нечто типа
https://gist.github.com/kruchkov-alexandr/73096e1a8a78274944dcb3c02c45f090
Оба запроса собирают статистику по контейнерам blob, считая количество файлов и их суммарный размер в GiB, также выводят общий итог по всем контейнерам.

Возвращаемся к девелоперам, показываем статистику, анализ, все в шоке, срочный колл, разбор полётов.
Не буду опускаться в суть бизнес процессов, почему и где была логическая проблема, но в общем у нас был сбой
и данные дублировались. Трижды всё проверили, расписали план и двинулись дальше:
- удалили часть данных
- включили лайфсайкл полиси на 1 день
- выключили safe delete или как это называется
- что-то ещё, но я уже не помню

В общем на момент истории блоб весит 44 терабайта, удалено больше 280 терабайт.

Какие же потери мы понесли с момента бага с дублированием?
- чтение/перечтение данных каждый день
- операции
- хранение
Итого $3500+ в месяц. За один только блоб.
Просто три с половиной шутки за мусорную дату каждый месяц....

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

Да, компания специализируется на дате, её очень много, и само собой никто уже с огромными объемами не мониторил банальный сбой и дублирование / версионирование / сейфделиты / редубликацию трафика на ингрессе и так далее. Когда данных петабайты, особо не следишь где чего и сколько. Всем кажется, что это нормально.

Итоги:
- коллега я, крутой и мощщный синёр помидор, показал всем, как делать аналитику сотен миллионов объектов в блобе
- узнали о величайшем(нет) провале по мониторингу биллинга и размера даты
- на момент стори снизили косты на $3500+ в месяц 😭 Точная сумма будет известно потом, когда завершаться все работы по всем стораджам, а их не мало.
- отчасти сняли блокер по переносу даты в барметал (нет, но это другая история)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥51😁1