Google PCD: API設計、統合、イベント駆動開発 — 学習ガイド

こちらの一部です: Google Professional Cloud Developer — 学習ガイド. 検証済みの解答で練習: Google試験ハブ, または時間制限付き模擬試験に挑戦: ExamRoll.io.

概要

Google Cloudにおけるモダンなアプリケーション統合は、適切に設計された同期APIと、回復力のある非同期およびイベント駆動パターンを融合させます。その目的は、明確な契約、強力なアイデンティティ、一貫したエラーハンドリング、そして運用制御を提供し、障害、スケーリング、または変更の状況下でも、低レイテンシと高可用性を維持することです。このセクションでは、プロトコルとAPIの選択、ゲートウェイと認証、メッセージングとイベントルーティング、バックグラウンドワーク、オーケストレーション、サービス間のアイデンティティと信頼、信頼性パターン、セキュアなWebhook、そして安全なスキーマ進化について説明します。

APIの設計と管理

適切なプロトコルの選択:

バージョニングとページネーション:

バリデーションとエラー:

API管理の選択肢:

認証とクォータ:

Cloud RunバックエンドとOIDCを使用した、最小限のAPI Gateway OpenAPIの例:

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:

Cloud Storageオブジェクトのファイナライズに対するEventarcトリガーの作成:

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}

運用上のガイダンス:

アイデンティティ、信頼性、および統合

サービス間のアイデンティティとトークン伝播:

Cloud RunでIDトークンを取得する:

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"

同期的な依存関係と回復性:

Webhookとサードパーティ統合:

スキーマの進化と互換性:

スタック全体でのセキュリティと割り当て:

実践的な問題シナリオ

AcmeRetailは、Google Cloud上でクリック&コレクトサービスを構築しています。ReactのWebアプリが公開APIを呼び出して注文を行い、バックエンドサービスは在庫の確保、支払い処理、店舗への通知を行う必要があります。チームは、低レイテンシーAPI、信頼性の高いバックグラウンド処理、イベント駆動の更新、部分的な障害発生時の安全なロールバックを必要としています。

アプローチ:

  1. Cloud Runの注文サービスの前にAPI Gatewayを配置し、公開REST APIを公開します。
  1. 内部のホットパス(注文から在庫、価格設定)には、gRPCを使用してサービス間呼び出しを実装します。
  1. Workflowsを使用して注文のサーガ(支払い処理、在庫確保、集荷タスク作成)をオーケストレーションし、障害時には補償処理を行います。
  1. ドメインイベントをPub/Subのトピックordersinventoryにパブリッシュし、ダウンストリームのコンシューマー(分析、店舗通知)に提供します。
  1. 関連するCloud StorageとFirestoreの変更に応じて、Eventarcを介してCloud Runの通知サービスへのトリガーを設定し、店舗への通知を行います。
  1. 支払いプロバイダーからのWebhookを、API Gatewayの前面にある専用のCloud Runエンドポイントで処理し、HMAC署名を検証し、処理にはCloud Tasksを使用します。
  1. 信頼性パターンを強制します:支払いプロバイダーへのアウトバウンド呼び出しにはApigeeまたはEnvoyでサーキットブレーカーを導入し、クライアントのタイムアウトはプロバイダーのSLAより低く設定し、429/5xxエラーには切り捨て指数バックオフ付きのリトライを適用します。
  1. スキーマの進化に関する管理策を採用します:内部gRPCには予約済みフィールドを持つProtobufを使用し、RESTレスポンスは追加的なJSONの変更を使用し、Pub/Subはパブリッシュ時にProtobufスキーマ検証を使用します。
  1. 観測と運用:API Gatewayとサービス間でトレースヘッダーを伝播させ、エラー率とDLQサイズのためにCloud Loggingメトリクスをエクスポートし、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

オールインワンアクセス

1つのサブスクリプション。すべての試験。

すべてのプランで、無制限の回答検索、模擬試験、AI解説、および完全なリソースライブラリが利用可能 — 20以上の言語に対応。

月額
24.87
Just €0.83/day
すべて含まれています:
  • 無制限の回答検索
  • 無制限の模擬試験
  • AIを活用した解説
  • 完全なリソースライブラリ
  • 20以上の言語
  • 毎週のコンテンツ更新
  • 特典 & 紹介
  • 優先サポート
無料トライアルを開始

クレジットカード不要*

ベストバリュー
12ヶ月
179.87
Just €0.49/daySave 40%
すべて含まれています:
  • 無制限の回答検索
  • 無制限の模擬試験
  • AIを活用した解説
  • 完全なリソースライブラリ
  • 20以上の言語
  • 毎週のコンテンツ更新
  • 特典 & 紹介
  • 優先サポート
無料トライアルを開始

クレジットカード不要*

✓ 無料プランが含まれています · ✓ いつでもキャンセル可能 · ✓ すべてのプランで製品の全機能が利用可能