Я унаследовал проект GCP, используя Python в качестве основного языка. Это мое первое знакомство с GCP, и я обеспокоен тем, что проект не может быть должным образом структурирован в отношении передового опыта.
Проект состоит из App-Engine (стандарт) для предоставления нескольких конечных точек HTTP для использования веб-приложением, а также нескольких «триггерных» облачных функций, которые развертываются для обработки различных ситуаций, требующих внутренней обработки, например : объект загружается в корзину. В настоящее время база кода проекта содержит как код App-Engine, так и код облачных функций.
Структура кода выглядит следующим образом:
project/
├── main.py
└── common-ftns/
├── __init__.py
└── initialize-app.py
└── utils.py
└── cloud-ftns/
└── cloud_ftn-1.py
└── cloud_ftn-2.py
└── services/
└── service-1-routes.py
└── service-1.py
└── service-2-routes.py
└── service-2.py
Мы используем GCP Cloud Build для развертывания всего решения, и все отлично работает. Однако меня беспокоит общее использование main.py как для App-Engine, так и для облачных функций. Кажется, что и для GAE, и для облачных функций требуется наличие файла main.py уровня root для инициализации приложения (включая Flask), а также для объявления точек входа в облачную функцию. Это беспокоит меня, так как кажется, что облачные функции и App-Engine не должны требовать общей отправной точки, не говоря уже о том, что облачные функции для обработки триггеров не должны иметь Flask, поскольку они не используют его.
Мой вопрос таков: считается ли этот тип структуры "наилучшей практикой" в мире GCP / Python? Если нет, то есть ли лучший способ использовать main.py, чтобы облачным функциям и GAE не приходилось запускать один и тот же сценарий запуска?