Что такое автодеплой или Как автоматизация упрощает жизнь разработчикам

Что такое автодеплой или Как автоматизация упрощает жизнь разработчикам

А вы знали, что в Гугле нет ни одной статьи (по крайней мере, на первых пяти страницах выдачи), которая бы конкретно отвечала на вопрос «Что такое автодеплой?». Хотя нет, теперь такая статья есть – вот она!

От обычного деплоя к автоматическому

Для начала разберемся, что такое деплой вообще. С английского “deploy” переводится как «развертывание». И это целый комплекс действий, которые делают программный продукт (например, веб-приложение) готовым к использованию: выпуск, установка, активация, адаптация, обновление, исправление ошибок и т.д.

Но как все это выглядит на практике? Давайте разберемся на простой схеме:

  1. У вас есть исходный код программного продукта.
  2. Из него вам нужно получить исполняемый код (этот процесс называется сборкой или билдингом).
  3. А потом исполняемый код нужно поместить на сервер, где он будет работать (это и есть деплой).

Или вот такой жизненный пример. У вас есть детали мясорубки: лезвия, болты, винтики и т.д. Это исходный код. Вы собираете детали в цельную конструкцию – это уже код исполняемый. А затем прикручиваете собранную мясорубку к столу и начинаете перемалывать продукты – вот теперь это деплой. Как вы «разворачиваете» мясорубку в среде кухни, так и приложение нужно развернуть в определенной среде (сначала – тестовой, а потом рабочей и эксплуатационной).

Развертывание при помощи автоматизированных решений и называется автодеплоем. Алгоритм действий при нем ничем не отличается:

  1. Берем рабочий код из репозитория.
  2. Переносим его на наш сервер и адаптируем.
  3. Запускаем код на новой машине.

Для автодеплоя,  используются CI/CD системы (CircleCI, Jenkins, Drone, TeamCity и т.д.).

Основные преимущества автодеплоя

  • развертывание сразу в нескольких средах;
  • повышение надежности и предсказуемости развертываемого ПО;
  • минимизация ошибок, связанных с человеческим фактором;
  • снижение затрат на развертывание;
  • упрощение рабочего процесса (не нужно нанимать команду высококлассных специалистов, с автодеплоем справится и небольшая группа сотрудников без узкой квалификации);

Но главный плюс для разработчиков заключается в глобальной оптимизации развертывания. Вместо того чтобы вручную переносить коды, они могут сосредоточиться на качественных характеристиках продукта и в сжатые сроки довести его до ума. А приятным побочным эффектом становится повышение конкурентоспособности бизнеса. Приложения, использующие автодеплой, практически всегда более качественные и доработанные, чем обычные. Да и пользователям не приходится долго ждать обновлений или исправлений багов – эти процессы тоже автоматизируются. Но сама идея автодеплоя более глубокая, чем одно лишь использование автоматических скриптов.

Другие важные принципы автодеплоя

  • Кооперация – для достижения наивысших результатов автодеплоем должны заниматься не отдельные специалисты, а группа, все участники которой взаимодействуют между собой.
  • Унификация – в идеале для развертывания приложения в разных средах должен использоваться один и тот же скрипт.
  • Стандартизация – все параметры развертывания нужно проверять по единому шаблону.
  • Внешнее конфигурирование – параметры, которые будут различаться в разных средах, можно задавать сразу и единожды.
  • Гибкость – в конфигурационных файлах можно использовать переменные окружения.

Ничего не напоминает? Да, все верно. Автодеплой с его тягой к автоматизации и кооперации при работе с программными продуктами – это прямая отсылка к методологии DevOps. И обязательная практика для разработчиков, которые стремятся добиться непрерывного развертывания приложений.