Мы разрабатываем / поддерживаем мобильное приложение для клиента, который использует React-Native для взаимодействия с серверной частью GCP. База данных - это Firestore, объектное хранилище использует GCP Storage, мы используем движок приложения GCP для нескольких вызовов REST и серию облачных функций для обработки некоторой обработки Firestore и GCP Storage.
Развертывание нашего продукта состоит из доставки файлы сборки мобильного приложения для клиента (они распространяют приложение внутри на своих серверах), а для бэкэнда мы используем GCP CloudBuild для развертывания нашего движка приложения и облачных функций из нашей ветки master / prod. Однако за последние шесть месяцев у нас была серия грубых развертываний продуктов, которые в основном сводились к неожиданным проблемам с конфигурацией среды, когда мы не сталкивались с dev или qa envs (или забыли о них), а также с несколькими проблемами обновления базы данных ( изменения модели). Это оставляет нас с яйцом на лице с клиентом, поскольку развертывание может быть отложено на несколько часов, поскольку мы исправляем проблемы.
Чтобы попытаться решить эту проблему, мы рассматривали сине-зеленый стратегия развертывания для серверной части GCP. Это будет состоять из создания нового проекта GCP, развертывания в нем последней ветки master / prod и предоставления нам возможности полностью протестировать перед отправкой обновленного мобильного приложения клиенту - никаких сюрпризов. В теории это звучит великолепно, но на практике все не так просто. Основная проблема - это база данных Firestore и хранилище GCP - нам также потребуется перенести объекты хранилища и базу данных Firestore в новый проект. Выполнимо, но еще одна сложность.
Итак, наша сине-зеленая идея такова:
- Мы создаем новый проект «Firestore / GCP storage», единственной целью которого было бы действовать как место хранения данных "prod" (без движка приложения или облачных функций в этом проекте) и выступать в качестве поставщика аутентификации. Этот проект будет иметь статус c и не будет обновляться между развертываниями prod
- . Мы создаем новый проект «prod» (зеленый) GCP, в котором будут размещены новейшие функции App-Engine и Cloud для «зеленого» развертывания. Этому проекту будут предоставлены разрешения на доступ к данным проекта «Firestore / GCP storage» и объектам хранилища.
- Мобильное приложение будет подключаться к проекту «data-storage» для связи с Firestore и загрузки файлов и подключится с новым «зеленым» проектом для вызовов REST App-Engine
Мы надеемся, что этот шаблон позволит нам выполнять сине-зеленое развертывание логики c на бэкэнде, не беспокоясь о данных / передача объекта. У меня такой вопрос: Кто-нибудь когда-нибудь использовал этот тип шаблона развертывания в GCP? Это рекомендуемый шаблон или даже нежелательный анти-шаблон?
Любые отзывы приветствуются. Спасибо