Существует широкий спектр сложности развертывания приложений. Это может быть так же просто, как использование PaaS или развертывание собственного решения, обеспечивающего большую мощность (помните, что говорил дядя Бен?). Такая мощность позволяет проектировать различные конвейеры развертывания, такие как сине-зеленые развертывания.

Недавно я имел удовольствие использовать сейчас для развертывания простого приложения. Это заставило меня задуматься о конвейерах развертывания, которые я мог бы построить с его помощью. Я постараюсь подробно описать, как имитировать сине-зеленые развертывания, на примере моего личного веб-сайта.

Для начала установите интерфейс командной строки сейчас и служебную программу JSON CLI, выполнив:

$ npm i -g now json

Затем перейдите к настройке нового токена для интерфейса командной строки сейчас, посетив эту страницу. Как только вы его получите, экспортируйте его в свою среду, запустив:

$ ZEIT_TOKEN=youareawesome

Есть поддержка приложений Node.js, а также контейнеров Docker. В этой демонстрации я буду использовать Docker. Вы можете найти исходный код и Dockerfile, о котором я буду говорить, здесь.

Теперь давайте настроим ваш домен. В настройках DNS вашего домена добавьте запись, подобную этой:

Если у вас есть токен, интерфейс командной строки, правильно настроенный домен и файл Docker, мы можем перейти к самой интересной части.

Каждый раз, когда вы развертываете с помощью сейчас, создается новое развертывание и создается новый URL-адрес. После N развертываний у вас будет N активных версий вашего приложения, если вы не начнете их удалять. URL-адреса будут разными для каждого из них, поэтому, если вы нацеливались на предыдущее развертывание, вам необходимо изменить URL-адреса, чтобы получить последний. Как мы можем это автоматизировать?

Что здесь происходит?

  1. Новое развертывание Docker (это создаст приложение в Zeit, а также развернет его).
  2. Вызовите Zeit API, чтобы получить последнее развертывание приложения (обязательно отредактируйте сценарий, чтобы использовать имя вашего приложения).
  3. Убедитесь, что приложение отвечает на URL-адрес (настройте его в соответствии с конечной точкой работоспособности вашего приложения).
  4. Сделайте так, чтобы ваш домен (который мы ранее настроили для разрешения на zeit.co) указывал на новое развертывание (обязательно обновите домен в скрипте).

Вы можете запустить это N раз, и если N раз ваше приложение загрузится успешно, ваш трафик будет перенаправляться каждый раз. Вы можете настроить свой любимый CI для сценария или просто запускать его вручную каждый раз, когда вам нужно обновить приложение. Возврат будет таким же простым, как:

$ now alias PREVIOUS_DEPLOYMENT_ID YOURDOMAIN -t $ZEIT_TOKEN

Вот и все. Дешевое и легкое (дрянное) развертывание синих / зеленых.