Архитектура системDevOps Engineer, Backend разработчик

Что такое Zero Downtime Deployment в контексте архитектуры ИТ-систем и как его реализовать?

Проходите собеседования с ИИ помощником Hintsage

Ответ.

Zero Downtime Deployment — практика обновления приложения без прерывания работы и недоступности для пользователей. Это достигается последовательным выводом старых и вводом новых инстансов приложения.

Пример реализации для stateless приложения в облаке (например, с помощью Kubernetes):

  1. Развёртывание новой версии подсов, не убивая старые.
  2. Проверка, что новые инстансы здоровы.
  3. Только после этого перевод трафика на них (blue-green/release или rolling update).
  4. Старые контейнеры плавно гасятся после полной уверенности в новой версии.

Пример deployment.yaml с rolling update:

apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 4 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1 template: metadata: labels: app: my-app spec: containers: - name: app image: my-app:v2

Ключевые особенности:

  • Требует stateless сервисов или специализированных стратегий миграции состояния.
  • Часто реализуется через rolling update или blue-green deployment.
  • Для zero downtime на уровне БД требуется миграция в несколько этапов (backward/forward-compatible схемы).

Вопросы с подвохом.

Zero Downtime Deployment невозможен при изменении схемы данных?

Возможен, если миграции схемы делаются in two steps: сначала код становится совместим со старой и новой схемой, потом — сама миграция и удаление legacy-кода.

Если приложение stateless, zero downtime deployment всегда гарантирован?

Нет! Ограничивающим фактором может быть внешний state, таймауты соединений, неотработанные запросы или неподдерживаемые reverse-incompatible изменения в API.

Zero Downtime Deployment нужен только крупным компаниям?

Нет. Даже для небольших стартапов и SaaS решений zero downtime — критичный фактор для пользовательского опыта (особенно глобальные рынки и highload).