Сразу в продакшн

Опубликовано 22 сентября 2020 г.

Стартапы и предпринимательство

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

Простой пример — любое объектное хранилище, например Google Storage или Amazon S3. У обоих есть CLI-тулзы, с помощью которых деплой статического файла действительно выполняется одной командой. Второй настраивается edge-кэш — и ваш файлик готов к миллионам скачиваний.

А как же приложения посложнее статики? Когда мы говорим про рабочее окружение, в CI/CD-инфраструктуру вкладываются огромные силы и средства, и деплои для разработчиков, как правило, просты и прозрачны. Смёржил свой пул-реквест в master, и погнали. А под капотом: несколько окружений, тысячи тестов, инкрементальные выкладки и A/B-тесты, миграции схемы БД и данных.

Хоть DevOps-подход и популярен, сложно представить себе разработчика на развесистом проекте (особенно с микросервисами), который и код пишет, и всю инфраструктуру вокруг настраивает, и работает при этом не 16 часов в день. В крупных компаниях есть целые команды, которые если и не настраивают каждую сборку, то, как минимум, собирают и поддерживают инструменты для деплоя.

А вот в сайд-проектах всё совсем по-другому, и помогать вам некому. Инструменты автоматизации можно либо взять существующие (GitHub Actions, например), либо сделать самому. Какой бы подход вы ни выбрали, постарайтесь сделать так, чтобы ваш код попадал в продакшн максимально просто и быстро. Это увеличит шансы вашего проекта быть запущенным и позволит вам не прокрастинировать из-за очередной хитрой выкладки, а делать что-то полезное.

Первое, что я делаю в своих проектах — это автоматизация настройки серверов и деплоя. После серии экспериментов с Google Cloud и их встроенными инструментами, я ушёл на DigitalOcean и "ручную" настройку через Ansible. Для моих миниатюрных проектов получается и дешевле в рантайме, и не сложнее, а скорее более гибко и надёжно, чем с гуглом.

Когда деплой автоматизирован, разработку я веду в 2 окружениях параллельно: локальном, где я пишу код, и продакшене, куда попадает каждый комит в master. Тестирования, которое могло бы заблокировать выкладку, у меня конечно же нет — я не фейсбук для таких мер. Из тестов — только юнит-тесты на какие-то критические и непонятные куски кода. Для сайта, когда он будет готов, я наверное добавлю интеграционное тестирование для проверки наличия страниц и корректности кэширования, но тоже в продакшене.

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

А вы свои сайд-проекты тоже деплоите в прод одной командой?

Читать дальше