RE:NODE
Обзор хостинга

Эксплуатация6 мин чтения

Zero-downtime деплой на сервере, где всего по одному

Кластер не нужен. Что на самом деле вызывает разрыв при деплое и три приёма, которые убирают его на одной машине.


Деплой без простоя обычно описывают через балансировщики и rolling-обновления, что бесполезно, если сервер один. На одной машине причина разрыва проще: старый процесс останавливается раньше, чем новый готов отвечать.

Закройте разрыв

  • Сначала запустите новый процесс на втором порту и переключайтесь, только когда он отвечает.
  • Пусть старый процесс дорабатывает начатые запросы, а не рвёт их: это обработчик сигнала и примерно десять строк.
  • Прогоняйте миграции до деплоя и пишите их так, чтобы со схемой ужились обе версии кода.

Миграция — самая сложная часть

Добавить колонку безопасно. Переименовать — нет, потому что несколько секунд работают обе версии. Добавьте, задеплойте, заполните, а удалите в следующем релизе: три скучных деплоя вместо одного увлекательного.