У меня есть 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 отдела не наблюдаем, значит решение рабочее. А сэкономленный бюджет можно смело пустить в дело: пропить либо выписать квартальные премии.
Спасибо коллеги за внимание, увидимся чуть попозже!
Как сэкономить кучу денег на тестовой инфраструктуре
7 января 20247 янв 2024
87
1 мин