Открыть сервисСервис

Деплой — размещение программного обеспечения

Деплой (от англ. deployment — развёртывание, развёртывание) — процесс размещения программного обеспечения или его компонентов в целевой среде исполнения, после чего приложение становится доступным для использования. В широком смысле под деплоем понимают весь цикл действий по переносу кода из среды разработки в рабочую (продакшн) среду: сборку, тестирование, установку, настройку и запуск. Термин широко применяется в веб-разработке, DevOps-практиках и системном администрировании.

Основные понятия

Деплой — часть более широкого процесса поставки программного обеспечения (Software Delivery Pipeline). Обычно выделяют несколько сред (окружений), через которые проходит код:

  • Dev (development) — среда разработки, где программист пишет и отлаживает код;
  • Test/QA — тестовая среда для проверки функциональности;
  • Staging (предпродакшн) — среда, максимально приближённая к продакшну, для финальной проверки;
  • Production (продакшн) — рабочая среда, доступная конечным пользователям.

Перенос кода между этими средами и есть деплой. Часто выделяют понятие релиза (release) — выпуск новой версии программного обеспечения, и отката (rollback) — возврата к предыдущей рабочей версии при обнаружении критических ошибок.

Способы деплоя

Ручной деплой

Наиболее простой подход: разработчик или системный администратор вручную копирует файлы на сервер, устанавливает зависимости, перезапускает службы и проверяет работоспособность. Такой метод применим для небольших проектов, но при увеличении числа серверов и частоты обновлений становится источником ошибок и занимает много времени.

Автоматический деплой

Автоматизация предполагает использование скриптов и специализированных инструментов, которые выполняют типовые операции без участия человека: копирование файлов, установку зависимостей, миграцию базы данных, перезапуск сервисов. Автоматический деплой делает процесс воспроизводимым и снижает риск «человеческого фактора».

Непрерывная поставка и непрерывное развёртывание

Практики CI/CD (Continuous Integration / Continuous Delivery / Continuous Deployment) предполагают, что каждый изменённый фрагмент кода автоматически проходит сборку, тестирование и, при успешном завершении, деплой. В случае Continuous Deployment изменения доходят до продакшна без ручного подтверждения, что позволяет выпускать обновления несколько раз в день.

Стратегии деплоя

Выбор стратегии зависит от допустимого времени простоя и требований к отказоустойчивости:

СтратегияОписаниеПрименение
RecreateОстановка старой версии, установка новойПростой проекты, допускающие кратковременный простой
Rolling updateПостепенная замена экземпляров приложенияКластеры, микросервисы
Blue-GreenДва идентичных окружения; трафик переключается с «синего» на «зелёное»Системы, требующие мгновенного отката
CanaryНовая версия сначала обслуживает небольшую долю пользователейКрупные сервисы с высокой нагрузкой
A/BДва варианта работают параллельно для сравненияМаркетинговые и продуктовые эксперименты

Инструменты

Для автоматизации деплоя используются разные категории инструментов:

  • Скрипты и конфигурационные утилиты: Bash, Python, Ansible, SaltStack;
  • Системы сборки и оркестрации: Jenkins, GitLab CI, GitHub Actions, TeamCity, Bamboo;
  • Контейнерные платформы: Docker, Kubernetes (с их механизмами rolling update и blue-green);
  • Облачные платформы: Яндекс Облако, Selectel, VK Cloud, AWS, Google Cloud — предоставляют встроенные средства развёртывания;
  • Специализированные системы: Capistrano, Deployer, Fabric (для PHP и Python-проектов).

Типичный процесс деплоя

  1. Интеграция изменений в основную ветку репозитория.
  2. Автоматическая сборка артефакта (исполняемый файл, контейнер, пакет).
  3. Прогон тестов (юнит-, интеграционные, смоук-тесты).
  4. Развёртывание на тестовое окружение и проверка.
  5. Миграция базы данных (при необходимости).
  6. Деплой на целевую среду.
  7. Пост-деплой проверки (health checks, мониторинг логов и метрик).
  8. При выявлении проблем — откат к предыдущей версии.

Риски и особенности

Основные риски при деплое — недоступность сервиса, потеря данных при некорректной миграции, рассинхронизация конфигураций между средами. Для минимизации рисков применяются миграции с сохранением обратной совместимости, автоматические проверки целостности данных, а также практики «трёх правил»: деплой должен быть обратимым, наблюдаемым и воспроизводимым.

В контексте инфраструктуры как код (Infrastructure as Code) деплой распространяется не только на приложения, но и на сами серверы, сети и базы данных, что делает инфраструктуру версионируемой и воспроизводимой.

Источники

  • Фаулер М. Continuous Integration // martinfowler.com.
  • Хамберт Л., Ким Г. Внедрение DevOps. — СПб.: Питер, 2017.
  • Документация Kubernetes: Rolling Updates and Rollbacks.
  • Документация GitLab CI/CD.
  • Сайт Ansible: What is Ansible.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru