Не могли бы вы порекомендовать нам лучшие практики для развертывания приложений в рабочей среде с помощью nextjs?
Мы думаем о таких стратегиях, как: развертывание канареек, сине-зеленое развертывание ... У нас есть несколько сомнений в отношении BUILD_ID.
Прямо сейчас, с такими стратегиями мы сталкиваемся с этой ошибкой:
INVALID_BUILD_ID, потому что в какой-то момент развертывания мы имеем в
минимум две разные версии приложения.
например:
В Канарском развертывании, в какой-то момент у нас есть 2 разные версии, Балансир отправляет клиента на
версия A, но затем, когда клиенту нужны другие ресурсы, балансировщик может отправить этот запрос
сервер с версией B. В этот момент клиент получает ошибку 500, когда приложение выбирает ресурсы, такие как serp.js, _error.js, _document.js, и веб-страница загружается неправильно.
_next/f6bff019-9550-4029-99fa-2b33a50045f6/page/index.js ---> old (previous deployment)
_next/005b2202-c5b2-4de6-afd8-1c8451d16ab3/page/index.js ---> new (current deployment)
До сих пор мы тестировали:
Переименуйте BUILD_ID, чтобы иметь одинаковый хеш в обеих версиях, но мы считаем это плохой практикой, потому что мы думаем, что кэш клиента не будет обновляться, как ожидается.
Липкие сеансы являются наиболее надежными, но мы рассматриваем приложение без сохранения состояния как приложение с состоянием, и на самом деле это не так.
Мы могли бы поместить на передний план CDN, который кэширует BUILD_ID, но мы не уверены, что время, которое мы должны назначить для кэширования файлов js.