Найти тему
BASH DAYS | Linux Factory

Как сэкономить кучу денег на тестовой инфраструктуре

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

Для каждого тестировщика свой отдельный стенд. Чтобы QA между собой не дрались и не ныли. Каждый стенд включает в себя 5 инстансов:
балансировщик, база, фронтэнд, бекэнд, микросервисы. Считаем 5x5=25 серверов. Чето много.

Все сервера развернуты в Selectel. По итогу в месяц
набегает приличная сумма. По бюджету прям заметно кусается.

Думали мы, думали и придумали.

Будем автоматически отключать всю эту ферму на ночь, в выходные и праздники. Но столкнулись с проблемой, что даже выключенные машины — тарифицируются как включенные. Ладно.... В Selectel так нельзя, а где можно? А можно в Yandex Cloud!

Перетащили полностью тестовую ферму в YC. Накидали бота для slack/mattermost, который будет управлять кнопками включения/выключения. И реализовали такой концепт:

Концепт:

1. Бот взаимодействует с API Yandex Cloud.
2. С 18:00-08:00 реализовано автоматическое отключение фермы.
3. Автоматически отключаем ферму в выходные и праздничные дни (бот взаимодействует с производственным календарем).
4. Если тестировщик желает поработать вне рабочее время, он пишет боту команду и бот включает ему нужные сервера.
5. Если тестировщик забыл выключить сервер, бот проверит, что нет активности (берет метрики с prometheus) и всё погасит.

Есть еще всякие нюансы, но это основной алгоритм. Да. В YC тарифицируются HDD/IP/четотамеще даже если всё погасить, но это копейки.

По итогу если мы раньше платили 500к рублей в месяц только за тестовую инфраструктуру. Сейчас все это дело обходится в 100к, а порой и еще меньше. К примеру если тестировщик ушел в отпуск, то его сервер 2-3-4 недели будет выключен, а мы накопили себе на пивко.

Жалоб со стороны QA отдела не наблюдаем, значит решение рабочее. А сэкономленный бюджет можно смело пустить в дело: пропить либо выписать квартальные премии.

Спасибо коллеги за внимание, увидимся чуть попозже!