Ответ
Процесс релиза был автоматизирован через CI/CD и следовал модели GitFlow с контролируемым деплоем.
Этапы релизного цикла:
-
*Подготовка (`release/` ветка):**
- Создание релизной ветки от
develop. - Фиксация версии (semantic versioning).
- Прогон полного набора автотестов (регресс).
- Создание релизной ветки от
-
Стабилизация и тестирование:
- Деплой на staging-окружение, максимально близкое к production.
- Ручное тестирование критичных пользовательских сценариев и smoke-тесты.
- Performance и security-тесты (если требуются).
-
Контролируемый деплой в production:
- Canary-релиз: Выкатка новой версии на небольшой процент трафика (например, 5%) с мониторингом метрик (ошибки, latency).
- Постепенный rollout: При успехе canary — увеличение процента трафика до 100%.
- Использование feature flags для включения/отключения функциональности без повторного деплоя.
-
Откат (Rollback): Стратегия blue-green деплоя или быстрый откат к предыдущему Docker-образу в случае критичных инцидентов.
Пример CI/CD конфигурации (GitLab CI):
stages:
- test
- deploy-staging
- approval
- deploy-prod
deploy-prod:
stage: deploy-prod
script:
- kubectl set image deployment/my-app app=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
only:
- master
when: manual # Требуется ручное подтверждение
Пострелизные активности: Мониторинг через Grafana/Datadog, сбор обратной связи, проведение короткого пост-мортема для извлечения уроков.