Микросервисам требуется как синхронная связь запрос/ответ, так и асинхронная, управляемая событиями.
→Используйте gRPC или HTTP для синхронных вызовов. Используйте Pub/Sub для асинхронной обработки событий и веерной рассылки.
Почему: Pub/Sub полностью отделяет сервисы для обеспечения надежности и независимого масштабирования. Прямые вызовы обеспечивают синхронные ответы с низкой задержкой.
Источник↗
Сервис бессерверных вычислений (Cloud Run, Cloud Functions) должен обрабатывать временные файлы.
→Используйте Cloud Storage для всего ввода-вывода временных файлов.
Почему: Локальная файловая система бессерверных платформ является эфемерной, находится в памяти и не является общей. Cloud Storage предоставляет надежное, масштабируемое хранилище, доступное для всех экземпляров.
Управляйте специфичной для среды конфигурацией и секретами для рабочих нагрузок GKE в соответствии с принципами 12-факторного приложения.
→Используйте K8s ConfigMaps для нечувствительной конфигурации. Используйте Secret Manager для конфиденциальных значений, доступ к которым осуществляется безопасно через Workload Identity.
Почему: Secret Manager — это более безопасное, управляемое и поддающееся аудиту решение, чем K8s Secrets. Workload Identity позволяет избежать управления и распространения ключей сервисных аккаунтов.
Источник↗
Приложение имеет экстремальные пики трафика, но длительные периоды простоя, когда затраты должны быть минимизированы.
→Используйте Cloud Run с `min-instances`, установленным в 0.
Почему: Cloud Run может масштабироваться до нуля, устраняя все затраты на вычисления в периоды простоя. GKE и Compute Engine требуют минимального количества запущенных узлов/экземпляров.
Внедрите повторные попытки, автоматические выключатели (circuit breakers) и mTLS единообразно во всех микросервисах без изменения кода приложения.
→Разверните service mesh (Anthos Service Mesh) на GKE.
Почему: Service mesh внедряет отказоустойчивость, безопасность и наблюдаемость на уровне платформы, сохраняя чистоту кода приложения и обеспечивая согласованное поведение.
Предоставьте доступ к бэкэнд-сервисам внешним партнерам или мобильным приложениям с ограничением скорости, ключами API и аналитикой использования.
→Используйте API Gateway перед бэкэнд-сервисами (например, Cloud Run, GKE).
Почему: API Gateway предоставляет полностью управляемое решение для вопросов жизненного цикла API (безопасность, мониторинг, версионирование), разгружая от них бэкэнд-сервис.
Источник↗
Выберите надежное, масштабируемое и строго согласованное хранилище для журнала событий с добавлением записей.
→Используйте Cloud Spanner для хранилища событий.
Почему: Spanner обеспечивает горизонтальное масштабирование со строгой глобальной согласованностью, что крайне важно для поддержания целостности журнала событий в масштабе.
API для длительной задачи должен отвечать немедленно, пока обработка продолжается в фоновом режиме.
→Конечная точка API ставит задачу в очередь Pub/Sub или Cloud Tasks и возвращает 202 Accepted с идентификатором задачи. Отдельный работник (Cloud Run, Cloud Function) обрабатывает задачу.
Почему: Это отделяет время ответа для пользователя от времени обработки на бэкэнде, улучшая UX и надежность системы. Используйте Cloud Storage для обновления статуса.
Поддерживайте согласованность данных между несколькими микросервисами без общей базы данных.
→Реализуйте паттерн Saga с использованием оркестратора (Cloud Workflows) или хореографии (события Pub/Sub) с компенсирующими транзакциями.
Почему: Позволяет избежать сложных и склонных к блокировкам двухфазных коммитов, отдавая предпочтение конечной согласованности, которая лучше подходит для распределенных систем.
Приложение вызывает сторонний API с ограничением скорости, данные в котором изменяются нечасто.
→Используйте Memorystore для Redis в качестве распределенного кэша. Реализуйте паттерн cache-aside с TTL. Используйте распределенную блокировку (например, Redis SETNX) для предотвращения «штампов кэша».
Почему: Распределенный кэш совместно использует данные между всеми экземплярами приложения, значительно сокращая количество вызовов внешнего API, улучшая задержку и соблюдая ограничения скорости.
Команде разработчиков требуются согласованные, предварительно настроенные, безопасные среды разработки с доступом к частным ресурсам VPC.
→Используйте Cloud Workstations.
Почему: Cloud Workstations предоставляет управляемые, контейнерные среды разработки с интегрированной безопасностью и доступом к VPC, решая проблему «у меня на машине работает».
Источник↗
SaaS-приложение требует, чтобы клиенты имели полностью изолированные данные, ключи шифрования и местонахождение данных.
→Используйте модель «один проект на клиента». Управляйте выделением ресурсов и конфигурацией централизованно с помощью IaC (Terraform).
Почему: Обеспечивает высочайший уровень изоляции для IAM, биллинга, квот, сети и местоположения данных, что часто требуется корпоративным или регулируемым клиентам.