Проблема
выбрать правильную технологию для каждого компонента. Cloud Function масштабируема, но имеет строгие ограничения по времени выполнения. Dataflow является масштабируемым и может работать в течение длительного времени, но его трудно реализовать так, чтобы его можно было распараллелить и получить результат с одним значением, и он не может быть запущен из exent. Приложения Cloud Run могут быть запущены PubSub и могут работать в течение длительного времени, но могут быть остановлены GCP, если никто не ждет результата выполнения.
Решение
мы используем все компоненты, учитывая при назначении исполнителя ожидаемое время выполнения и источник запуска.
Проблема
дополнить хранилище данных (набор таблиц BigQuery) свежими результатами работы конвейеров ETL, в стиле Green-Blue.
Решение
мы внедрили конвейеры ETL для сохранения данных во временной копии хранилища данных и сообщения о ее готовности. Мы создали компонент, который отслеживал статус конвейера ETL и выполнял миграцию данных из временного в основной экземпляр хранилища данных. Чтобы обновлять хранилище данных каждый день, даже если не все конвейеры ETL были успешными, мы внедрили отложенное плановое выполнение по графику конвейеров ETL, которые не были завершены ранее.
Проблема
сэкономить бюджет Google Composer (этот компонент стоит дорого по сравнению с другими).
Решение
мы применили расписание для Composer, потому что оно не требовалось 24 часа в сутки. Но, поскольку нет функции остановки/запуска Composer, мы реализовали запланированные задания для создания Composer, восстановления его состояния (набор сценариев, выполняющих оркестровку конвейера), а затем его уничтожения. Сценарии развертывания также были обновлены для поддержки наличия/отсутствия Composer.