>_ IzzyLab

Практическое задание

Blue-green переключение релиза

средне

nginx отдаёт приложение через симлинк /opt/current, указывающий на релиз v1 в /opt/releases/. Релиз v2 уже загружен. Переключи прод на v2, передвинув симлинк — не трогая конфиг nginx и без даунтайма.

Что потренируешь:
  • симлинки
  • ln
  • readlink
  • blue-green деплой
  • атомарное переключение

Разбор темы

Blue-green деплой через симлинк — способ переключать релизы без даунтайма: прод смотрит не в конкретную папку версии, а в символическую ссылку-указатель, которую перебрасывают на новый каталог. Смысл в атомарности: замена ссылки должна произойти одним движением, без промежутка, когда ссылки нет. Обычный ln на существующей ссылке спотыкается или создаёт вложенность, поэтому нужны флаги пересоздания символьной ссылки, принудительной перезаписи и запрета заходить внутрь старой цели; конфиг сервера при этом не трогается вовсе.

Что проверяется

  1. /opt/current указывает на v2
  2. сайт отдаёт релиз version-2
  3. nginx запущен

Как это выглядит