Google PCD: Проектирование API, интеграция и событийно-ориентированная разработка — Руководство по подготовке

Часть Google Professional Cloud Developer — Руководство по подготовке. Практикуйтесь с проверенными ответами в центре экзаменов Google, или пройдите тесты на время на ExamRoll.io.

Обзор

Современная интеграция приложений в Google Cloud сочетает в себе хорошо спроектированные синхронные API с отказоустойчивыми асинхронными и событийно-ориентированными паттернами. Цель состоит в том, чтобы обеспечить четкие контракты, строгую идентификацию, последовательную обработку ошибок и операционные элементы управления, которые поддерживают низкую задержку и высокую доступность даже в условиях сбоев, масштабирования или изменений. В этом разделе рассматриваются выбор протоколов и API, шлюзы и аутентификация, маршрутизация сообщений и событий, фоновые задачи, оркестрация, идентификация и доверие между сервисами, паттерны надежности, безопасные веб-хуки и безопасное развитие схем.

Проектирование и управление API

Выберите правильный протокол:

Версионирование и пагинация:

Валидация и ошибки:

Варианты управления API:

Аутентификация и квоты:

Минимальный пример OpenAPI для API Gateway с бэкендом на Cloud Run и OIDC:

openapi: 3.0.0
info: {title: orders, version: 1.0.0}
paths:
  /v1/orders:
    get:
      security: [{firebase: []}]
      x-google-backend: {address: https://orders-xyz-uc.a.run.app}
      responses: {"200": {description: OK}}
components:
  securitySchemes:
    firebase:
      type: http
      scheme: bearer
      bearerFormat: JWT
      x-google-issuer: https://securetoken.google.com/PROJECT_ID
      x-google-audiences: PROJECT_ID

Асинхронный обмен сообщениями и событиями

Основы Pub/Sub:

Создание темы, подписки и DLQ:

gcloud pubsub topics create orders
gcloud pubsub topics create orders-dlq
gcloud pubsub subscriptions create orders-sub \
  --topic=orders \
  --dead-letter-topic=orders-dlq \
  --max-delivery-attempts=5 \
  --ack-deadline=30

Логика потребителя: реализуйте идемпотентные обработчики и дедупликацию (например, по messageId или ключу идемпотентности на уровне приложения); повторяйте временные ошибки с экспоненциальной задержкой; перемещайте невосстановимые сообщения в DLQ и оповещайте об этом.

Eventarc и CloudEvents:

Создание триггера Eventarc для финализации объекта в Cloud Storage:

gcloud eventarc triggers create index-new-objects \
  --destination-run-service=media-indexer \
  --destination-run-region=us-central1 \
  --event-filters="type=google.cloud.storage.object.v1.finalized" \
  --event-filters="bucket=my-assets-bucket" \
  --service-account=eventarc-router@PROJECT_ID.iam.gserviceaccount.com

Компромиссы:

Оркестрация, фоновые задачи и длительные процессы

Cloud Tasks:

Создание очереди с ограничением скорости и повторными попытками:

gcloud tasks queues create payments-queue \
  --max-dispatches-per-second=50 \
  --max-concurrent-dispatches=200 \
  --max-attempts=10 \
  --min-backoff=5s \
  --max-backoff=300s

Workflows:

Схема компенсации:

main:
  params: [orderId]
  steps:
  - charge:
      call: http.post
      args: {url: ${paymentsUrl}/charge, auth: {type: OIDC}, body: {orderId: ${orderId}}}
      result: chargeRes
  - reserveInventory:
      try:
        steps:
        - reserve:
            call: http.post
            args: {url: ${inventoryUrl}/reserve, auth: {type: OIDC}, body: {orderId: ${orderId}}}
      except:
        as: e
        steps:
        - refund:
            call: http.post
            args: {url: ${paymentsUrl}/refund, auth: {type: OIDC}, body: {paymentId: ${chargeRes.body.id}}}
        - raise: ${e}

Операционные рекомендации:

Идентификация, надежность и интеграции

Идентификация и передача токенов между сервисами:

Получение ID-токена в Cloud Run:

AUD="https://inventory-xyz-uc.a.run.app"
TOKEN=$(curl -s -H "Metadata-Flavor: Google" \
  "http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=${AUD}")
curl -H "Authorization: Bearer ${TOKEN}" "${AUD}/v1/check"

Синхронные зависимости и отказоустойчивость:

Веб-хуки и интеграции со сторонними системами:

Эволюция схемы и совместимость:

Безопасность и квоты на всех уровнях стека:

Практический сценарий

Компания AcmeRetail создает сервис «закажи и забери» (click-to-collect) на платформе Google Cloud. Веб-приложение на React вызывает публичный API для размещения заказов; бэкенд-сервисы должны резервировать товары на складе, проводить оплату и уведомлять магазины. Команде требуются API с низкой задержкой, надежная фоновая обработка, обновления на основе событий и безопасный откат при частичных сбоях.

Подход:

  1. Открыть публичный REST API через API Gateway, который будет работать перед сервисом заказов на Cloud Run.
  1. Реализовать вызовы между сервисами с помощью gRPC для внутренних «горячих» путей (от сервиса заказов к сервисам инвентаризации, ценообразования).
  1. Использовать Workflows для оркестрации саги заказа: списать оплату, зарезервировать товар, создать задачу на самовывоз; выполнить компенсирующие транзакции при сбое.
  1. Публиковать доменные события в топики Pub/Sub orders и inventory для нижестоящих потребителей (аналитика, уведомления для магазинов).
  1. Инициировать уведомления для магазинов через Eventarc, направляя их в сервис-уведомитель на Cloud Run при соответствующих изменениях в Cloud Storage и Firestore.
  1. Обрабатывать веб-хуки от платежного провайдера с помощью выделенной конечной точки на Cloud Run, расположенной за API Gateway, проверяя HMAC-подписи и используя Cloud Tasks для обработки.
  1. Внедрить паттерны надежности: прерыватели цепи (circuit breakers) в Apigee или Envoy для исходящих вызовов к платежному провайдеру; клиентские таймауты установлены ниже SLA провайдера; повторные попытки с усеченной экспоненциальной выдержкой для ошибок 429/5xx.
  1. Внедрить контроль эволюции схем: Protobuf для внутреннего gRPC с зарезервированными полями; в REST-ответах использовать аддитивные изменения JSON; в Pub/Sub использовать валидацию схемы Protobuf на этапе публикации.
  1. Наблюдать и эксплуатировать: передавать заголовки трассировки между API Gateway и сервисами; экспортировать метрики из Cloud Logging для отслеживания частоты ошибок и размера DLQ; настроить оповещения на исчерпание бюджета ошибок SLO и аномалии с ошибками 429/5xx.

Вычислительные ресурсы · Все домены · Данные приложений

Отработать эти вопросы → · Тесты на время на ExamRoll.io →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

Сдайте экзамен →

Просмотреть Google →

Related guides

Все включено

Одна подписка. Каждый экзамен.

Каждый план открывает неограниченный поиск ответов, практические тесты, объяснения AI и полную библиотеку ресурсов — на более чем 20 языках.

Ежемесячно
24.87
Just €0.83/day
Все включено:
  • Неограниченный поиск ответов
  • Неограниченные практические тесты
  • Объяснения на основе AI
  • Полная библиотека ресурсов
  • 20+ языков
  • Еженедельные обновления контента
  • Награды и рефералы
  • Приоритетная поддержка
Начать бесплатную пробную версию

Кредитная карта не требуется*

Лучшая цена
12 месяцев
179.87
Just €0.49/daySave 40%
Все включено:
  • Неограниченный поиск ответов
  • Неограниченные практические тесты
  • Объяснения на основе AI
  • Полная библиотека ресурсов
  • 20+ языков
  • Еженедельные обновления контента
  • Награды и рефералы
  • Приоритетная поддержка
Начать бесплатную пробную версию

Кредитная карта не требуется*

✓ Включен бесплатный план · ✓ Отмена в любое время · ✓ Все планы открывают полный продукт