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

В моем случае было понимание, что проект либо вырастет, либо станет основой для других. Поэтому решил заложить нормальный деплой. Хотя в книгах пишут, что такой подход не считается продуктовым:) Рассуждаю о корпорацияхМожно позавидовать корпорация — на базе инфры и наработок можно быстро развернуть скелет продукта. Когда арендуешь сервачёк сразу понимаешь какие бабки они расходуют. Есть другая сторона — корпорации могут ограничить тебя в выборе технологий и застопить быстрый рост из-за бюрократии. Одна из причин, почему корпы покупают быстро растущие стартапы. Гибкости не хватает, зато денег много. Акулы едят рыбок. Рыбки не всегда вырастают до размеров акул. Подбил итог по шаблонамХотется тоже быстро строить скелеты для будущих продуктов, хотя понимаю, что всё еще 1000 раз поменяется.

Подумал, что опыта в автоматизации будет достаточно для быстрого старта в продуктовой истории. Поэтому пошёл делать. Потратил денёк. Выбираю технологии для деплояПринять решение в выборе технологий было просто. Бот лежит на гитхабе, значит, логично использовать инструменты гитхаба для CI и, в идеале, CD. Да, можно прикрутить внешнюю CI, например какой-нибудь Travis CI или что сейчас модно? Но если можно решить проблему существующими технологиями и без добавления новых сервисов — лучше этим воспользоваться. Шевелиться стоит только в том случае, если текущие инструменты не решают твою проблему. Бот простой, у гитхаба есть своя CI — GitHub Actions. Все нужные плагины были. Значит, не придумываем велосипед. Конечно, предварительно погуглил и проверил, что текущих технологий мне хватит. Ресерч при выборе технологийМне нужен был плагин для работы с git, docker и ssh. Хотелось на каждую версию собирать образ и на его базе, через ssh, создавать контейнеры. Повторюсь, бот маленький, там толком ничего нет, поэтому оркестраторы (kubernetes) не нужны. Всего-то два контейнера! Семья-то большая, отец мой, да (шутка). Достаточно прикрутить docker-compose, который можно поставить ручками на сервер. А еще не хотелось переплачивать деньги за оркестратор. Объясняю как работает сборкаАлгоритм работы до безобразия прост. Собираю образ, пушу в хранилище образов Яндекса, подключаюсь по ssh, тяну образ, останавливаю существующие контейнеры и создаю новые контейнеры.

Сначала поднимается postgres. У него настроен volume на папку с базой — чтобы данные не терялись. Если есть миграции, они накатываются. Потом стартует бот. Плюс пара скриптов, которые проверяют, что всё хорошо. После билд завершается, красится в зелёный, а на стенде актуальная версия. Говорю про минусы и лайфхакиРешение в некоторых моментах несильно удачное. Яндекс не резиновый, а еще у него есть сканирование образов, за которое нужно платить рубли. Сканирование выключил, а версию образа зафиксировал, чтобы обновлялся старый. Пока такой хак, чтобы не переплачивать. Так почему не пожалел ?Получаю кайф, когда вижу зелёный билд. Значит всё катнулось, получай порцию дофамина.

Норм такое? - ❤️ Мы и так всё знаем - 😐