Развертывание параллельного модуля с использованием App Engine SDK
TL;DR Есть ли способ развернуть модули App Engine параллельно?
Я создал приложение go, используя Google App Engine SDK для Go. Это приложение определяет несколько модулей. Эти модули являются автономными и не требуют какой-либо зависимости от других модулей.
Когда я пытаюсь развернуть модули в Google Cloud, я не могу не заметить, что модули загружаются последовательно. Это было бы хорошо, если бы развертывание было относительно быстрым, но каждый модуль требует своей собственной избыточной компиляции двоичного файла Go. Следовательно, помимо обычного времени загрузки, я должен ждать, пока мое приложение скомпилирует [количество модулей] x [время компиляции] каждый раз, когда я хочу развернуть.
Очевидное (быстрое) решение заключается в параллельном развертывании, поэтому я создал простой сценарий bash для независимого развертывания каждого модуля. Проблемой, с которой я сразу столкнулся с этим "решением", был ответ HTTP 500 от API App Engine. Все зонтичное приложение, охватывающее все модули, кажется, "блокируется" всякий раз, когда обновляется какой-либо отдельный модуль. Этот сценарий создает условие состязания, при котором только первый модуль, инициирующий развертывание, завершается успешно, а остальные отказывают.
Я боюсь, что это пережиток устаревших языков в App Engine. Поскольку каждый модуль использует один и тот же двоичный файл Go, на самом деле не требуется многократная компиляция одного и того же кода. Повторная компиляция избыточна, и нет способа обойти блокировку.
Одно гипотетическое решение, о котором у меня есть только смутное понимание, - это параллельная компиляция и последовательное развертывание. Я предполагаю, что этот подход будет включать в себя разборку инструмента конфигурации и переработку его для выполнения вышеупомянутым способом - хотя я не могу сказать наверняка (пока).
Любая помощь здесь будет очень благодарна. Спасибо!
1 ответ
Вы можете выполнить развертывание в другой "версии" приложения App Engine, а затем, когда все модули будут развернуты, переключаться очень быстро?
Версии также позволяют разделять трафик, если вам это нужно.