Google PCD: Projektowanie API, integracja oraz programowanie sterowane zdarzeniami — Przewodnik do nauki

Część Google Professional Cloud Developer — Przewodnik do nauki. Ćwicz ze zweryfikowanymi odpowiedziami w centrum egzaminów Google, albo rozwiąż testy na czas na ExamRoll.io.

Przegląd

Nowoczesna integracja aplikacji w Google Cloud łączy dobrze zaprojektowane synchroniczne API z odpornymi wzorcami asynchronicznymi i sterowanymi zdarzeniami. Celem jest zapewnienie jasnych kontraktów, silnej tożsamości, spójnej obsługi błędów i mechanizmów operacyjnych, które utrzymują niskie opóźnienia i wysoką dostępność nawet w warunkach awarii, skalowania czy zmian. Ta sekcja omawia wybór protokołów i API, bramki i uwierzytelnianie, przesyłanie komunikatów i routing zdarzeń, zadania w tle, orkiestrację, tożsamość i zaufanie między usługami, wzorce niezawodności, bezpieczne webhooki oraz bezpieczną ewolucję schematów.

Projektowanie i zarządzanie API

Wybierz odpowiedni protokół:

Wersjonowanie i paginacja:

Walidacja i błędy:

Opcje zarządzania API:

Uwierzytelnianie i limity (quotas):

Minimalny przykład OpenAPI dla API Gateway z backendem Cloud Run i 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

Asynchroniczne przesyłanie komunikatów i zdarzeń

Podstawy Pub/Sub:

Utwórz temat, subskrypcję i 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

Logika konsumenta: zaimplementuj idempotentne handlery i deduplikację (np. po messageId lub kluczu idempotencji na poziomie aplikacji); ponawiaj próby przy błędach przejściowych z wycofywaniem wykładniczym (backoff); przenoś nienaprawialne komunikaty do DLQ i generuj alerty.

Eventarc i CloudEvents:

Utwórz trigger Eventarc dla finalizacji obiektu w 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

Kompromisy:

Orkiestracja, zadania w tle i procesy długotrwałe

Cloud Tasks:

Utwórz kolejkę z limitami szybkości i ponowieniami:

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:

Szkic kompensacji:

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}

Wskazówki operacyjne:

Tożsamość, niezawodność i integracje

Tożsamość między usługami i propagacja tokenów:

Pobieranie tokenu ID w 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"

Zależności synchroniczne i odporność na awarie:

Webhooki i integracje z systemami zewnętrznymi:

Ewolucja schematu i kompatybilność:

Bezpieczeństwo i limity (quotas) na wszystkich poziomach stosu:

Praktyczny scenariusz problemowy

Firma AcmeRetail buduje na Google Cloud usługę click-to-collect (zamów i odbierz). Aplikacja internetowa oparta na React wywołuje publiczne API w celu składania zamówień; usługi backendowe muszą rezerwować towar, pobierać płatności i powiadamiać sklepy. Zespół potrzebuje API o niskim opóźnieniu, niezawodnego przetwarzania w tle, aktualizacji sterowanych zdarzeniami oraz bezpiecznego wycofywania zmian w przypadku częściowych awarii.

Podejście:

  1. Udostępnij publiczne API REST za pomocą API Gateway umieszczonego przed usługą zamówień w Cloud Run.
  1. Zaimplementuj komunikację między usługami za pomocą gRPC dla wewnętrznych gorących ścieżek (hot paths) (zamówienia do systemu inwentaryzacji, cennik).
  1. Użyj Workflows do orkiestracji sagi zamówienia: pobranie płatności, rezerwacja towaru, utworzenie zadania odbioru; wykonanie akcji kompensujących w przypadku awarii.
  1. Publikuj zdarzenia domenowe do tematów Pub/Sub orders i inventory dla konsumentów podrzędnych (analityka, powiadomienia dla sklepów).
  1. Uruchamiaj powiadomienia dla sklepów za pomocą Eventarc do usługi powiadamiającej w Cloud Run w odpowiedzi na odpowiednie zmiany w Cloud Storage i Firestore.
  1. Obsługuj webhooki od dostawcy płatności za pomocą dedykowanego punktu końcowego w Cloud Run, poprzedzonego API Gateway, weryfikując sygnatury HMAC i używając Cloud Tasks do przetwarzania.
  1. Wdróż wzorce niezawodności: mechanizmy circuit breaker w Apigee lub Envoy dla wywołań wychodzących do dostawcy płatności; timeouty klienta ustawione poniżej SLA dostawcy; ponowienia z obciętym wykładniczym czasem oczekiwania (truncated exponential backoff) dla błędów 429/5xx.
  1. Zastosuj kontrolę ewolucji schematu: Protobuf dla wewnętrznych usług gRPC z zarezerwowanymi polami; odpowiedzi REST używają addytywnych zmian w JSON; Pub/Sub wykorzystuje walidację schematu Protobuf w momencie publikacji.
  1. Obserwuj i operuj: propaguj nagłówki śledzenia między API Gateway a usługami; eksportuj metryki z Cloud Logging dotyczące wskaźników błędów i rozmiaru DLQ; ustawiaj alerty na wypalenie budżetu błędu (SLO burn) oraz anomalie w błędach 429/5xx.

Compute · Wszystkie domeny · Dane aplikacji

Przećwicz te pytania → · Testy na czas na 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.

Zdaj egzamin →

Przeglądaj Google →

Related guides

Dostęp all-in-one

Jedna subskrypcja. Każdy egzamin.

Każdy plan odblokowuje nieograniczone wyszukiwanie odpowiedzi, testy praktyczne, wyjaśnienia AI i pełną bibliotekę zasobów — w ponad 20 językach.

Miesięczny
24.87
Just €0.83/day
Wszystko w cenie:
  • Nieograniczone wyszukiwanie odpowiedzi
  • Nieograniczone testy praktyczne
  • Wyjaśnienia wspomagane AI
  • Pełna biblioteka zasobów
  • Ponad 20 języków
  • Cotygodniowe aktualizacje treści
  • Nagrody i polecenia
  • Priorytetowe wsparcie
Rozpocznij bezpłatny okres próbny

Karta kredytowa nie jest wymagana*

Najlepsza wartość
12 miesięcy
179.87
Just €0.49/daySave 40%
Wszystko w cenie:
  • Nieograniczone wyszukiwanie odpowiedzi
  • Nieograniczone testy praktyczne
  • Wyjaśnienia wspomagane AI
  • Pełna biblioteka zasobów
  • Ponad 20 języków
  • Cotygodniowe aktualizacje treści
  • Nagrody i polecenia
  • Priorytetowe wsparcie
Rozpocznij bezpłatny okres próbny

Karta kredytowa nie jest wymagana*

✓ Plan darmowy w zestawie · ✓ Anuluj w dowolnym momencie · ✓ Wszystkie plany odblokowują pełny produkt