TGViewer
Java: fill the gaps Java: fill the gaps @java_fillthegaps · 12.3K subscribers
Post #584 15.4K
Стратегии деплоя

– забота не только девопсов, но и разработчиков уровня сеньор+. В этом посте обозначу, какие схемы бывают, и в чем их суть.

Все сценарии работают на одну из двух ситуаций:

Ситуация 1: нужно обновить сервисы на проде с версии 1 на версию 2

🌔 Rolling update

Добавляем инстанс с версией 2 и переводим туда часть запросов. Если все ок, понемногу добавляем сервисы с версией 2 и убираем с версией 1

👯 Blue-green

У нас всегда в наличии 2 идентичных продакшн среды. На одной функционирует версия 1 и обрабатывает все запросы, другая простаивает.
▫️ Раскатываем сервисы версии 2 на неактивный стенд
▫️ Переключаем роутер с одного стенда на другой

На практике чаще встречается Rolling update, потому что это дешевле.

Ситуация 2: хотим протестировать фичу в продакшене😇

🎏 AB testing

▫️ Запускаем несколько экземпляров сервиса с новой фичей и направляем туда часть запросов
▫️ Сравниваем метрики старой и новой версии
▫️ Выбираем победителя
▫️ Раскатываем его на всех пользователей

Способ часто используется для изменений на фронте.

🐤 Канареечный деплой (canary)

Поднимаем сервис с новой версией, переводим туда трафик от определенной группы пользователей. Если все ок, раскатываем новую версию дальше.

Технически похоже на rolling update, но в случае канарейки мы явно указываем, каким пользователям видна новая версия. Это могут быть бета тестеры или представители заказчика.

Используется такой способ редко, лично ни разу не встречала.

🌚 Shadow deployment

▫️ Поднимаем сервис с новой версией
▫️ Дублируем туда трафик с продакшена
▫️ Смотрим, как сервис справляется (или нет🥲)

Цель shadow deployment - проверить фичи на бэкенде под реальной нагрузкой. Иногда поднимается полная копия продакшен среды. Но чаще все же ограниченный набор сервисов.

❓ Как реализовать эти стратегии?

Основную работу делают девопсы с помощью bash скриптов, Kubernetes, Consul, Istio и их аналогов.

Со стороны разработки может понадобиться
▫️ добавить механизмы включения/выключения фич (feature toggle)
▫️ обеспечить совместимость старой и новой версии по данным и API. На практике бывает сложно, по миграциям данных даже целые книжки пишут!

Ответ на вопрос перед постом – больше всего ресурсов требует Blue-green стратегия. Также принимается вариант с shadow deployment на максималках🔥
  • 🔥 135
  • 👍 49
  • ❤ 21
  • 👎 1
More from @java_fillthegaps
  1. Apr 30, 2026Get Your Hands Dirty on Clean Architecture: отзыв на книгу Когда я подняла тему чистой арх…
  2. Apr 27, 2026​Clean Architecture: отзыв на книгу Наконец-то дочитала книгу Clean Architecture Роберта М…
  3. Mar 4, 2026Как переиспользовать контекст в интеграционных тестах Сегодня расскажу базовый минимум для…
  4. Mar 4, 2026Post #660
  5. Mar 4, 2026Тестовый контекст поднимается 2 минуты. У нас 4 класса с интеграционными тестами, их конфи…
  6. Feb 25, 2026Чистая архитектура. Главы 3-5 Продолжаем спидран по Clean Architecture Роберта Мартина. ⭐️…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →