Что происходит до финального этапа деплоя?

«Что происходит до финального этапа деплоя?» — вопрос из категории DevOps, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В моем последнем проекте на Django процесс перед деплоем включал следующие этапы:

1. Сборка и тестирование:

# Запуск тестовой сборки
python manage.py test --settings=settings.test
pytest --cov=.

# Проверка качества кода
flake8 .
black --check .

2. Подготовка артефактов:

  • Сбор статических файлов: python manage.py collectstatic
  • Применение миграций БД: python manage.py makemigrations && python manage.py migrate
  • Создание Docker-образа с тегами версий

3. Staging-развертывание:

# docker-compose.staging.yml
version: '3.8'
services:
  web:
    build: .
    environment:
      - DJANGO_SETTINGS_MODULE=settings.staging
      - DATABASE_URL=postgresql://...

4. Проверки перед production:

  • Smoke-тесты на staging
  • Проверка метрик (response time < 200ms, error rate < 0.1%)
  • Валидация конфигурации Nginx и Gunicorn
  • Бэкап production базы данных

5. Подготовка миграций:

# migrations/0002_add_user_profile.py
from django.db import migrations, models

class Migration(migrations.Migration):
    dependencies = [('users', '0001_initial')]

    operations = [
        migrations.AddField(
            model_name='user',
            name='profile_picture',
            field=models.ImageField(null=True, upload_to='profiles/')
        )
    ]