Развертывание в нескольких средах на Amazon Elastic Beanstalk одновременно

У меня есть приложение, в котором есть несколько сред (все работают в Amazon Elastic Beanstalk), а именно: производство, рабочий и отладка. Каждая среда имеет соответствующую ветку git, которая в некоторых отношениях отличается от master (например, конфигурация изменена, а некоторый код удален).

я использую eb deploy развернуть новую версию приложения из своей ветки. Это архивирует текущую ветку git, используя git zip и отправляет информацию в Amazon. Затем он развертывается в запущенных экземплярах.

Проблема, однако, заключается в том, что развертывание занимает некоторое время (около 5 минут). Таким образом, между развертыванием, скажем, работника и производства у него разный код. Что плохо, потому что мои изменения могли изменить протокол очереди или что-то в этом роде.

Я хочу иметь возможность загружать информацию и выполнять ее обработку во всех средах, но не заменять код, а просто подготовить его. И после того, как я сделал это для всех сред, выполните команду типа "завершить развертывание", чтобы база кода заменялась во всех средах одновременно.

Есть ли способ сделать это?

1 ответ

Решение

Вам необходимо выполнить "сине-зеленое" развертывание, а не делать это на месте. Поскольку ваша модель развертывания требует синхронизации нескольких частей, изменение протокола, используемого этими частями, означает, что эти части ДОЛЖНЫ быть развернуты одновременно. Рассматривайте его как единый сервис, если есть часто нарушаемый протокол, который сильно связывает дизайн.

"Развернутый" означает, что внешний слой системы открыт и может использоваться другими системами. В этом случае кажется, что у вас есть уровень веб-сервера, который предоставляет API-интерфейс какой-то другой системе, и рабочий уровень, который читает сообщения, созданные веб-уровнем.

При внесении изменений в протокол прерывистой очереди необходимо развернуть ОБА-наборы изменений (уровень веб-сервера и уровень очереди) в совершенно НОВЫХ средах beanstalk, настроить их на использование друг друга, а затем выполнить перестановку DNS на открытой конечной точке со старой Веб-сервер EB среды на новый. После замены DNS на уровне веб-сервера и проверки правильности работы среды вы можете уничтожить старый уровень веб-сервера и очереди.

При обновлениях, не нарушающих протокол, вы можете просто обновить одну среду или другую.

Это звучит сложно, потому что это так. Если вы часто нарушаете протокол, то ваша система недостаточно отделена, чтобы рассчитывать на версию рабочих уровней и уровней веб-сервера, поэтому вам необходимо выполнить этот сложный процесс для их совместной версии.

Надеюсь это поможет!

Другие вопросы по тегам