PCA practice questions and answers
All 55 questions from Full Practice Test 1 for Professional Cloud Architect, with the correct answer and a full explanation for each — including why the other options are wrong. Free to read, no signup.
What this set covers
Questions are weighted to match the official PCA exam guide. The real exam is 50-60 multiple choice and multiple select questions (2 case studies; case study questions are 20-30% of the exam) questions in 120 minutes with a pass mark of Not published (pass/fail only; commonly reported ~70% - unofficial).
- Designing and planning a cloud solution architecture14 q · 25%
- Managing and provisioning a cloud solution infrastructure10 q · 18%
- Designing for security and compliance9 q · 17%
- Analyzing and optimizing technical and business processes8 q · 15%
- Managing implementation7 q · 13%
- Ensuring solution and operations excellence7 q · 12%
A logistics company must classify 20,000 incoming shipping documents a day into 12 business categories. The team has no labeled training data and needs a working classifier in two weeks. Accuracy must reach 92%, and finance wants a predictable per-document cost. Which approach gives the FASTEST time to value while still allowing the accuracy target to be met?
- APre-train a domain-specific language model from scratch on an AI Hypercomputer TPU slice, then serve it on a Vertex AI endpoint so the company owns the whole model.
- BPrompt a Gemini model from Model Garden with a few-shot prompt grounded on the company's own classification policy, measure accuracy on a held-out sample, and move to supervised fine-tuning only if the 92% target is missed.✓
- CHave staff label 20,000 documents by hand and train a Document AI custom classifier on that set before evaluating any other option.
- DFine-tune an open-weights model from Model Garden on a GPU node pool as the first step, because a base foundation model can never reach 92% on a domain-specific task.
Correct answer: B — Prompt a Gemini model from Model Garden with a few-shot prompt grounded on the company's own classification policy, measure accuracy on a held-out sample, and move to supervised fine-tuning only if the 92% target is missed.
With no labeled data and a two-week deadline, a foundation model that is already trained is the only option that can produce results in days. Grounding the prompt on the company's own classification policy pushes accuracy up without any training run, and token pricing gives a predictable per-document cost. Measuring first tells you whether fine-tuning is even needed. Option A takes months of compute and a very large corpus, so it cannot meet the deadline. Option C spends the entire two weeks labeling before anyone knows if labeling is required. Option D rests on a false claim: base models often clear domain classification targets with good prompting, and fine-tuning as step one adds cost and delay for no measured reason.
An audit requires separation of duties: an engineer who builds a container image must never be able to approve that image for production. The build engineers group already inherits a broad Editor role at the folder level, and other teams depend on that grant. What should the architect do to enforce the rule?
- AReplace the folder-level Editor grant with a custom role for every principal in the folder and leave out the release approval permissions.
- BAdd an IAM condition to the folder Editor binding so that it applies only to resources tagged as non-production.
- CCreate an IAM deny policy on the folder that denies the release approval permissions to the build engineers group, and grant the approval role only to a separate release managers group.✓
- DGrant the build engineers group the release approval role only in the production project and review Cloud Audit Logs weekly for misuse.
Correct answer: C — Create an IAM deny policy on the folder that denies the release approval permissions to the build engineers group, and grant the approval role only to a separate release managers group.
IAM deny policies are evaluated before allow policies, so a deny rule blocks the release approval permissions for the build engineers group even though those permissions arrive through an inherited Editor grant. Pairing that with the approval role granted only to release managers gives a clean separation of duties. A is heavy-handed and fragile: it breaks other teams and any future Editor grant re-opens the hole. B is the tempting answer, but a condition scopes where the role applies, and the engineers would still hold approval permissions on anything that matches the tag. D grants exactly the permission the audit forbids and replaces prevention with detection.
IAM deny policies overviewA media company runs a rendering pipeline. About 300 GKE pods and 20 Compute Engine VMs must mount the same file system at the same time for read and write. The software uses standard POSIX calls, including file locking, and cannot be changed. The share holds about 20 TiB and must keep serving if a single zone is lost. Which option meets the requirement with the LEAST application change?
- ACreate a Cloud Storage bucket and mount it in the pods and the VMs with Cloud Storage FUSE.
- BCreate a Filestore instance on the Regional service tier and mount it over NFS from the pods and the VMs.✓
- CCreate a Filestore instance on the Basic SSD service tier and mount it over NFS from the pods and the VMs.
- DCreate a Hyperdisk Balanced volume in multi-writer mode and attach it to the VMs and to the GKE nodes.
Correct answer: B — Create a Filestore instance on the Regional service tier and mount it over NFS from the pods and the VMs.
The Filestore Regional service tier serves NFS, which gives full POSIX semantics including file locking, it scales well past 20 TiB, and it replicates data across zones in the region so the share survives the loss of one zone. Cloud Storage FUSE (option A) puts a file interface on object storage: there is no real file locking, directory renames are not atomic and metadata operations are slow, so a POSIX application breaks or corrupts data. Filestore Basic SSD (option C) gives the right protocol but lives in one zone, so it fails the zone-loss requirement. Multi-writer Hyperdisk (option D) shares a raw block device with a small number of instances and needs a cluster file system on top; mounting one ext4 volume read-write from many clients corrupts it, and it is not a shared POSIX share for pods across nodes.
Filestore service tiersA machine learning team submits training pods to a GKE Standard cluster that has node auto-provisioning enabled. Every pod requests one NVIDIA GPU, and no GPU node pool exists yet. The pods stay Pending, the scheduler reports insufficient nvidia.com/gpu, and the cluster autoscaler logs show that no new node pool is being created. What is the MOST likely fix?
resources:
limits:
nvidia.com/gpu: 1- AAdd a toleration for the nvidia.com/gpu=present:NoSchedule taint to the pod spec so the scheduler can place the pods on GPU nodes.
- BAdd resource limits for the GPU accelerator type to the cluster's node auto-provisioning configuration so it is allowed to create GPU node pools.✓
- CInstall the NVIDIA driver installer DaemonSet in the kube-system namespace so the GPUs are registered as an extended resource.
- DMove the workload to a GKE Autopilot cluster and submit exactly the same pod spec, since Autopilot creates nodes without any node pool configuration.
Correct answer: B — Add resource limits for the GPU accelerator type to the cluster's node auto-provisioning configuration so it is allowed to create GPU node pools.
Node auto-provisioning only creates node pools for resource types that appear in its resource limits. If no limit is set for the accelerator type, for example nvidia-l4, NAP will never provision a GPU node pool and the pods stay Pending forever. Option A is unnecessary: GKE adds the GPU toleration automatically to pods that request nvidia.com/gpu, so the missing toleration is not the blocker. Option C is a real requirement on some node images, but with zero GPU nodes in the cluster the DaemonSet has nothing to install on. Option D fails because Autopilot GPU pods still need a cloud.google.com/gke-accelerator node selector and both requests and limits, so the unchanged spec will not schedule there either.
Node auto-provisioningA company runs a steady baseline of about 2,000 vCPUs in europe-west1 that will not change for three years, plus unpredictable daily peaks that can double that number. The peak work is stateless and can be retried. What is the MOST cost-effective compute purchase plan?
- ABuy three-year resource-based commitments in europe-west1 sized to the peak, and run nothing on demand.
- BBuy three-year flexible committed use discounts sized to baseline plus peak, and let sustained use discounts cover anything left over.
- CBuy three-year resource-based commitments in europe-west1 for the steady baseline only, and serve the peaks with autoscaled on-demand instances and Spot VMs where work can be retried.✓
- DBuy one-year resource-based commitments for baseline plus peak and move them to another region or machine family whenever the workload shifts.
Correct answer: C — Buy three-year resource-based commitments in europe-west1 for the steady baseline only, and serve the peaks with autoscaled on-demand instances and Spot VMs where work can be retried.
Commitments should cover only the capacity that is always running, because you pay for a commitment whether or not you use it, and the variable top is cheaper on demand or, for retryable work, on deeply discounted Spot VMs. A and B both commit to peak capacity, so the company pays for the peak 24 hours a day; B also takes the smaller flexible discount rate for the baseline it could have covered at the higher resource-based rate. D is wrong on a hard fact: a resource-based commitment is tied to a region and machine family and cannot be moved or cancelled, and only a flexible spend-based commitment travels across regions and families in exchange for a lower discount. Sustained use discounts apply automatically to eligible on-demand usage and never to committed or Spot usage, so they are a bonus, not a plan.
Committed use discounts overviewA company wants to retire its client VPN. Employees must reach internal web apps that run on managed instance groups behind an external Application Load Balancer. Access must be allowed only from corporate-managed laptops and only from three approved countries. Platform engineers must also keep SSH access to the same VMs, without a VPN and without giving the VMs external IP addresses. Which configuration meets ALL of these requirements?
- AEnable IAP on the backend service, grant IAP-secured Web App User to the employee group, and add an ingress firewall rule that allows TCP 22 from 0.0.0.0/0 while a Cloud Armor policy blocks requests from other countries.
- BEnable IAP on the backend service, grant IAP-secured Web App User to the employee group, and create an Access Context Manager access level that allows only the three approved country IP ranges. For SSH, give each VM an external IP address restricted by a firewall rule.
- CEnable IAP on the backend service, grant IAP-secured Web App User to the employee group, bind an Access Context Manager access level that requires a Chrome Enterprise Premium device policy plus the approved regions, and add an ingress firewall rule that allows TCP 22 from 35.235.240.0/20.✓
- DMove the apps behind an internal Application Load Balancer, connect users with Cloud VPN in split-tunnel mode, and use VPC firewall rules to restrict which countries can reach the load balancer.
Correct answer: C — Enable IAP on the backend service, grant IAP-secured Web App User to the employee group, bind an Access Context Manager access level that requires a Chrome Enterprise Premium device policy plus the approved regions, and add an ingress firewall rule that allows TCP 22 from 35.235.240.0/20.
Identity-Aware Proxy checks identity and authorization before the request reaches a backend, and a Chrome Enterprise Premium access level adds context: an Endpoint Verification device policy proves the laptop is corporate managed, and region conditions restrict the country. For shell access, IAP TCP forwarding tunnels SSH from the range 35.235.240.0/20, so an ingress rule for that range on port 22 removes any need for external IPs. Option B only checks IP, so an unmanaged personal laptop inside an approved country still gets in, and adding external IPs re-exposes the VMs. Option A opens SSH to the whole internet, and a Cloud Armor policy protects HTTP(S) load balancer traffic, not SSH sessions. Option D keeps the VPN the company is trying to retire.
Using IAP for TCP forwardingA logistics company runs its order system in us-east1 on Compute Engine and Cloud SQL. The business agreed on a 4-hour RTO and a 15-minute RPO for a regional outage. A full outage happens perhaps once every few years, and the finance director wants the LOWEST steady-state cost that still meets both numbers. Which disaster recovery pattern should the architect choose?
- ABackup and restore: nightly Cloud SQL backups and machine images copied to us-west1, rebuilt with Terraform after an outage.
- BWarm standby: a scaled-down but running copy of every tier in us-west1, resized during failover.
- CPilot light: a cross-region Cloud SQL replica kept in sync in us-west1, images and Terraform ready, and application instances started only at failover.✓
- DHot multi-region: the full stack active in both regions behind a global external Application Load Balancer.
Correct answer: C — Pilot light: a cross-region Cloud SQL replica kept in sync in us-west1, images and Terraform ready, and application instances started only at failover.
Pilot light keeps only the expensive-to-rebuild part warm, which is the data. The cross-region Cloud SQL replica streams changes continuously, so the RPO stays in minutes, and starting instances from prepared images with Terraform fits comfortably inside 4 hours. Backup and restore fails the RPO because a nightly backup can lose a full day of orders. Warm standby and hot multi-region both meet the numbers easily, but each pays for idle compute every hour of every year, and the requirement asks for the lowest steady-state cost among the options that qualify. Whatever the pattern, the failover must be tested on a schedule, because an untested DR plan does not have an RTO, only a hope.
Cloud SQL cross-region replicasAn architect plans to use Gemini Cloud Assist while designing a new workload and while supporting it in production. Which statement correctly describes what the tool does and how its output should be handled?
- AOnce enabled, it watches Cloud Monitoring and applies corrective changes to production resources by itself, so a separate change process is no longer needed.
- BIt can summarize an incident using the project's own logs and metrics, suggest likely causes, draft gcloud commands and Terraform configuration, and give cost and design recommendations, but an engineer must review and test every suggestion before it goes through the normal deployment pipeline.✓
- CIt answers questions about public product documentation only and has no view of the resources that exist in the project.
- DIt must first be fine-tuned on the company's own runbooks before it can answer any question about the environment.
Correct answer: B — It can summarize an incident using the project's own logs and metrics, suggest likely causes, draft gcloud commands and Terraform configuration, and give cost and design recommendations, but an engineer must review and test every suggestion before it goes through the normal deployment pipeline.
Gemini Cloud Assist is grounded in the customer's own environment, so it can help investigate an incident from that project's logs and metrics, propose likely causes, draft gcloud commands and Terraform, and surface cost and design recommendations. What it does not do is change anything for you: its output is a suggestion that an engineer reviews, tests and then promotes through the same code review and deployment pipeline as any hand-written change. Option A describes autonomous remediation, which the product does not perform and which would bypass change control. Option C understates it, because the assistant does have context on the resources in the project. Option D is wrong: no fine-tuning step is required to use it.
Gemini for Google Cloud documentationA team writes integration tests for a service that uses Pub/Sub, Firestore, Spanner and Bigtable. The tests must run in CI with no billable resources and no network calls to Google Cloud. Which statement about the Google Cloud emulators is TRUE?
- AThe application must be rewritten against separate emulator client libraries, because the production client libraries always resolve and call the Google API endpoints.
- BEmulator usage is billed at a reduced rate compared with the real services, and each client still needs a service account key file so the emulator can authenticate the caller.
- CSetting PUBSUB_EMULATOR_HOST, FIRESTORE_EMULATOR_HOST, SPANNER_EMULATOR_HOST and BIGTABLE_EMULATOR_HOST makes the standard client libraries talk to the emulators, but the emulators do not enforce IAM, do not apply production quotas and do not reproduce production performance.✓
- DThe emulators enforce the same IAM policies as the real services, so the same test suite can verify that a service account is correctly missing a permission.
Correct answer: C — Setting PUBSUB_EMULATOR_HOST, FIRESTORE_EMULATOR_HOST, SPANNER_EMULATOR_HOST and BIGTABLE_EMULATOR_HOST makes the standard client libraries talk to the emulators, but the emulators do not enforce IAM, do not apply production quotas and do not reproduce production performance.
Each emulator is picked up by the normal client library through its own environment variable, so no application code changes and no credentials are required. That is why option A and the key file half of option B are wrong, and emulators are free to run, which kills the rest of option B. The important limitation for an architect is what the emulators leave out: they accept any caller without checking IAM, they do not apply production quotas or rate limits, and their latency and throughput say nothing about production, so permission tests and load tests must still run against real services in a test project. Option D claims the opposite of that behaviour.
Testing apps locally with the Pub/Sub emulatorA bank runs its core account database on Cloud SQL for PostgreSQL in europe-west1. The risk register calls out the loss of a single zone as the failure to design for. The recovery objectives are RPO = 0 (no committed transaction may be lost) and RTO under 5 minutes. Which option meets both objectives with the LEAST operational overhead?
- ACreate a cross-region read replica in europe-west4 and promote it when the zone fails.
- BEnable the high availability configuration so the instance has a synchronous standby in a second zone of europe-west1.✓
- CEnable point-in-time recovery with 7 days of transaction logs and restore to the moment before the failure.
- DSchedule hourly on-demand backups and export them to a dual-region Cloud Storage bucket.
Correct answer: B — Enable the high availability configuration so the instance has a synchronous standby in a second zone of europe-west1.
Cloud SQL high availability writes every transaction synchronously to a standby in a second zone of the same region, so a zone failure loses nothing (RPO = 0) and the automatic failover finishes in about a minute. A cross-region read replica replicates asynchronously, so promoting it can lose the last transactions in flight, which breaks RPO = 0, and promotion is a manual step. Point-in-time recovery and backups both create a brand new instance from stored data, which takes far longer than 5 minutes. Note the limit of the correct answer: HA protects against a zone failure, not a whole-region failure. Surviving the loss of europe-west1 still needs a cross-region replica, and that design cannot offer RPO = 0.
Cloud SQL high availabilityAn external auditor asks a company to prove who read objects in a Cloud Storage bucket that holds customer records, and who changed IAM policies, over the last 12 months. The evidence must be complete and must not be changeable or deletable by anyone inside the company, including project owners. Which TWO steps are required? (Select TWO.)
- AIn the IAM audit configuration, turn on Data Access audit logs with the DATA_READ log type for Cloud Storage.✓
- BIn the IAM audit configuration, turn on Admin Activity audit logs so that IAM policy changes are captured.
- CRaise the retention period of the _Default log bucket to 3,650 days.
- DCreate an organization-level aggregated sink that exports the audit logs to a Cloud Storage bucket that has a locked retention policy.✓
- EEnable VPC Flow Logs on every subnet that hosts clients of the bucket.
Correct answer: A, D — In the IAM audit configuration, turn on Data Access audit logs with the DATA_READ log type for Cloud Storage. · Create an organization-level aggregated sink that exports the audit logs to a Cloud Storage bucket that has a locked retention policy.
Data Access audit logs are disabled by default for Cloud Storage because of their volume, so DATA_READ must be turned on explicitly in the IAM audit configuration before object reads are recorded at all. Immutability then comes from an organization-level aggregated sink into a Cloud Storage bucket protected by a locked retention policy: once the policy is locked it cannot be shortened or removed, and objects cannot be deleted before their retention expires, not even by an owner. Option B is not a step anyone needs to take, because Admin Activity audit logs, which include IAM policy changes, are always written and cannot be turned off. Option C only changes a retention setting that an administrator can lower again later, so it is not tamper-evident. Option E records network flows, not who read which object.
Cloud Audit Logs overviewAfter a release, p99 latency on a checkout API rises from 300 ms to 3 s, but the error rate barely moves. The team runs a blameless root cause analysis and wants to find which downstream dependency is slow. What is the MOST effective order of tools?
- ASearch Logs Explorer across every service for slow requests, then form a theory about which dependency changed.
- BStart with the Cloud Monitoring dashboard to confirm when and by how much latency changed, then compare Cloud Trace spans before and after that time to find the call that grew, then open Error Reporting for grouped exceptions from that service.✓
- CStart with Error Reporting, and if no new error groups appear, conclude that the release is not the cause.
- DStart with Cloud Profiler CPU and heap profiles of the checkout service to find the function that got slower.
Correct answer: B — Start with the Cloud Monitoring dashboard to confirm when and by how much latency changed, then compare Cloud Trace spans before and after that time to find the call that grew, then open Error Reporting for grouped exceptions from that service.
The investigation should move from the symptom to the cause: Monitoring pins the exact start time and size of the regression, Cloud Trace breaks a slow request into spans so the dependency whose span time grew is visible, and Error Reporting then supplies grouped stack traces from that specific service. C is the trap the scenario is built around, because a latency regression often produces no new exceptions at all, so an empty Error Reporting view proves nothing. A is not wrong in principle but reading raw logs across every service without a time window or a suspect span is slow and usually inconclusive. D looks for CPU inside the checkout service, which will not reveal time spent waiting on a downstream call.
Cloud Trace documentationA bank copies customer records into BigQuery for analytics. Analysts must be able to join the transactions table to the customer profile table on customer ID, but must never see the real ID. The same real ID must always produce the same replacement value in every table and in every load. Customer IDs are UUID strings, and no downstream tool needs the replacement to look like a UUID. The encryption key must stay in Cloud KMS. Which Sensitive Data Protection transformation should the architect use?
- ADeterministic encryption with a KMS-wrapped key, then run a re-identification risk analysis job on the remaining quasi-identifiers such as postcode, age and gender.✓
- BCharacter masking that replaces every character of the customer ID with an asterisk before the data is written to BigQuery.
- CFormat-preserving encryption, because a join is only possible when the token keeps the original length and character set of the customer ID.
- DCrypto hashing of the customer ID with a fresh random salt generated for each table load, so the same value is never hashed the same way twice.
Correct answer: A — Deterministic encryption with a KMS-wrapped key, then run a re-identification risk analysis job on the remaining quasi-identifiers such as postcode, age and gender.
Deterministic encryption maps the same input to the same token every time, so referential integrity is preserved and analysts can still join tables, while the key stays wrapped by Cloud KMS and only privileged callers can re-identify. Risk analysis on the remaining quasi-identifiers is the necessary second step, because removing the direct identifier does not stop someone joining postcode plus age plus gender back to a real person. Option B destroys the join: every distinct customer collapses into the same mask. Option C states a false reason. Joins need determinism, not format preservation, and format-preserving encryption adds an alphabet definition and minimum-length constraints for no benefit here. Option D breaks joins on purpose by re-salting per load, and hashing is not reversible.
Transformations referenceA platform team still uses Deployment Manager templates, which are no longer supported. They will move to Terraform and want Google Cloud to run it rather than build and maintain their own pipeline. Which statement is correct?
- AUse Infrastructure Manager when the team wants Google Cloud to run Terraform and manage state and locking without building pipeline infrastructure; each deployment names a service account, and the caller must be allowed to act as it with roles/iam.serviceAccountUser.✓
- BUse Infrastructure Manager because it is now the only supported way to run Terraform against Google Cloud.
- CKeep the Deployment Manager templates, because Google Cloud converts them to Terraform configurations automatically at deployment time.
- DRun Terraform from a Cloud Build job and download a service account key into the build so the deployment identity is explicit.
Correct answer: A — Use Infrastructure Manager when the team wants Google Cloud to run Terraform and manage state and locking without building pipeline infrastructure; each deployment names a service account, and the caller must be allowed to act as it with roles/iam.serviceAccountUser.
Infrastructure Manager is the managed way to run Terraform: Google Cloud executes the configuration, stores and locks the state, and each deployment runs as a service account that you specify and grant the roles the resources need, while the principal creating the deployment needs permission to act as that service account. Running Terraform from a CI job is still fully supported and is the better fit when the team already owns a pipeline and wants plan output in pull requests, so B is false. C is false: there is no automatic conversion, and the templates must be rewritten. D is wrong because downloaded service account keys are a long-lived credential that should be replaced by Workload Identity Federation or service account impersonation.
Infrastructure Manager documentationA company must vacate its data center in nine months. One application runs on a commercial database licensed per physical CPU core, and the vendor allows bring-your-own-license only on dedicated physical hardware that the customer controls. Rewriting the application for a managed database is estimated at 18 months. Which migration path meets the deadline and keeps the company license compliant?
- ARehost the database on Compute Engine sole-tenant nodes with node affinity labels and bring the existing per-core licenses, then plan the replatform as a later project.✓
- BRehost the database on standard multi-tenant Compute Engine VMs and count the vCPUs of those VMs against the existing per-core license.
- CReplatform to a managed Google Cloud database now and accept a deadline slip, because dropping the license removes the biggest cost.
- DRehost the database in a GKE StatefulSet pinned to a dedicated node pool and reuse the per-core license for the nodes in that pool.
Correct answer: A — Rehost the database on Compute Engine sole-tenant nodes with node affinity labels and bring the existing per-core licenses, then plan the replatform as a later project.
Sole-tenant nodes give the customer a dedicated physical server whose physical core count is visible and auditable, which is exactly what a per-physical-core BYOL agreement requires, and node affinity labels prove which workloads run on which node. Rehosting needs no application change, so nine months is realistic. Be clear about the money: sole-tenant nodes carry a sole-tenancy premium and are billed per node whether or not the node is full, and the license fee continues until the replatform happens. Option B fails compliance because a multi-tenant VM shares a host, so the vendor cannot count physical cores. Option D has the same problem: a GKE node pool is still multi-tenant Compute Engine VMs unless it is placed on sole-tenant nodes. Option C misses a hard data center exit date, which is not negotiable.
Sole-tenant nodesA bank runs a trading floor in a colocation facility. A new pricing service will run in Google Cloud and must answer in single-digit milliseconds with very stable latency, because jitter causes failed trades. The on-premises servers must also reach Cloud Storage and BigQuery over private addresses only, never over the public internet. Which design BEST meets the requirement?
- AOrder Dedicated Interconnect at a colocation facility in the same metropolitan area, run the pricing service in the closest region, and create a Private Service Connect endpoint for Google APIs that is advertised to on-premises over the Interconnect, with on-premises DNS forwarding googleapis.com to that endpoint.✓
- BBuild HA VPN with two tunnels over the existing internet circuits and use ECMP, run the pricing service in the closest region, and send Google API traffic through the same tunnels.
- CSet up Direct Peering with Google, run the pricing service in a multi-region deployment, and call the public googleapis.com endpoints from on-premises.
- DOrder a 100 Mbps Partner Interconnect attachment and configure Cloud NAT so on-premises hosts reach Google APIs through a NAT public address.
Correct answer: A — Order Dedicated Interconnect at a colocation facility in the same metropolitan area, run the pricing service in the closest region, and create a Private Service Connect endpoint for Google APIs that is advertised to on-premises over the Interconnect, with on-premises DNS forwarding googleapis.com to that endpoint.
Dedicated Interconnect gives a private 10 or 100 Gbps circuit into Google's network from the same metro, which is the only option here with predictable low latency and low jitter, and placing the workload in the nearest region keeps the round trip short. A Private Service Connect endpoint for Google APIs gives a private internal IP that can be advertised over the Interconnect, and on-premises DNS must resolve googleapis.com to that address for the traffic to stay private. HA VPN (option B) still rides the public internet, so latency and jitter vary, and each tunnel is capped around 3 Gbps. Direct Peering (option C) has no VPC attachment and no availability SLA, and it sends traffic to public API endpoints. Option D pushes API traffic out through NAT to the public internet, which is exactly what the requirement forbids, and 100 Mbps is far too small.
Cloud Interconnect overviewA microservice on Cloud Run has a median latency of 40 ms, which the team is happy with, but its p99 is 3.5 seconds and customers complain. CPU utilization on the service is low. The team needs to find the cause of the slow tail FASTEST. What should they do first?
- AIn Cloud Trace, filter traces to those with latency above 3 seconds and read the span breakdown of those individual requests to see which downstream call or dependency consumed the time.✓
- BIn Cloud Profiler, open the CPU time flame graph and find the function that consumes the most CPU across the whole service.
- CIn Cloud Profiler, compare heap profiles from two different days to find an object type that keeps growing.
- DCreate a log-based distribution metric on request duration and configure an alerting policy that fires when the p99 goes above 1 second.
Correct answer: A — In Cloud Trace, filter traces to those with latency above 3 seconds and read the span breakdown of those individual requests to see which downstream call or dependency consumed the time.
Cloud Trace stores individual request traces with per-span timing, so filtering on high latency shows exactly which spans in the slow requests were slow, which is normally a downstream RPC, a lock, a retry or a cold start. That is the only tool here that can isolate the tail. Cloud Profiler aggregates CPU and heap samples across the whole population, so a rare slow request is averaged away, and with CPU already low a flame graph will not explain time spent waiting on I/O, which rules out option B. Option C only helps when the symptom is memory growth. Option D re-measures a problem the team has already measured and still never says why.
Cloud Trace documentationA SaaS company signs a customer contract that promises 99.95% monthly availability for its public API. The architect must now define the internal reliability target and the measurement for the engineering team. Which statement is correct?
- AThe 99.95% target leaves an error budget of about 43 minutes in a 30-day month. The internal SLO should be set to exactly 99.95% so that it matches the contract.
- BThe SLO is the number written in the contract and the SLA is the internal target. Availability should be measured as the average CPU utilisation of the API servers.
- CThe 99.95% target leaves an error budget of about 21.6 minutes in a 30-day month. The internal SLO should be stricter than the SLA, for example 99.99%, so the team gets warning before the contract is broken.✓
- DThe 99.95% target leaves an error budget of about 4.3 minutes in a 30-day month, measured by an SLI of successful requests divided by total requests.
Correct answer: C — The 99.95% target leaves an error budget of about 21.6 minutes in a 30-day month. The internal SLO should be stricter than the SLA, for example 99.99%, so the team gets warning before the contract is broken.
A 30-day month is 43,200 minutes, and 0.05% of that is 21.6 minutes of allowed unavailability. The SLA is the external promise that carries penalties; the SLO is the internal target, and it should be tighter than the SLA so the error budget burns and alerts fire before the contract is at risk. Option A gets the arithmetic wrong (43 minutes is the budget for 99.9%) and sets the SLO equal to the SLA, which means the team learns it has failed at the same moment the customer does. Option B swaps the two definitions, and CPU utilisation is a resource metric, not a user-facing SLI. Option D uses the correct SLI formula but 4.32 minutes is the budget for 99.99%, not 99.95%.
Service monitoring and SLOs in Cloud MonitoringAn on-call team is drowning in pages from a Cloud Monitoring alert that fires whenever average CPU on the web tier passes 80% for 10 minutes. Most of those pages need no action. The service has an agreed SLO of 99.9% availability measured over a rolling 30-day window. The architect wants alerts that fire only when users are actually being hurt. Which alerting design should the team adopt?
- AKeep the CPU alert but raise the threshold to 90% and extend the duration to 30 minutes.
- BPage only when the 30-day error budget is fully spent, and do nothing before that point.
- CPage on a 1x burn rate over a 5-minute window, and open a ticket on a 14.4x burn rate measured over 3 days.
- DPage on a 14.4x burn rate over a 1-hour window with a 5-minute short window for confirmation, and open a ticket on a 1x burn rate over a 3-day window.✓
Correct answer: D — Page on a 14.4x burn rate over a 1-hour window with a 5-minute short window for confirmation, and open a ticket on a 1x burn rate over a 3-day window.
Burn rate says how fast the error budget is being consumed compared to a steady 1x. A 14.4x burn rate held for one hour spends about 2% of the 30-day budget in that hour, which is fast enough to need a human right away, and the short 5-minute window stops a single blip from paging. A 1x burn over three days is slow damage: it deserves investigation but not a 3 a.m. call, so it files a ticket. Option C has the two backwards, because 1x is exactly the budget spend the SLO allows, so it would page constantly, and a 3-day window can never detect a fast outage in time. Option B alerts only after users have already lost the whole month's budget. Option A keeps a symptom that does not map to user pain: high CPU with healthy responses is not an outage, and an outage can happen at low CPU.
A bank must move 600 production VMware VMs to Google Cloud in nine months. The operations team depends on native vSphere APIs and its existing VMware tooling, and the VMs must still reach an on-premises mainframe and services running in a Google Cloud VPC network. Which approach meets the requirement with the LEAST rework?
- AConvert the VMs with Migrate to Virtual Machines and rebuild the operations tooling against Compute Engine APIs.
- BDeploy a single-node Google Cloud VMware Engine private cloud for production and reach the VPC network through Cloud NAT.
- CDeploy a Google Cloud VMware Engine private cloud with at least three nodes, create a private connection between the VMware Engine network and the VPC network, and extend on-premises connectivity with Cloud Interconnect or HA VPN.✓
- DRun nested ESXi hosts on Compute Engine sole-tenant nodes and manage them with the existing vCenter Server.
Correct answer: C — Deploy a Google Cloud VMware Engine private cloud with at least three nodes, create a private connection between the VMware Engine network and the VPC network, and extend on-premises connectivity with Cloud Interconnect or HA VPN.
Google Cloud VMware Engine gives a dedicated VMware stack with vCenter, vSAN and NSX, so native vSphere APIs and existing tooling keep working and the VMs move without conversion. A production private cloud needs at least three nodes for vSAN resilience, a private connection carries traffic to the VPC network, and Cloud Interconnect or HA VPN carries traffic back to the data center. A works technically but throws away the vSphere API surface and forces the tooling to be rewritten. B is wrong because a single-node private cloud is only for evaluation, has no SLA and a limited lifetime, and Cloud NAT is for outbound internet traffic, not private VPC connectivity. D is unsupported and leaves the bank operating the hypervisor itself.
Google Cloud VMware Engine documentationA company runs 4,000 long-lived Compute Engine VMs, a mix of Linux and Windows. Security requires operating system patches to be applied within 14 days of release, inside an approved night-time window, with a report showing which VMs are compliant. Which approach meets the requirement with the LEAST operational overhead?
- AAdd a startup script to every instance template that runs the package manager upgrade at boot, and reboot the whole fleet once a week.
- BInstall the Ops Agent on all VMs and schedule package updates from Cloud Monitoring.
- CRebuild a golden image every week in Cloud Build and re-create all 4,000 VMs from the new image.
- DEnable VM Manager, make sure the OS Config agent runs on every VM, and create a recurring patch deployment that selects VMs by label and runs inside a maintenance window.✓
Correct answer: D — Enable VM Manager, make sure the OS Config agent runs on every VM, and create a recurring patch deployment that selects VMs by label and runs inside a maintenance window.
VM Manager OS patch management is built for exactly this: it needs the OS Config agent on each VM plus the OS Config API enabled, and a recurring patch deployment runs patch jobs on a schedule, targets instances by label or zone, respects a maintenance window, and reports per-VM patch compliance. The reboot behaviour is part of the patch configuration, so you can let it reboot only when an update requires it. The Ops Agent (option B) collects logs and metrics only; it never installs patches, which makes it the most tempting wrong answer. Startup scripts (option A) run only at boot, give no compliance report and no control over timing. Immutable golden images (option C) are a good pattern for stateless managed instance groups, but rebuilding and replacing 4,000 long-lived VMs every week is far more work than a patch policy.
OS patch managementA company wants private access to a SaaS product that runs in the vendor's VPC network. Both networks use 10.0.0.0/16, so the RFC 1918 ranges overlap, and the vendor will not renumber. Which TWO connectivity designs let the consumer reach the service privately? (Select TWO.)
- ACreate a Private Service Connect endpoint in the consumer VPC that targets the service attachment published by the vendor.✓
- BCreate a VPC Network Peering connection between the two networks and export custom routes for the overlapping ranges.
- CAttach both VPC networks as spokes to a Network Connectivity Center hub so the hub translates the overlapping ranges.
- DCreate a Private Service Connect network endpoint group in the consumer VPC that points at the vendor's service attachment, and put it behind an internal Application Load Balancer.✓
- EAdd the consumer project as a service project of the vendor's Shared VPC host project.
Correct answer: A, D — Create a Private Service Connect endpoint in the consumer VPC that targets the service attachment published by the vendor. · Create a Private Service Connect network endpoint group in the consumer VPC that points at the vendor's service attachment, and put it behind an internal Application Load Balancer.
VPC Network Peering merges the two route tables, so Google Cloud rejects a peering whose subnet ranges overlap, and exporting custom routes does not change that. Private Service Connect solves the problem because the consumer allocates its own endpoint address and traffic is translated on the way to the producer, so the two address plans never have to agree. Both forms work: a Private Service Connect endpoint (A) for a simple forwarding rule, or a Private Service Connect backend behind an internal Application Load Balancer (D) when the consumer wants load balancing and Cloud Armor in front. C fails because Network Connectivity Center spokes also require unique ranges and the hub does no address translation. E is not possible across two organizations, and it would still leave the ranges overlapping.
Private Service ConnectAn enterprise will migrate 900 on-premises VMs to Compute Engine in three waves. Finance wants to buy three-year committed use discounts as early as possible, but only for capacity the company will really use. What should the architect do to size the first wave and the commitment?
- AImport a spreadsheet of the current on-premises vCPU and memory allocations into Migration Center, accept the as-is sizing, and buy three-year commitments for the total.
- BMigrate all 900 VMs at matching machine sizes, wait for Recommender to produce machine type recommendations after a few days, and buy commitments afterwards.
- CModel the estate in the Google Cloud Pricing Calculator using the largest machine types available, then buy three-year commitments before the first wave starts.
- DDeploy Migration Center discovery to collect guest and performance data over a representative period, run a performance-based right-sizing assessment and TCO report, and commit only to the steady baseline that the report shows.✓
Correct answer: D — Deploy Migration Center discovery to collect guest and performance data over a representative period, run a performance-based right-sizing assessment and TCO report, and commit only to the steady baseline that the report shows.
Migration Center right-sizing is only as good as its input: without collected CPU, memory and disk performance data it can only echo what was provisioned on-premises, which is usually far larger than what is actually used. Collecting performance data over a representative period produces a right-sized machine shape list and a TCO report, and the steady part of that profile is the safe amount to commit to. A is the classic trap of committing to allocated rather than used capacity. B pays full on-demand price for the whole estate first and delays the discount for months. C over-sizes on purpose and locks that mistake in for three years, since resource-based commitments cannot be cancelled.
Migration Center documentationOne engineer built the company's Google Cloud footprint with Terraform on a laptop, keeping terraform.tfstate in the project folder. Four more engineers are joining the team. A production VPC named core-vpc was created earlier by hand in the console and is not in any state file. Which approach should the architect take?
terraform {
backend "gcs" {
bucket = "acme-tfstate-prod"
prefix = "network/"
}
}- AMove state to a versioned Cloud Storage bucket with the gcs backend, which locks the state object during an apply, then write a matching resource block for core-vpc and bring it in with an import block.✓
- BCommit terraform.tfstate to Git so every engineer has a copy, and adopt core-vpc with terraform apply -refresh-only.
- CUse the gcs backend for state and create a Firestore collection to hold the lock, then delete core-vpc and let Terraform recreate it.
- DStore the state file in Secret Manager, run terraform import for core-vpc, and skip locking because only one engineer applies at a time.
Correct answer: A — Move state to a versioned Cloud Storage bucket with the gcs backend, which locks the state object during an apply, then write a matching resource block for core-vpc and bring it in with an import block.
Local state has no sharing and no locking, so two engineers running apply at the same time overwrite each other's state and can destroy live resources; the file also holds resource attributes that belong in a controlled bucket, not a laptop. The gcs backend solves both problems on its own: it stores state centrally and locks the state object for the duration of an apply, so no separate lock table or collection is needed, which is why option C is wrong. Bucket versioning gives a way back if a state write goes bad. For core-vpc, Terraform needs a resource block plus an import, because import records an existing resource in state and never invents the configuration for it. Option B commits secrets to Git and misuses -refresh-only, which only updates state for resources Terraform already tracks. Option D drops locking on an assumption that stops being true the day the team grows.
Terraform importA retailer wants to know that its public checkout page and its internal inventory API are actually reachable from the places its customers are. Rolling deployments happen several times a day, and a blip of a few seconds during a deployment must not page the on-call engineer. Which configuration BEST meets the requirement?
- ACreate one uptime check from a single region that runs every minute, and alert on the first failed run.
- BAlert on the Compute Engine instance uptime metric and on the load balancer backend health check results.
- CCreate public uptime checks for the checkout page from several geographic regions, add a synthetic monitor for the multi-step checkout journey, add a private uptime check for the internal inventory API, and configure the alerting policy to fire only when the check fails from at least two regions for a sustained duration.✓
- DKeep one global uptime check and snooze the alerting policy by hand before every deployment.
Correct answer: C — Create public uptime checks for the checkout page from several geographic regions, add a synthetic monitor for the multi-step checkout journey, add a private uptime check for the internal inventory API, and configure the alerting policy to fire only when the check fails from at least two regions for a sustained duration.
Checking from several geographic locations is what makes the signal represent the customer's view rather than the server's, and a synthetic monitor goes further by running the real multi-step journey instead of fetching a single URL. The inventory API has no public address, so it needs a private uptime check that runs inside the network. The false-page problem is solved in the alerting policy: requiring failures from at least two locations and a sustained duration filters out a single flaky probe or a few seconds of deployment noise. Option A pages on one probe from one place, which is the definition of a noisy alert. Option B measures server-side and backend health, so it stays green when DNS, TLS or a CDN path is broken for real users. Option D relies on a human remembering to snooze, and a forgotten snooze hides a genuine outage.
Uptime checks and synthetic monitorsA company must move 500 TB of archive data from an on-premises NAS into Cloud Storage. The site has one 1 Gbps internet link that is also used by daily business traffic. The migration must be finished in three weeks. Which approach meets the deadline?
- ARun Storage Transfer Service with an on-premises agent pool of 20 transfer agents.
- BOrder Transfer Appliance units, copy the data to them on site, and ship them to Google for upload into the bucket.✓
- CRun gcloud storage rsync from ten servers at the same time with high parallelism.
- DOrder a Dedicated Interconnect circuit and copy the data over it with Storage Transfer Service.
Correct answer: B — Order Transfer Appliance units, copy the data to them on site, and ship them to Google for upload into the bucket.
Do the arithmetic first. A 1 Gbps link carries at most about 10.8 TB per day, so 500 TB needs roughly 46 days even if no other traffic used the link at all, which is more than twice the deadline. Options A and C both put more senders behind the same 1 Gbps bottleneck, so they cannot help. Option D would eventually give enough bandwidth, but ordering, provisioning and turning up a Dedicated Interconnect circuit in a colocation facility takes weeks on its own, so it misses a three-week deadline. Transfer Appliance moves the data offline: two TA300 units (about 300 TB usable each) hold 500 TB, and the on-site copy runs at LAN speed instead of over the WAN.
Transfer ApplianceA team orchestrates an end-to-end ML lifecycle on Gemini Enterprise Agent Platform Pipelines (Vertex AI Pipelines). The pipeline runs data validation, feature engineering, training and evaluation. Most runs change only the training step, and re-running the earlier steps wastes hours and money. The team also wants retraining to start automatically when a new batch of data lands in a Cloud Storage bucket. Which TWO features meet these requirements? (Select TWO.)
- AIncrease the machine type of the training component so the whole pipeline finishes faster.
- BEnable execution caching on the pipeline so a step whose inputs and component specification have not changed reuses the output of the previous run.✓
- CTurn on Vertex AI Model Monitoring, which detects unchanged inputs and skips the matching pipeline steps.
- DWrite a custom first step that compares file hashes in Cloud Storage and exits early for every step that does not need to run.
- ECreate an Eventarc trigger on the Cloud Storage bucket that starts a Cloud Run function, and have that function submit a new pipeline run.✓
Correct answer: B, E — Enable execution caching on the pipeline so a step whose inputs and component specification have not changed reuses the output of the previous run. · Create an Eventarc trigger on the Cloud Storage bucket that starts a Cloud Run function, and have that function submit a new pipeline run.
Execution caching is built into the pipeline service: when a step's inputs and its component definition match a previous successful execution, the cached output is reused and the step is skipped, which is exactly the waste the team wants to remove. Eventarc on the bucket's object finalize event, wired to a Cloud Run function that calls the pipeline API, turns a new data batch into a new run with no polling. Option C is wrong about what Model Monitoring does: it watches a deployed model for training-serving skew and drift, and it never controls pipeline step execution. Option D rebuilds caching by hand and then has to be maintained forever. Option A makes one step faster but still re-runs every unchanged step.
An organization runs 60 projects and wants one place to build dashboards and alerting policies that cover all of them. Which statement is TRUE about using a Cloud Monitoring metrics scope?
- AAdding the projects to a metrics scope also pulls their log entries into the scoping project, so a single Logs Explorer query in that project returns log entries from all 60 projects without any extra configuration.
- BEvery project must keep its own dashboards, because a chart can only read time series from the project in which the dashboard is defined.
- CAdding the 60 projects to the metrics scope of one scoping project lets dashboards and alerting policies in that project use metrics from all of them, but logs are not included, so an aggregated log sink at folder or organization level is still needed.✓
- DA metrics scope also centralizes quota, so a quota increase requested in the scoping project is applied to all 60 projects in the scope automatically.
Correct answer: C — Adding the 60 projects to the metrics scope of one scoping project lets dashboards and alerting policies in that project use metrics from all of them, but logs are not included, so an aggregated log sink at folder or organization level is still needed.
A metrics scope is the list of projects whose time series a scoping project can read. Once the 60 projects are added, charts, dashboards and alerting policies created in the scoping project can select metrics from any of them, which is what central monitoring means in practice. What the metrics scope does not do is centralize anything else: Cloud Logging is a separate service, so cross-project log search needs an aggregated sink at the folder or organization level pointing at a log bucket or BigQuery, and quotas remain per project and per service. That makes option A and option D false. Option B describes the behaviour you get only when you never configure a metrics scope at all.
Overview of metrics scopesA retailer connects its on-premises data centre to Google Cloud with Dedicated Interconnect. The design must qualify for the 99.99% availability SLA and must keep working if one whole colocation facility goes offline. Which topology meets the requirement?
- ATwo Interconnect connections in one metro, placed in two edge availability domains, with two VLAN attachments to one Cloud Router.
- BFour Interconnect connections in one metro, placed in two edge availability domains, with four VLAN attachments to one Cloud Router.
- CTwo Interconnect connections in two different metros, one connection per metro, with two VLAN attachments to two Cloud Routers.
- DFour Interconnect connections across two metros, two edge availability domains in each metro, with four VLAN attachments to Cloud Routers in two regions and global routing enabled.✓
Correct answer: D — Four Interconnect connections across two metros, two edge availability domains in each metro, with four VLAN attachments to Cloud Routers in two regions and global routing enabled.
The 99.99% topology needs four connections and four VLAN attachments spread over two metros, with two edge availability domains inside each metro, terminating on Cloud Routers in two regions with global dynamic routing turned on. Option A is the documented 99.9% topology: two edge availability domains protect against maintenance in one domain, but a single metro is still one failure point. Option B adds capacity, not diversity, because it is still one metro and one Cloud Router. Option C has two metros but only one connection in each, so planned maintenance in a single edge availability domain drops a whole metro. For comparison, HA VPN reaches 99.99% with a single gateway that has two interfaces, two peer devices and BGP on Cloud Router, which is why it is often the cheaper way to hit the same number when bandwidth allows.
Dedicated Interconnect overviewAn insurer keeps claims data in BigQuery inside two analytics projects. Analysts hold BigQuery Data Viewer so they can query the data, and a recent review found that an analyst could run a copy job that writes a claims table into a personal Google Cloud project outside the organization. The insurer must stop this while analysts keep query access from the corporate network. Which action is the MOST effective?
- AReplace the individual role grants with Google group grants and remove all Owner roles from analysts.
- BCreate a firewall rule that denies egress to the BigQuery API address range from the analytics VPC.
- CApply the organization policy constraint that restricts resource locations to the approved regions.
- DPut both analytics projects in a VPC Service Controls perimeter with bigquery.googleapis.com as a restricted service, add an ingress rule tied to an access level for the corporate network, and add no egress rule for outside projects.✓
Correct answer: D — Put both analytics projects in a VPC Service Controls perimeter with bigquery.googleapis.com as a restricted service, add an ingress rule tied to an access level for the corporate network, and add no egress rule for outside projects.
VPC Service Controls is the only control that stops data leaving a boundary, because it checks the source and destination project of every API call, not just whether the caller has permission. With BigQuery restricted and no egress rule allowing the personal project, the copy job is blocked even though the analyst still holds Data Viewer, and the ingress rule with an access level keeps corporate queries working. IAM changes such as option A only decide who may read the data, and the analyst is meant to read it. Firewall rules control network paths, not API-level data movement, and analysts can call BigQuery from anywhere, so option B fails. The resource location constraint in option C limits where resources are created, not where data is copied to.
VPC Service Controls overviewA team deploys with GitHub Actions and currently stores a downloaded service account JSON key in the repository secrets. Security has banned long-lived service account keys. The architect creates a workload identity pool and an OIDC provider as shown, then needs the workflow in the acme-corp/payments-api repository to act as the deploy@prod-app.iam.gserviceaccount.com service account. Which binding completes the setup in the MOST secure way?
gcloud iam workload-identity-pools providers create-oidc github \ --location=global \ --workload-identity-pool=ci-pool \ --issuer-uri="https://token.actions.githubusercontent.com" \ --attribute-mapping="google.subject=assertion.sub,attribute.repository=assertion.repository" \ --attribute-condition="assertion.repository_owner == 'acme-corp'"
- ACreate a new service account key, encrypt it with Cloud KMS, store it in the GitHub secret store and rotate it every 90 days.
- BGrant roles/iam.workloadIdentityUser on the service account to principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/ci-pool/attribute.repository/acme-corp/payments-api.✓
- CGrant roles/iam.workloadIdentityUser on the service account to principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/ci-pool/* so any workload in the pool can impersonate it.
- DGrant roles/iam.serviceAccountTokenCreator on the project to the pool's principal and remove the attribute condition from the provider.
Correct answer: B — Grant roles/iam.workloadIdentityUser on the service account to principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/ci-pool/attribute.repository/acme-corp/payments-api.
Workload Identity Federation swaps the GitHub OIDC token for a short-lived Google credential, so no key file exists anywhere. The impersonation binding must be roles/iam.workloadIdentityUser on the service account itself, and the member must be a principalSet scoped by the mapped attribute, so only workflows from acme-corp/payments-api can impersonate it. Option C uses the pool-wide principalSet, which lets any repository in the org take the production identity, so it is federated but not least privilege. Option D grants token creation at project level, which is broader than one service account, and dropping the attribute condition lets tokens from any GitHub organization reach the pool. Option A keeps the very key the policy bans.
Workload Identity FederationA media company runs a stateless HTTP service that renders large video previews. One request can take up to 45 minutes to finish. Traffic is very spiky: hours of no traffic, then hundreds of requests at once. The team has three backend developers and nobody who knows Kubernetes. They want to pay nothing when there is no traffic. Which platform meets the requirement with the LEAST operational overhead?
- ACloud Run, with the service request timeout set to 3600 seconds and minimum instances left at 0.✓
- BGKE Autopilot, with a Horizontal Pod Autoscaler and a Gateway resource in front of the pods.
- CA Compute Engine managed instance group behind an external Application Load Balancer, autoscaling on CPU.
- DApp Engine standard environment with automatic scaling and a warmup handler.
Correct answer: A — Cloud Run, with the service request timeout set to 3600 seconds and minimum instances left at 0.
Cloud Run services accept a request timeout of up to 60 minutes, so a 45-minute request fits, and the service scales to zero between bursts, so idle cost is nothing. GKE Autopilot could run the workload but the team has no Kubernetes skills, and the cluster keeps running (and billing) even when no requests arrive. A managed instance group cannot scale below one instance and boots VMs far too slowly for a sudden burst. App Engine standard is the classic trap here: with automatic scaling a request is killed at 10 minutes, so the 45-minute job never completes.
Cloud Run - Set request timeoutA compliance team encrypts Cloud Storage buckets with a customer-managed encryption key in Cloud KMS. They ask what happens to data already written if a key version is disabled or destroyed. Which statement is correct?
- ARotating the key re-encrypts every existing object with the new key version.
- BCloud External Key Manager is required whenever the key must rotate more often than every 90 days.
- CDisabling a key version permanently deletes the objects that were encrypted with it.
- DDisabling a key version makes objects encrypted with that version unreadable until it is enabled again, while a destroy request starts a waiting period, 30 days by default, during which the version can still be restored.✓
Correct answer: D — Disabling a key version makes objects encrypted with that version unreadable until it is enabled again, while a destroy request starts a waiting period, 30 days by default, during which the version can still be restored.
Disabling is reversible and only blocks cryptographic operations, so the data is intact but cannot be decrypted until the version is enabled again. Destroying is delayed on purpose: the version moves to a scheduled-for-destruction state for a configurable waiting period, 30 days by default, and can be restored until it expires, after which the ciphertext is unrecoverable. A is the common misconception: rotation only changes which version encrypts new data, and old versions must stay enabled to read old data. C confuses disabling with destruction. B misstates Cloud External Key Manager, which is for keys that must be held and controlled in an external key management system outside Google Cloud, not for a rotation schedule.
Destroy and restore key versionsA payments company is building a new ledger. Writes come from card terminals in North America, Europe and Asia. Every reader anywhere in the world must see transactions in the same order they were committed, with no stale reads. Write volume is expected to grow past what one primary node can handle. The finance team has approved a higher database bill if the design is justified. Which database design meets the requirement?
- ACloud SQL for PostgreSQL Enterprise Plus with a regional HA pair and read replicas in Europe and Asia.
- BAlloyDB for PostgreSQL with a primary cluster in Europe and cross-region replica clusters in North America and Asia.
- CSpanner with the nam-eur-asia1 multi-region instance configuration and the default strong reads.✓
- DBigtable with a multi-cluster routing app profile spanning three continents.
Correct answer: C — Spanner with the nam-eur-asia1 multi-region instance configuration and the default strong reads.
Only Spanner gives external consistency, which is the guarantee that every client sees transactions in true commit order, and it splits data across servers so write throughput grows by adding nodes. The nam-eur-asia1 configuration places voting replicas on three continents, which is exactly why it costs more per node than a regional config, and that premium buys the global consistency and the 99.999% availability SLA. Cloud SQL and AlloyDB both have one writable primary, so writes do not scale horizontally, and their cross-region replicas are asynchronous, so remote readers can see stale data. Bigtable with multi-cluster routing is eventually consistent across clusters and has no cross-row transactions, which a ledger needs.
Spanner instance configurationsA company scans about 8,000 supplier invoices a month. It needs invoice number, invoice date, supplier name, line items and total. It also needs one internal field, a purchase requisition code, that only three suppliers print in a custom box. The company has almost no ML staff and wants the LEAST ongoing maintenance. Which approach should the architect choose?
- ASend every scanned page to a Gemini model with a prompt that asks for a JSON object containing all the fields, and re-tune the prompt whenever a supplier changes its layout.
- BRun Cloud Vision OCR on each page and write regular expressions that locate every field in the extracted text.
- CTrain a Document AI Custom Extractor from scratch on all of the fields, using several thousand invoices labeled by the accounts payable team.
- DUse the Document AI Invoice parser for the standard fields, and uptrain it or add a Custom Extractor only for the purchase requisition code.✓
Correct answer: D — Use the Document AI Invoice parser for the standard fields, and uptrain it or add a Custom Extractor only for the purchase requisition code.
The Invoice parser is a prebuilt processor that already extracts invoice number, date, supplier, line items and totals across many layouts, with per-field confidence scores and no training data at all. Only the one non-standard field needs custom work, so the labeling effort drops to a handful of documents from three suppliers. Option C discards a pretrained model that already solves 95% of the problem and buys a large labeling and retraining burden. Option B is the most fragile choice: regular expressions over raw OCR text break whenever a supplier moves a box. Option A can work, but it gives no per-field confidence out of the box, costs tokens on every page, and the team has explicitly signed up to maintain prompts per layout, which is the opposite of least maintenance.
Document AI processors listA bank exposes a legacy SOAP backend to 40 partners through Apigee. Each partner has a contract for 1 million calls per month. The backend falls over when calls arrive faster than 50 per second, even when the monthly totals are well inside contract. The bank must report per-partner usage each month. Which policy design meets both needs?
- AAttach a Quota policy set to 50 requests per second per partner; it meters usage and shields the backend at the same time.
- BAttach a SpikeArrest policy set to the monthly allowance divided by the seconds in a month, and read totals from Apigee analytics.
- CAttach VerifyAPIKey to identify the partner app, a Quota policy for the 1 million monthly allowance, and a SpikeArrest policy to smooth traffic to 50 per second.✓
- DAttach an OAuthV2 policy for partner identity and a ResponseCache policy so repeated calls never reach the backend.
Correct answer: C — Attach VerifyAPIKey to identify the partner app, a Quota policy for the 1 million monthly allowance, and a SpikeArrest policy to smooth traffic to 50 per second.
The three policies do different jobs. VerifyAPIKey identifies which partner app is calling so the counter can be kept per partner. Quota counts requests against a contract over a long interval such as a month and returns 429 once the allowance is used. SpikeArrest does not count anything: it shapes the instantaneous rate, smoothing bursts so the backend never sees more than 50 per second. Option A fails because Quota is a counter, not a traffic shaper, and a per-second quota would also make monthly reporting impossible. Option B fails because SpikeArrest keeps no running total, so a partner could exceed the contract and nothing would stop it. Option D adds identity and caching but leaves both the burst problem and the contract limit unenforced.
Apigee Quota policyA retailer serves a web application to customers in North America, Europe and Asia. The team wants one public IP address for the whole world, caching of static assets close to users, and Layer 7 protection against SQL injection and volumetric attacks. Failover between regions must happen in seconds and must not depend on client DNS caches. Which design meets ALL of these requirements?
- ADeploy a regional external Application Load Balancer in each of the three regions and use Cloud DNS geolocation routing policies with health checks so users resolve to the nearest healthy region.
- BDeploy an external passthrough Network Load Balancer in each region, enable Cloud CDN in front of them, and publish all three IP addresses in a single DNS record set.
- CDeploy a single global external Application Load Balancer with backend services in all three regions, enable Cloud CDN on the backend services, and attach a Cloud Armor security policy.✓
- DDeploy a global external Application Load Balancer in the primary region only, and use Cloud DNS failover records that point to a standby regional load balancer in Europe when the primary fails a health check.
Correct answer: C — Deploy a single global external Application Load Balancer with backend services in all three regions, enable Cloud CDN on the backend services, and attach a Cloud Armor security policy.
A global external Application Load Balancer gives you one anycast IP address announced from every Google edge location. It picks the closest healthy backend and shifts traffic between regions inside the load balancer, so failover does not wait for any DNS record to change. Cloud CDN and Cloud Armor attach to the backend services of an HTTP(S) load balancer, which this design provides. Option A gives each region its own IP address and makes failover depend on DNS TTLs and resolver caches, which can hold a dead region for minutes. Option B fails because Cloud CDN cannot be enabled on a passthrough Network Load Balancer, which does not terminate HTTP. Option D still puts the failover decision in DNS.
Application Load Balancer overviewA retailer runs a customer-facing chatbot built on Gemini in Vertex AI. Security requires that incoming user messages are screened for prompt injection and jailbreak attempts, and that model output is screened for personal data and malicious links before it is shown to the customer. Which approach meets the requirement with the LEAST custom code?
- APut Google Cloud Armor in front of the chatbot and attach a preconfigured WAF rule set.
- BRely on the built-in safety filters of the Gemini model and set every harm category to the strictest blocking threshold.
- CCreate a Model Armor template that enables prompt injection and jailbreak detection, Sensitive Data Protection screening and malicious URL detection, then screen the user prompt before the model call and screen the model response before returning it.✓
- DWrite a regular expression filter in the application to reject known injection phrases, and run Sensitive Data Protection de-identification on the prompt.
Correct answer: C — Create a Model Armor template that enables prompt injection and jailbreak detection, Sensitive Data Protection screening and malicious URL detection, then screen the user prompt before the model call and screen the model response before returning it.
Model Armor is the managed screening service for generative AI traffic. You define a template with the filters you need, then call it twice: once on the user prompt before it reaches Gemini, and once on the model response before it reaches the customer. That covers prompt injection, jailbreak attempts, sensitive data and malicious URLs without writing detection logic yourself. Cloud Armor (option A) is a network and web application firewall; the similar name is the trap, but it inspects HTTP requests, not prompt content. The model's built-in safety filters (option B) block harmful content categories such as harassment or hate speech; they are not designed to catch prompt injection or data leaking out in a response. Option D is custom code that regular expressions will never keep up with, and it screens only the prompt, leaving the response unchecked.
Vertex AI safety and content filtersA fleet operator collects telemetry from 2 million devices. The platform must absorb about 500,000 writes per second, return the last reading for a single device in a few milliseconds, and also let analysts run ad-hoc SQL over three years of history. Which design meets all three needs with the LEAST operational overhead?
- AWrite every reading to BigQuery with the Storage Write API, and serve single-device lookups with parameterized queries against a clustered table.
- BWrite every reading to Bigtable using a row key of device ID plus a reversed timestamp, and use a Bigtable change stream with the Dataflow template that writes to BigQuery for analytics.✓
- CWrite every reading as a Firestore document in Native mode, and use the Firestore export to BigQuery for analytics.
- DWrite every reading to Cloud SQL for PostgreSQL with read replicas, and use Datastream to replicate the tables into BigQuery.
Correct answer: B — Write every reading to Bigtable using a row key of device ID plus a reversed timestamp, and use a Bigtable change stream with the Dataflow template that writes to BigQuery for analytics.
Bigtable is built for very high sustained write rates and single-digit millisecond key lookups, and a row key of device ID plus reversed timestamp puts the newest reading for a device first. Bigtable is poor at ad-hoc SQL, so a change stream feeding BigQuery gives analysts the history without a second write path in the application. A is wrong because BigQuery point lookups take seconds and each one scans and bills data. C fails on scale: Firestore is a document store for application state, not a 500,000 writes per second time-series sink. D is wrong because a single Cloud SQL primary cannot take that write rate at all.
Bigtable schema design for time series dataA platform team must report cloud spend back to 40 product teams every month and later charge them for it. Some projects are shared by more than one team. Leadership also wants an alert when a team passes 80% of its monthly plan. Which approach meets the requirement with the LEAST operational overhead?
- ACreate a separate Cloud Billing account for each of the 40 teams so every team receives its own invoice each month.
- BDownload the monthly invoice, then split the total across the 40 teams by headcount and publish the result in a shared spreadsheet.
- CCreate one Cloud Billing budget per team and configure each budget to stop the team's spending automatically when it reaches 100% of the budget amount.
- DApply a team label to every resource, enable the detailed usage cost export to BigQuery, build per-team views and a dashboard on that data, and create budgets that publish notifications to Pub/Sub at the 80% threshold.✓
Correct answer: D — Apply a team label to every resource, enable the detailed usage cost export to BigQuery, build per-team views and a dashboard on that data, and create budgets that publish notifications to Pub/Sub at the 80% threshold.
The detailed usage cost export writes resource-level rows including labels into BigQuery, which is what lets you attribute cost correctly even when several teams share one project. Budgets publish to a Pub/Sub topic, so the 80% signal can be routed to chat, email or a ticket without anyone watching a console. Option C is the classic trap: a Cloud Billing budget is an alerting tool only and never blocks spend. Actually capping spend means writing automation that disables billing on the project, which takes every service in that project offline. Option A creates 40 billing accounts to administer and still cannot split a shared project. Option B is not defensible chargeback because headcount has no relationship to consumption.
Export Cloud Billing data to BigQueryA team runs a nightly rendering batch on a managed instance group of Spot VMs to cut cost. Each job runs about six hours and can restart from a checkpoint. Which design handles preemption correctly?
- AAdd a shutdown script that writes the current checkpoint to Cloud Storage, because the VM gets roughly 30 seconds after the preemption notice before it is stopped.✓
- BSet onHostMaintenance to MIGRATE so that Spot VMs are live migrated instead of being stopped.
- CSet a 24-hour maximum run duration so that each VM restarts on a schedule before it can be preempted.
- DEnable autohealing with an HTTP health check so the managed instance group recreates the VM and the job continues from memory.
Correct answer: A — Add a shutdown script that writes the current checkpoint to Cloud Storage, because the VM gets roughly 30 seconds after the preemption notice before it is stopped.
Compute Engine sends a preemption notice and then gives the guest about 30 seconds before the instance is stopped, which is exactly the window a shutdown script should use to flush a checkpoint to durable storage such as Cloud Storage. B is impossible: Spot VMs must use the TERMINATE host maintenance policy and are never live migrated. C confuses Spot with the old preemptible 24-hour limit; Spot VMs have no fixed maximum runtime and a scheduled restart does not protect anything. D is wrong because a recreated instance starts with empty memory, so without an external checkpoint the six hours of work are lost. Spot is the wrong choice when the job cannot be interrupted or restarted, or when guaranteed capacity and an SLA are required.
Spot VMsA team delivers one application to a GKE target and a Cloud Run target using Cloud Deploy. They want each release to reach a small slice of traffic first, be checked against error rate and latency, and be returned to the last good release automatically when that check fails. Which TWO Cloud Deploy mechanisms produce this? (Select TWO.)
- AConfigure the delivery pipeline stage with a canary deployment strategy and enable deploy verification, so each traffic percentage phase runs a verify job that checks error rate and latency before the next phase is promoted.✓
- BIncrease the release approval timeout on the pipeline so an operator has more time to cancel a rollout that looks bad.
- CCreate a Cloud Deploy automation with a repair rollout rule whose repair phase is rollback, so a failed rollout returns to the last successful release without a human.✓
- DCreate a Cloud Build trigger that watches a Cloud Monitoring alerting policy and redeploys the previous container image when the alert fires.
- ESet maxSurge and maxUnavailable on the Kubernetes Deployment so unhealthy pods are replaced gradually during the rollout.
Correct answer: A, C — Configure the delivery pipeline stage with a canary deployment strategy and enable deploy verification, so each traffic percentage phase runs a verify job that checks error rate and latency before the next phase is promoted. · Create a Cloud Deploy automation with a repair rollout rule whose repair phase is rollback, so a failed rollout returns to the last successful release without a human.
The canary strategy splits traffic in defined percentage phases on both GKE and Cloud Run targets, and deploy verification runs a verify job as part of the rollout, which is where the error rate and latency checks live. Together they give a metric-verified canary. The automation repair rollout rule is what turns a failed rollout into an automatic rollback to the last successful release, so no engineer has to act. Option D reimplements rollback outside the delivery pipeline, which means two systems can disagree about the current release. Option E controls how pods are replaced inside a single Kubernetes rollout and does nothing about traffic percentages, verification or rollback, and it has no Cloud Run equivalent. Option B only buys time for a manual cancel, which is not automatic rollback.
Canary deployment strategy in Cloud DeployA payments company is releasing a large rewrite of its checkout service. Traffic is about 4,000 requests per second and any regression costs money immediately. The release must ship within a week, and the company enforces a change freeze from the 25th to the end of every month. Which release plan LIMITS customer impact the most?
- ARun blue/green: bring the new version up at full capacity beside the old one, switch 100% of traffic at 02:00, and switch back manually if the on-call engineer thinks something looks wrong.
- BRun a canary: send 1% of traffic to the new version, then 10%, then 50%, with rollback triggers agreed in advance on error rate and p99 latency compared to the current version, scheduled before the freeze window and approved by the change advisory board.✓
- CRun a rolling update across all instances during business hours so the largest number of engineers are available, and roll back by redeploying the previous image if customers start complaining.
- DRun blue/green inside the freeze window because traffic is lowest then, and decide about rollback after reviewing a full day of production data.
Correct answer: B — Run a canary: send 1% of traffic to the new version, then 10%, then 50%, with rollback triggers agreed in advance on error rate and p99 latency compared to the current version, scheduled before the freeze window and approved by the change advisory board.
A canary exposes a small slice of real customers first, so a regression is contained to roughly 1% of traffic instead of all of it. The rollback triggers must be objective numbers agreed before the release, such as error rate above the current version by a set margin or p99 latency above a set threshold, because a human judgement call at 02:00 is slow and inconsistent. Scheduling before the freeze and getting the change advisory board approval keeps the release inside company policy and tells support and finance when to watch. Option A switches every customer at once and uses a subjective trigger. Option C has no traffic isolation and uses customer complaints as the detection signal, which is the slowest signal there is. Option D breaks the freeze and delays the rollback decision by a day.
A company writes about 400 GB of application and audit logs per day. Compliance requires the logs be kept for three years, and the security team occasionally runs ad-hoc SQL over them during investigations. Which approach meets both needs with the LEAST operational overhead?
- ACreate log-based metrics for the fields the security team asks about most and keep the default log bucket retention.
- BRoute all logs to a BigQuery dataset with a three-year table expiration and query them there.
- CUpgrade a log bucket to use Log Analytics, set its retention to 1,095 days, and run SQL queries against the bucket, linking it to a BigQuery dataset if joins with other data are needed.✓
- DExport logs to a Cloud Storage bucket in Archive class and load the needed days into BigQuery each time an investigation starts.
Correct answer: C — Upgrade a log bucket to use Log Analytics, set its retention to 1,095 days, and run SQL queries against the bucket, linking it to a BigQuery dataset if joins with other data are needed.
A log bucket upgraded for Log Analytics keeps the logs where they already land, supports custom retention up to 3,650 days, and lets the team run SQL directly on the bucket, with an optional linked dataset when the query must join other BigQuery tables. Its cost driver is Cloud Logging ingestion plus per-GB retention beyond the free 30 days; querying is included. A fails the requirement outright: a log-based metric is an aggregate counter or distribution, so the raw entries the investigation needs are gone. B works but adds a second copy and its cost driver is BigQuery storage plus bytes scanned per query, which grows fast at this volume. D is the cheapest to store but the slowest to use, because every investigation begins with a manual load job.
Log AnalyticsA platform team is a bottleneck. Product teams wait days for tickets to be handled before they get a Cloud SQL instance or a GKE cluster. The company wants teams to provision these themselves, but every deployment must follow the approved configuration, and no team may create a resource with an external IP address. Which approach meets both goals?
- APublish the reviewed Terraform modules as Service Catalog solutions, let teams deploy them through Infrastructure Manager, and enforce organization policy constraints such as the one that blocks external IP addresses.✓
- BGrant each product team the Editor role on its own project and review the audit logs once a month.
- CPut the Terraform modules in a shared Git repository and ask each team to run terraform apply from a workstation using an account with the Owner role.
- DInstall Config Connector on a central GKE cluster and give each team write access to its own namespace.
Correct answer: A — Publish the reviewed Terraform modules as Service Catalog solutions, let teams deploy them through Infrastructure Manager, and enforce organization policy constraints such as the one that blocks external IP addresses.
Service Catalog lets the platform team publish versioned, reviewed solutions that product teams can launch themselves, Infrastructure Manager runs the Terraform with a service account instead of human credentials, and organization policy constraints stop a non-compliant resource from ever being created, even if someone edits the input values. Option B gives teams speed but removes the guardrail entirely, and a monthly log review finds violations after the fact instead of preventing them. Option C has the same problem plus human Owner credentials running applies from laptops, which is unauditable. Option D can enforce declarative configuration, but it adds a cluster to run and maintain, gives no curated versioned catalog, and namespace access alone still does not prevent an external IP unless organization policy is set as well.
Organization policy constraintsA private GKE cluster reaches a partner's payment API over Cloud NAT. During busy hours some pods fail with connection timeouts, while other pods on the same node succeed. Cloud NAT logs show many entries with the reason OUT_OF_RESOURCES. Every call goes to the same partner IP address and port 443. The Cloud NAT gateway uses static port allocation with the default 64 minimum ports per VM. Which change FIXES the problem?
- AAdd more static NAT IP addresses to the gateway and leave the minimum ports per VM at 64.
- BEnable dynamic port allocation on the gateway and set a higher maximum ports per VM.✓
- CEnable endpoint-independent mapping on the gateway so mappings are reused.
- DGive the nodes external IP addresses so their traffic leaves directly instead of through Cloud NAT.
Correct answer: B — Enable dynamic port allocation on the gateway and set a higher maximum ports per VM.
Because every connection goes to the same destination IP and port, each connection must use its own source port, so the 64 ports per VM run out on the busiest nodes while quieter nodes are fine. Dynamic port allocation lets Cloud NAT raise a node's port count on demand up to the maximum you set, which handles the busy hours without over-allocating the rest of the day. Adding NAT IP addresses raises the pool total but does not raise the per-VM allocation, so the busy node still hits 64. Endpoint-independent mapping does not add ports, and it cannot be enabled at the same time as dynamic port allocation. Giving nodes external IPs throws away the private cluster security posture and does not belong in the fix.
Cloud NAT overviewA retailer must move a 4 TB Oracle database to AlloyDB for PostgreSQL. The business will accept only a very short outage. Which approach meets the requirement, and what sets the length of the outage?
- AUse Datastream to stream Oracle changes to Cloud Storage and a Dataflow pipeline to apply them to AlloyDB; the outage is set by how long the Dataflow job takes to start.
- BUse a Database Migration Service continuous migration job; the outage is set by stopping writes on Oracle, letting the remaining change data drain, and then promoting the AlloyDB cluster and repointing the application.✓
- CUse Oracle Data Pump to export to Cloud Storage and import into AlloyDB; the outage is set by the export and import time.
- DUse a Database Migration Service one-time migration job and re-run it every night until cutover; the outage is set by the final full dump.
Correct answer: B — Use a Database Migration Service continuous migration job; the outage is set by stopping writes on Oracle, letting the remaining change data drain, and then promoting the AlloyDB cluster and repointing the application.
A continuous Database Migration Service job does the initial full load and then keeps applying change data capture from Oracle, so the replica stays close to the source while the application keeps running. The only outage is the cutover itself: stop writes, wait for replication lag to reach zero, promote the AlloyDB cluster and repoint connections. A is wrong because Datastream plus Dataflow is a data pipeline to an analytics sink, not a managed transactional migration, and you would have to write and own the apply logic. C and D both require a full dump inside the outage window, which for 4 TB means hours of downtime; D is the specific trap of picking a one-time job when only a continuous job gives near-zero downtime.
Database Migration Service documentationBefore launch, a team must prove that a managed instance group behind an external Application Load Balancer will scale to handle expected traffic. Each instance needs about 90 seconds to become ready, and the application talks to a Cloud SQL instance. Which load test design BEST proves that autoscaling works?
- ASend an instant step from zero to peak load and require p99 latency to stay flat throughout.
- BSet the managed instance group minimum size to the expected peak for the duration of the test so that capacity is never short.
- CDrive the whole test from one Compute Engine VM in the same zone as the backends to remove network noise.
- DRamp traffic up gradually over a period longer than the autoscaler cool-down plus instance warm-up time, and watch database connection-pool saturation next to instance count and latency.✓
Correct answer: D — Ramp traffic up gradually over a period longer than the autoscaler cool-down plus instance warm-up time, and watch database connection-pool saturation next to instance count and latency.
An autoscaler reacts to observed metrics and then waits for the cool-down and initialization period before counting a new instance, so the ramp rate has to be slower than the time it takes capacity to arrive, otherwise the test measures warm-up, not scaling. Watching the database connection pool at the same time matters because more instances mean more connections, and Cloud SQL connection limits are very often the real ceiling. A guarantees a latency spike that says nothing about whether autoscaling works. B pins capacity at peak so the autoscaler never runs and nothing is proven. C makes the single client VM the bottleneck and skips the real load balancer path.
Autoscaling groups of instancesA research group must keep 200 TB of raw sensor data in Cloud Storage for five years. Auditors read the whole data set about twice a year. No object is ever deleted before the five years are up. Which storage class is the MOST cost-effective for the full five years?
- ANearline storage for the whole five years.
- BColdline storage for the whole five years.✓
- CArchive storage for the whole five years.
- DStandard storage for the first 30 days, then a lifecycle rule that moves objects to Archive storage.
Correct answer: B — Coldline storage for the whole five years.
Two reads a year is exactly the access pattern Coldline is priced for. Per GB over 60 months in a standard region, Coldline costs about $0.24 in storage plus about $0.20 in retrieval fees (10 full reads at $0.02/GB), roughly $0.44. Archive stores more cheaply (about $0.07) but charges $0.05/GB to read, so ten reads add about $0.50 and push the total above Coldline. Nearline stores at more than twice Coldline's rate, so its cheaper retrieval does not make up the difference. Option D just adds 30 days of expensive Standard storage on top of the Archive retrieval fees. Minimum storage duration is not the deciding factor here because nothing is deleted early: five years clears Archive's 365-day and Coldline's 90-day minimums, so no early-deletion charge applies to any option.
Cloud Storage classesA regulator requires that all customer data for a business unit stays inside the European Union. The business unit's projects sit under one folder, and some projects already hold Cloud Storage buckets in us-central1. Which TWO actions should the architect take? (Select TWO.)
- ASet the constraints/gcp.resourceLocations organization policy on the folder with the allowed value in:eu-locations.✓
- BRely on the organization policy to move the existing us-central1 buckets in the folder to a European location.
- CSet the constraints/gcp.restrictServiceUsage organization policy on the folder to deny the services that cannot be limited to EU locations.✓
- DCreate a VPC Service Controls perimeter around the folder's projects and set the perimeter location to the European Union.
- EGrant roles/orgpolicy.policyAdmin to each project owner so that every team can enforce EU regions in its own project.
Correct answer: A, C — Set the constraints/gcp.resourceLocations organization policy on the folder with the allowed value in:eu-locations. · Set the constraints/gcp.restrictServiceUsage organization policy on the folder to deny the services that cannot be limited to EU locations.
The resource location constraint is the control that blocks creation of resources outside the allowed value group, and in:eu-locations covers EU regions and multi-regions. It is paired with the resource service usage constraint so that teams cannot simply switch to a service that the location constraint does not cover. B is the trap: organization policies are not retroactive, so the existing us-central1 buckets keep running and must be found and moved by hand. D is wrong because a VPC Service Controls perimeter limits data exfiltration across a network boundary and has no location setting. E hands the ability to override the policy to the very teams it is meant to constrain.
Restricting resource locationsA nightly batch job calls a Google Cloud API in a tight loop from many threads. It now fails partway through with HTTP 429 responses and occasional HTTP 503 responses, and the failure rate grows as the dataset grows. Which TWO actions should the team take? (Select TWO.)
- ARetry every failed call immediately, with no delay, until it succeeds.
- BAdd truncated exponential backoff with random jitter to the client, and cap the total number of retries per request.✓
- CCheck the quota usage metric for that API in Cloud Monitoring, and request an increase for the specific limit that is being hit through Cloud Quotas.✓
- DIncrease the number of parallel worker threads so the job finishes before the quota window resets.
- EMove the batch job to a machine type with more vCPUs and more memory.
Correct answer: B, C — Add truncated exponential backoff with random jitter to the client, and cap the total number of retries per request. · Check the quota usage metric for that API in Cloud Monitoring, and request an increase for the specific limit that is being hit through Cloud Quotas.
HTTP 429 and 503 are the API telling the client to slow down, so the two fixes address the two possible causes. Truncated exponential backoff with jitter is the client-side fix: it spreads retries out instead of hammering the API, and the jitter stops all threads from retrying at the same instant. If the backoff is in place and calls still fail, the ceiling is the project quota, so you look at the quota usage metric in Cloud Monitoring to confirm which limit is saturated and raise that limit through Cloud Quotas. Option A is the classic mistake: instant retries add load and make the throttling worse. Option D increases the request rate, which is the direct cause of the 429s. Option E changes local compute, which has no effect on a server-side rate limit.
Cloud Quotas overviewAn insurer states in its business continuity plan that a Cloud SQL for PostgreSQL database has an RTO of four hours and an RPO of 15 minutes. Today the team relies on automated Cloud SQL backups with point-in-time recovery enabled, and each month it saves a screenshot of the backup list. An auditor asks the architect to prove the stated RTO and RPO. What should the architect do?
- AIncrease the automated backup frequency and keep taking the monthly screenshots as evidence.
- BCreate a cross-region read replica and present the replica as proof that recovery works.
- CTurn on Object Versioning on the Cloud Storage bucket that holds the exported database dumps.
- DProtect the database with a Backup and DR Service backup plan that writes to a backup vault with enforced retention, and run scheduled restore tests into an isolated project, recording the measured recovery time and data loss.✓
Correct answer: D — Protect the database with a Backup and DR Service backup plan that writes to a backup vault with enforced retention, and run scheduled restore tests into an isolated project, recording the measured recovery time and data loss.
A backup that has never been restored is an assumption, not a recovery plan. Backup and DR Service gives a backup plan with a defined schedule and retention, and a backup vault whose enforced retention cannot be shortened or deleted by the project's own administrators. The evidence the auditor wants is the record of scheduled restore tests into an isolated project with the actual elapsed restore time and the actual data loss, compared against the four-hour RTO and the 15-minute RPO. Option A makes backups more frequent but still proves nothing about restore time, and a screenshot is not evidence of recoverability. Option B protects against a regional failure but does nothing for logical corruption, which replicates to the replica, and it does not measure RTO. Option C protects exported files from overwrite; it says nothing about whether the database can be brought back inside four hours.
Backup and DR Service documentationA payments API runs on a regional managed instance group spread over three zones behind an external Application Load Balancer. The reliability team wants a chaos experiment that proves the service survives the loss of one zone. Which approach is correct?
- ADefine the steady state as p99 latency below the SLO and error rate below the SLO threshold at normal traffic; in staging, delete every instance in one zone at once; confirm the autohealing health check marks them unhealthy, the regional MIG recreates capacity in the surviving zones, and the SLIs stay inside the steady state; only then repeat in production with a defined blast radius and abort conditions.✓
- BMove the managed instance group into a single zone first so the blast radius of the experiment is smaller, then delete half the instances and observe recovery.
- CSkip staging and run the experiment in production during the daily traffic peak, using average CPU utilisation across the group as the steady state to measure.
- DConfigure autohealing with an aggressive one-second TCP health check on port 22 so that failures are detected as quickly as possible, then stop one zone's instances.
Correct answer: A — Define the steady state as p99 latency below the SLO and error rate below the SLO threshold at normal traffic; in staging, delete every instance in one zone at once; confirm the autohealing health check marks them unhealthy, the regional MIG recreates capacity in the surviving zones, and the SLIs stay inside the steady state; only then repeat in production with a defined blast radius and abort conditions.
A chaos experiment starts with a measurable steady-state hypothesis expressed in user-facing SLIs, runs first where a wrong answer is cheap, and only moves to production once the recovery path is proven and abort conditions exist. Removing an entire zone is the correct way to simulate a zonal outage for a regional MIG, and the thing being proven is that the autohealing health check detects the failure and the group rebuilds capacity in the remaining zones without breaching the SLO. Note that the autohealing health check is separate from the load balancer health check and should be more conservative, because an over-aggressive one causes a restart storm. Option B removes the multi-zone property that the experiment exists to test. Option C has no control group and no safe abort, and CPU utilisation is not a customer-visible signal. Option D checks SSH liveness, not application health, and a one-second threshold will delete healthy instances that are merely slow.
Autohealing instances in MIGsA company builds container images in Cloud Build and pushes them to Artifact Registry. An auditor found that a developer deployed an image built on a laptop straight to the production GKE cluster. The company now requires that production runs only images that were built by the pipeline and passed a vulnerability scan. Which TWO controls must both be in place? (Select TWO.)
- AEnable Binary Authorization on the production cluster with a policy that requires an attestation from a named attestor and denies every other image.✓
- BEnable immutable tags in the Artifact Registry repository so a tag cannot be moved to another digest.
- CRun Artifact Analysis vulnerability scanning in the pipeline and create the attestation only when no critical vulnerabilities are found.✓
- DEnable GKE image streaming on the production node pools so images start faster.
- EUse Shielded GKE Nodes with Container-Optimized OS on every node pool.
Correct answer: A, C — Enable Binary Authorization on the production cluster with a policy that requires an attestation from a named attestor and denies every other image. · Run Artifact Analysis vulnerability scanning in the pipeline and create the attestation only when no critical vulnerabilities are found.
The two halves have to meet: something must sign an image only after it passes the scan, and something must refuse to run anything unsigned. Artifact Analysis scanning plus a conditional attestation step in Cloud Build is the signing half, and a Binary Authorization policy on the cluster with a require-attestation rule and a default deny is the enforcement half. Without the policy the attestation is just metadata that nobody checks, and without the scan step the policy signs whatever the pipeline produces. Immutable tags stop tag reuse but do nothing about a laptop-built image pushed under a new tag. Image streaming is a start-up performance feature, and Shielded GKE Nodes protect the node's boot integrity, not the provenance of the workload image.
Binary Authorization overviewA company keeps customer contracts in a Cloud Storage bucket. Last month an engineer deleted a folder of objects by mistake and the security team is also worried about a stolen credential being used to wipe the bucket. Contracts must still be deleted on request when a customer leaves, and the data team must be able to restore a lost object themselves without opening a support case. Which TWO settings should the architect apply? (Select TWO.)
- AEnable object versioning on the bucket so overwritten and deleted objects are kept as noncurrent versions.✓
- BApply a bucket retention policy of five years and lock it.
- CAdd a lifecycle rule that permanently deletes noncurrent versions after 7 days.
- DSet a soft delete retention policy on the bucket so deleted objects can be restored during the retention window.✓
- ETurn on uniform bucket-level access and remove the Storage Object Admin role from every principal.
Correct answer: A, D — Enable object versioning on the bucket so overwritten and deleted objects are kept as noncurrent versions. · Set a soft delete retention policy on the bucket so deleted objects can be restored during the retention window.
Object versioning turns a delete or an overwrite into a noncurrent version that any user with storage permissions can restore themselves, which covers the accidental case. A soft delete retention policy covers the malicious case: even a deleted live object, and its deleted versions, stay recoverable for the retention window and cannot be purged early by the attacker. A locked retention policy is wrong because it is irreversible and blocks the legitimate customer deletion requirement. The lifecycle rule in option C shortens the protection window rather than adding protection. Option E hardens access control, but a legitimate credential can still delete, and it gives the data team no way to restore anything.
Cloud Storage soft deleteReady to try it under exam conditions?
Reading answers is not the same as recalling them with a clock running. Take the same 55 questions as a timed mock exam — 120 minutes, no feedback until you submit, then a score broken down by exam domain so you know what to study.
Start the timed PCA test →