Деплой — размещение программного обеспечения¶
Деплой (от англ. 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-проектов).
¶Типичный процесс деплоя
- Интеграция изменений в основную ветку репозитория.
- Автоматическая сборка артефакта (исполняемый файл, контейнер, пакет).
- Прогон тестов (юнит-, интеграционные, смоук-тесты).
- Развёртывание на тестовое окружение и проверка.
- Миграция базы данных (при необходимости).
- Деплой на целевую среду.
- Пост-деплой проверки (health checks, мониторинг логов и метрик).
- При выявлении проблем — откат к предыдущей версии.
¶Риски и особенности
Основные риски при деплое — недоступность сервиса, потеря данных при некорректной миграции, рассинхронизация конфигураций между средами. Для минимизации рисков применяются миграции с сохранением обратной совместимости, автоматические проверки целостности данных, а также практики «трёх правил»: деплой должен быть обратимым, наблюдаемым и воспроизводимым.
В контексте инфраструктуры как код (Infrastructure as Code) деплой распространяется не только на приложения, но и на сами серверы, сети и базы данных, что делает инфраструктуру версионируемой и воспроизводимой.
¶Источники
- Фаулер М. Continuous Integration // martinfowler.com.
- Хамберт Л., Ким Г. Внедрение DevOps. — СПб.: Питер, 2017.
- Документация Kubernetes: Rolling Updates and Rollbacks.
- Документация GitLab CI/CD.
- Сайт Ansible: What is Ansible.
