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

Эта задача — шаг 9 курса «Выкатываем релиз»

Переключи прод на новый релиз симлинком

средне~5 мин

Релиз billing 2.4.0 уже разложен на сервере рядом с работающим 2.3.7: каталоги лежат в /srv/billing/releases/, а nginx отдаёт сайт из симлинка /srv/billing/current. Переключи прод на 2.4.0, перебросив симлинк. Конфиг nginx не трогай, nginx не останавливай, current должен остаться симлинком. Осторожно: рядом лежит и кандидат 2.4.0-rc1 — он не нужен.

Что потренируешь:
  • симлинки
  • ln -sfn
  • readlink
  • blue-green деплой
  • релиз без простоя

Разбор темы

Раскладка «каталог на релиз + симлинк current» — классика деплоя без простоя: новая версия заливается в отдельный каталог заранее, а в момент релиза меняется только указатель, на который смотрит веб-сервер. Откат делается так же — ссылку возвращают на прошлый каталог. Важно, чтобы замена ссылки была одной операцией: ln с флагами символьной ссылки, принудительной замены и запрета разыменовывать старую цель-каталог. Удалить ссылку и создать заново — уже окно, в котором сайт отдаёт ошибки, а cp вместо ссылки ломает быстрый откат.

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

  1. /srv/billing/current — по-прежнему симлинк
  2. current указывает на релиз 2.4.0
  3. сайт отдаёт billing 2.4.0
  4. nginx работает
  5. старый релиз цел для отката

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