Спроектируй canary rollout для {{service}} на {{platform}}.
Фазы (рекомендованные пропорции)
| Фаза | Трафик | Длительность | Условие промоушна |
|---|---|---|---|
| 0. Internal | 0% (только staff/feature flag) | 30-60 мин | smoke OK, no error spike |
| 1. Canary | 1-5% | 15-30 мин | error rate ≤ baseline+10%, p95 ≤ baseline+15% |
| 2. Early | 25% | 30-60 мин | те же + бизнес-метрика стабильна |
| 3. Half | 50% | 30-60 мин | те же |
| 4. Full | 100% | — | — |
Не сокращай фазы «потому что выглядит ОК». Многие баги проявляются только на масштабе.
Метрики для автомата
Технические (обязательно)
- Error rate (4xx/5xx), отдельно по эндпоинтам
- p50/p95/p99 latency
- CPU/memory на инстансах canary
- Throughput (RPS)
- Apdex или SLO burn rate
Бизнес (если применимо)
- Conversion в ключевом флоу (signup, checkout)
- Revenue per session
- Drop-off на ключевых страницах
Шум-фильтры
- Baseline считается от той же фазы дня/недели (не abs ratio)
- Минимум N запросов на canary, иначе сигнал слабый
- Игнор первые 60s после переключения трафика (warmup)
Триггеры отката (автоматические)
- Error rate > baseline × 2 за 3 минуты подряд
- p95 > baseline × 1.5 за 5 минут
- 5xx > 1% от трафика canary
- Critical alert от downstream (платежи, auth)
- Drop в business-метрике > 20% за 10 минут
Триггеры эскалации (ручной взгляд)
- Error rate baseline × 1.3-2.0
- Новые типы ошибок в логах
- Подозрительные метрики в одном регионе
Длительность всего rollout
- Hot path / payments / auth: 4-8 часов минимум
- Обычный код: 1-3 часа
- Мелкий фикс / визуальное: 30-60 минут
- Никогда не катим в пятницу вечером
Инструменты (по платформе)
k8s + Argo Rollouts
- Strategy:
canaryсо steps по 5/25/50/100 - AnalysisTemplate с Prometheus queries
- Auto-rollback по AnalysisRun
Fly.io
fly deploy --strategy canary-
- кастомный health-check скрипт
Cloudflare / Edge
- Traffic split через worker
- Метрики из Cloudflare Analytics + alerts
LaunchDarkly / Unleash
- Percentage rollout по user-targeting
- Server-side guards для платных фич
Что мониторить вживую
Дашборд во время rollout (минимум 4 виджета):
- Error rate: canary vs stable (overlay)
- Latency p95: canary vs stable (overlay)
- Business metric: canary cohort
- Traffic distribution (показывает, что rollout идёт)
Канал в Slack/Telegram: уведомления при каждом шаге фазы + при rollback.
Подготовка
- Baseline метрики измерены за предыдущие 7 дней
- Алерты настроены и протестированы
- Rollback команда отрепетирована (см. rollback-playbook)
- Database migration — двухфазная (expand → contract отдельный релиз)
- Feature flag (если есть) — kill switch на месте
- On-call знает: что катится, когда, кому звонить
Формат вывода
Конкретный план для {{service}}:
- Таблица фаз с числами
- Список метрик с порогами
- Алерты (YAML/JSON для платформы)
- Чек-лист подготовки
- Команды старта / отката
Анти-паттерны
- ❌ Один шаг 0% → 100% и «посмотрим что будет»
- ❌ Промоушн фазы по таймеру без проверки метрик
- ❌ Только error rate без latency — медленный API «работает»
- ❌ Smoke только в фазе 0, потом доверие
- ❌ Canary на одном регионе, заявка про глобальный rollout
- ❌ Sticky session — все юзеры canary остаются на canary навсегда
- ❌ Не учтены downstream: canary шлёт badли в общую очередь
Похожие промты
start / glossary
Что такое деплой, хостинг и сервер — для абсолютного новичка
Между «сайт работает у меня в браузере» и «сайт доступен по ссылке всем». Объясняем что в середине, без облака и кластеров.
beginnerstartglossary
Открыть
Начальный15 мин
site / deploy
План деплоя нового проекта
Выбор хостинга, домены, переменные, превью-окружения, CDN, кеш — за один прогон.
deployinfrastructurehosting
Открыть
Средний30-60 мин
site / deploy
CI/CD-пайплайн
Шаги от пуша до прода: lint, типы, тесты, превью, прод, нотификации.
cicdautomation
Открыть
Средний30-60 мин