Ответ
Deploy (развёртывание) — это комплексный процесс доставки новой версии программного обеспечения из среды разработки (например, Git-репозитория) на рабочее окружение (production), где оно становится доступным для конечных пользователей. Это ключевой этап жизненного цикла DevOps.
Основные этапы современного деплоя:
- Сборка (Build): Преобразование исходного кода в исполняемый артефакт.
# Пример для PHP-проекта composer install --no-dev --optimize-autoloader npm run production php artisan config:cache - Тестирование (Test): Автоматический прогон тестов (юнит, интеграционных) в CI-пайплайне.
- Релиз (Release): Создание версионированного релиз-артефакта (Docker-образ, zip-архив).
- Развёртывание (Deploy): Перенос артефакта на production-серверы и его активация.
- Верификация и мониторинг: Проверка работоспособности (health checks) и наблюдение за метриками после выкатки.
Стратегии развёртывания (для минимизации простоя и рисков):
- Blue-Green Deployment: Два идентичных окружения ("синее" — текущее, "зелёное" — новое). После развёртывания на "зелёное" трафик переключается на него. Позволяет мгновенный откат.
- Canary Release: Новая версия постепенно развёртывается на небольшой процент пользователей (канарейка), затем, при успехе, на всех.
- Rolling Update: Постепенное обновление инстансов приложения по одному или группами.
Пример команды для простого деплоя через Ansible:
- name: Deploy application
hosts: webservers
tasks:
- name: Pull latest code
git:
repo: 'git@github.com:company/app.git'
dest: /var/www/app
version: main
- name: Install dependencies
composer:
command: install
working_dir: /var/www/app
no_dev: yes
- name: Restart PHP-FPM
systemd:
name: php-fpm
state: restarted