Free PR000263 Practice Questions & Study Guide: Google Cloud Certified – Professional Cloud DevOps Engineer

Official Exam Details: (PR000263)

Exam Code:
PR000263
Passing Score:
70%
Total Question Bank:
211 Verified Questions
Exam Duration:
120 Minutes

Exam Format & Question Types

This certification exam features multiple-choice questions (single and multi-select), interactive Hotspots, Hot Areas, and Drag-and-Drop scenario configurations designed to test real-world technical competency.

PR000263: Certified Advanced Cloud Data & AI Architect – Master Study Guide

This comprehensive study guide and architectural blueprint is meticulously crafted for candidates targeting the PR000263 certification exam. As an expert cloud architect and exam author, I’ve designed this resource to provide deep insights into the core concepts, architectural patterns, and strategic decision-making required to excel. This guide treats PR000263 as your active certification goal, focusing exclusively on the competencies it validates for designing cutting-edge data and AI solutions in the cloud.

1. Exam Overview & Profile

  • Target Audience: Experienced cloud architects, data architects, machine learning engineers, and data scientists with a strong background in cloud platforms who aim to specialize in designing, implementing, and optimizing advanced data processing and artificial intelligence solutions, including Generative AI. Candidates should be proficient in architectural design principles, data governance, MLOps, and cloud security.
  • Question Count: Approximately 60-70 multiple-choice, multi-select, and scenario-based questions.
  • Duration: 180 minutes (3 hours).
  • Passing Score Context: While the exact numerical passing score may vary, candidates typically need to achieve a proficiency level equivalent to 70-75% across all domains. This exam emphasizes not just knowledge recall, but the ability to apply architectural reasoning to complex, real-world problems.

2. Deep-Dive Domain Breakdown

The PR000263 exam rigorously tests your ability to design robust, scalable, and secure data and AI architectures. Key domains include:

  • Domain 1: Advanced Data Ingestion & Processing Architectures (25%)
    • Concepts: Real-time streaming vs. batch processing, lambda and kappa architectures, change data capture (CDC).
    • Technologies: Message queues (e.g., Kafka, Kinesis, Event Hubs, Pub/Sub), stream processing engines (e.g., Spark Streaming, Flink, Dataflow, Azure Stream Analytics), data lakes (e.g., S3, ADLS Gen2, Cloud Storage) vs. data warehouses (e.g., Redshift, Synapse Analytics, BigQuery), ETL/ELT orchestration (e.g., AWS Glue, Azure Data Factory, Cloud Data Fusion).
    • Architectural Patterns: Serverless data pipelines, federated queries, data mesh principles.
  • Domain 2: AI/ML Model Development, Deployment & MLOps (30%)
    • Concepts: Full MLOps lifecycle, feature engineering at scale, model training optimization (distributed training, hyperparameter tuning), model versioning and registry.
    • Technologies: Managed ML services (e.g., SageMaker, Azure ML, Vertex AI), containerization (Docker, Kubernetes), serverless inference patterns, model monitoring and drift detection.
    • Deployment Strategies: A/B testing, canary deployments, blue/green deployments for ML models.
  • Domain 3: Generative AI & Large Language Model (LLM) Integration (25%)
    • Concepts: Prompt engineering techniques, Retrieval-Augmented Generation (RAG) architectures, LLM fine-tuning strategies (LoRA, PEFT), knowledge base integration, token management.
    • Architectural Patterns: Designing multi-turn conversational AI, integrating LLMs with enterprise data sources securely, optimizing for cost and latency in Generative AI inference.
    • Ethical AI: Bias detection, fairness, transparency, and explainability for LLMs.
  • Domain 4: Security, Governance & Cost Optimization (20%)
    • Concepts: Data encryption (at rest, in transit), identity and access management (IAM/RBAC) for data and AI services, network security for data pipelines, data masking and anonymization, data residency and compliance.
    • Governance: Data cataloging, lineage tracking, auditing, responsible AI frameworks.
    • Cost Optimization: Resource right-sizing, reserved instances, serverless cost models, monitoring data storage and compute spend for AI workloads.

3. High-Yield Exam Tips & Scenario Traps

  • Architectural Decision Rules:
    • RAG vs. Fine-tuning: Prioritize RAG for up-to-date information, dynamic data, reducing hallucination, and lower training costs. Choose fine-tuning when specific domain knowledge, style, tone, or task adaptation is paramount, and the dataset is stable and curated.
    • Real-time vs. Batch: Evaluate latency requirements, data volume, and freshness. Real-time for immediate insights/actions; batch for large-scale periodic processing.
    • Data Lake vs. Data Warehouse: Data lakes for raw, varied, large-scale data storage; data warehouses for structured, curated data optimized for analytics. Often, a combination (lakehouse architecture) is the optimal solution.
    • Security Boundaries: Always apply the principle of least privilege. Use network segmentation, private endpoints, and robust encryption throughout the data lifecycle.
  • Common Exam Traps:
    • Over-engineering: Don’t select complex solutions when simpler, cost-effective options meet requirements.
    • Ignoring Cost: Many scenarios will subtly test your ability to balance performance with cost efficiency. Always consider budget constraints.
    • Scalability Blind Spots: Ensure your proposed architecture can handle future growth in data volume, velocity, and user concurrency.
    • Security/Compliance Gaps: Overlooking data privacy (GDPR, HIPAA), compliance (SOC 2), or basic security controls is a critical failure.
    • Misunderstanding Service Integration: Incorrectly assuming direct compatibility or capabilities between services.

4. Frequently Asked Questions (FAQ)

Q1: How should I best prepare for the scenario-based questions in PR000263?
A1: Focus on understanding architectural trade-offs, service strengths and weaknesses, and how different cloud services integrate to form complete solutions. Practice drawing architectural diagrams mentally or on paper for various data and AI use cases (e.g., real-time analytics, predictive maintenance, conversational AI). Justify your service selections based on requirements for scalability, cost, security, and performance. Read official whitepapers and solution guides from major cloud providers relevant to data and AI.
Q2: What is the recommended level of hands-on experience for this exam?
A2: Hands-on experience is absolutely crucial. This is not an entry-level exam. Candidates should have practical experience designing and implementing data pipelines, deploying and managing machine learning models (including MLOps practices), and experimenting with Generative AI tools and concepts like RAG or fine-tuning. Building proof-of-concept solutions for advanced data processing and AI workloads will solidify your understanding significantly.
Q3: How important are non-technical aspects like governance and ethics for PR000263?
A3: Extremely important. This exam evaluates a complete architect, not just a technologist. Questions will feature scenarios requiring decisions that balance technical feasibility with regulatory compliance, data privacy, ethical AI principles, and long-term governance strategies. You must be able to integrate these considerations into your architectural designs.
Q4: What’s the ultimate key to passing PR000263?
A4: A holistic and integrated understanding of cloud data and AI ecosystems. The key is not just knowing individual services, but mastering how they interconnect to create resilient, secure, cost-effective, and performant solutions. Think like a solutions architect: deeply analyze requirements, evaluate constraints, understand trade-offs, and propose the most appropriate architectural pattern for the given scenario, always keeping future scalability and maintainability in mind.

Free PR000263 Sample Practice Questions

Test your knowledge with these sample scenario questions complete with verified explanations:

General Practice Questions

QUESTION 1

You support a Node.js application running on Google Kubernetes Engine (GKE) in production. The application makes several HTTP requests to dependent applications. You want to anticipate which dependent applications might cause performance issues. What should you do?

  • A. Instrument all applications with Stackdriver Profiler.
  • B. Instrument all applications with Stackdriver Trace and review inter-service HTTP requests.
  • C. Use Stackdriver Debugger to review the execution of logic within each application to instrument all applications.
  • D. Modify the Node.js application to log HTTP request and response times to dependent applications. Use Stackdriver Logging to find dependent applications that are performing poorly.
Click to View Verified Solution & Explanation

Correct Option: B

Explanation:

✅ Option B (Correct)
Reasoning: The goal is to understand the performance impact of dependent applications, which involves tracking requests as they flow between services. Google Cloud Trace is the purpose-built service for distributed tracing. By instrumenting the applications with Cloud Trace, you can capture latency data for each inter-service HTTP request. The resulting trace data provides a detailed breakdown of where time is spent, making it easy to identify which downstream dependencies are slow and causing performance issues.

❌ Why the other choices are incorrect:

  • Option A is incorrect: Cloud Profiler is used to analyze CPU and memory consumption within a single application to identify inefficient code. It does not track request latency between different services.
  • Option C is incorrect: Cloud Debugger allows you to inspect the state of a running application (e.g., variables, call stack) without stopping it. It is a tool for debugging code logic, not for monitoring inter-service performance.
  • Option D is incorrect: While manually logging request/response times is possible, it is a less efficient and less powerful approach. It requires writing custom instrumentation code, generating a high volume of logs, and then building complex queries and visualizations in Cloud Logging to analyze the data. Cloud Trace automates this entire process and provides richer, out-of-the-box visualizations specifically for latency analysis.

Reference: https://cloud.google.com/trace/docs/overview

QUESTION 2

You created a Stackdriver chart for CPU utilization in a dashboard within your workspace project. You want to share the chart with your Site Reliability Engineering (SRE) team only. You want to ensure you follow the principle of least privilege. What should you do?

  • A. Share the workspace Project ID with the SRE team. Assign the SRE team the Monitoring Viewer IAM role in the workspace project.
  • B. Share the workspace Project ID with the SRE team. Assign the SRE team the Dashboard Viewer IAM role in the workspace project.
  • C. Click “Share chart by URL” and provide the URL to the SRE team. Assign the SRE team the Monitoring Viewer IAM role in the workspace project.
  • D. Click “Share chart by URL” and provide the URL to the SRE team. Assign the SRE team the Dashboard Viewer IAM role in the workspace project.
Click to View Verified Solution & Explanation

Correct Option: C

Explanation:

✅ Option C (Correct)
Reasoning: This option correctly follows the principle of least privilege. Sharing a chart via its specific URL provides the most granular access, limiting the SRE team to only the intended visualization. The Monitoring Viewer IAM role (roles/monitoring.viewer) is the standard, predefined role that grants the necessary monitoring.timeSeries.list permission. Without this permission, the SRE team could access the URL but would not be able to see the underlying time series data rendered on the chart. This combination provides the minimum required access to fulfill the request.

❌ Why the other choices are incorrect:

  • Option A is incorrect: Assigning the Monitoring Viewer role at the project level grants access to all monitoring data and dashboards within the project, not just the single chart. This violates the principle of least privilege.
  • Option B is incorrect: This is incorrect for the same reason as option A; it grants overly broad permissions at the project level. The role name Dashboard Viewer is also ambiguous; the standard role is Monitoring Viewer.
  • Option D is incorrect: While sharing the URL is the correct method, the legacy Dashboard Viewer role (roles/monitoring.dashboardViewer) does not include the monitoring.timeSeries.list permission. This would result in the SRE team being able to see the chart’s structure but not the actual data, leading to a permission error.

Reference: https://cloud.google.com/monitoring/charts/share-charts

QUESTION 3

Your organization wants to implement Site Reliability Engineering (SRE) culture and principles. Recently, a service that you support had a limited outage. A manager on another team asks you to provide a formal of what happened so they can action remediations. What should you do?

  • A. Develop a postmortem that includes the root causes, resolution, lessons learned, and a prioritized list of action items. Share it with the manager only.
  • B. Develop a postmortem that includes the root causes, resolution, lessons learned, and a prioritized list of action items. Share it on the engineering organization's document portal.
  • C. Develop a postmortem that includes the root causes, resolution, lessons learned, the list of people responsible, and a list of action items for each person. Share it with the manager only.
  • D. Develop a postmortem that includes the root causes, resolution, lessons learned, the list of people responsible, and a list of action items for each person. Share it on the engineering organization's document portal.
Click to View Verified Solution & Explanation

Correct Option: B

Explanation:

✅ Option B (Correct)
Reasoning: This option correctly applies two fundamental principles of Site Reliability Engineering (SRE) culture regarding postmortems. First, it focuses on the technical aspects: root causes, resolution, lessons learned, and action items, which is the correct content for a blameless postmortem. Second, it promotes transparency and organizational learning by sharing the postmortem on a public portal for the entire engineering organization. This allows all teams to learn from the incident and improve the reliability of their own systems.

❌ Why the other choices are incorrect:

  • Option A is incorrect: Sharing the postmortem only with the manager silos the information. A key goal of a postmortem is to enable the entire organization to learn from the failure, and this option prevents that broad learning.
  • Option C is incorrect: This option is fundamentally wrong because it includes a "list of people responsible," which violates the core SRE principle of a blameless postmortem. It also incorrectly limits the document’s distribution.
  • Option D is incorrect: This option is also fundamentally wrong. While it correctly advocates for sharing the postmortem widely, it critically fails by including a "list of people responsible." Blamelessness is essential to encourage psychological safety and ensure that the focus remains on systemic and process improvements rather than on individual blame.

Reference: https://sre.google/sre-book/postmortem-culture/

QUESTION 4

You have a set of applications running on a Google Kubernetes Engine (GKE) cluster, and you are using Stackdriver Kubernetes Engine Monitoring. You are bringing a new containerized application required by your company into production. This application is written by a third party and cannot be modified or reconfigured. The application writes its log information to /var/log/app_messages.log, and you want to send these log entries to Stackdriver Logging. What should you do?

  • A. Use the default Stackdriver Kubernetes Engine Monitoring agent configuration.
  • B. Deploy a Fluentd daemonset to GKE. Then create a customized input and output configuration to tail the log file in the application's pods and write to Stackdriver Logging.
  • C. Install Kubernetes on Google Compute Engine (GCE) and redeploy your applications. Then customize the built-in Stackdriver Logging configuration to tail the log file in the application's pods and write to Stackdriver Logging.
  • D. Write a script to tail the log file within the pod and write entries to standard output. Run the script as a sidecar container with the application's pod. Configure a shared volume between the containers to allow the script to have read access to /var/log in the application container.
Click to View Verified Solution & Explanation

Correct Option: B

Explanation:

✅ Option B (Correct)
Reasoning: The default logging agent in Google Kubernetes Engine (GKE) is configured to collect logs written to standard output (stdout) and standard error (stderr). Since the third-party application writes its logs to a file (/var/log/app_messages.log) within its container, the default configuration will not capture these logs. Deploying a custom Fluentd agent as a DaemonSet is a standard, robust pattern to address this. The DaemonSet ensures a logging agent pod runs on each node. This custom agent can be configured with volume mounts to access the host node’s log directories and a specific input configuration (like in_tail) to read the application’s log file. The output can then be configured to send these logs to Cloud Logging (formerly Stackdriver).

❌ Why the other choices are incorrect:

  • Option A is incorrect: The default logging agent configuration does not tail arbitrary files inside containers and will miss the application’s logs.
  • Option C is incorrect: Abandoning the managed GKE service to self-manage Kubernetes on GCE is a drastic and unnecessary step that significantly increases operational overhead. This logging requirement can be solved within GKE.
  • Option D is incorrect: While using a sidecar container to tail the log file and redirect it to stdout is a valid technical pattern, deploying a custom DaemonSet provides a more centralized, platform-level solution. This approach is managed by the DevOps team and can be reused for other applications with similar requirements without modifying each application’s individual deployment manifest.

Reference: https://cloud.google.com/logging/docs/agent/kubernetes/custom-logging-agent

QUESTION 5

You are running an application in a virtual machine (VM) using a custom Debian image. The image has the Stackdriver Logging agent installed. The VM has the cloud-platform scope. The application is logging information via syslog. You want to use Stackdriver Logging in the Google Cloud Platform Console to visualize the logs. You notice that syslog is not showing up in the "All logs" dropdown list of the Logs Viewer. What is the first thing you should do?

  • A. Look for the agent’s test log entry in the Logs Viewer.
  • B. Install the most recent version of the Stackdriver agent.
  • C. Verify the VM service account access scope includes the monitoring.write scope.
  • D. SSH to the VM and execute the following commands on your VM: ps ax | grep fluentd.
Click to View Verified Solution & Explanation

Correct Option: D

Explanation:

✅ Option D (Correct)
Reasoning: The most fundamental step in troubleshooting a missing log source is to verify that the agent responsible for collecting and forwarding those logs is actually running. The legacy Cloud Logging agent is based on fluentd. By SSHing into the VM and running ps ax | grep fluentd, you can directly check if the agent process is active. If the process is not running, you have identified the root cause of the problem without needing to check any other components.

❌ Why the other choices are incorrect:

  • Option A is incorrect: Looking for a test log entry in the Logs Viewer is a valid step to confirm connectivity, but it’s not the first step. If the agent process isn’t running on the VM, no log entry will ever be sent, making this check uninformative as a starting point.
  • Option B is incorrect: Upgrading the agent is a potential remediation step, not a diagnostic one. The first action in troubleshooting should be to identify the problem, not to apply a potential fix without knowing the cause.
  • Option C is incorrect: The problem states the VM has the cloud-platform scope. This is a broad scope that includes all necessary permissions for the Logging agent (logging.write) and Monitoring agent (monitoring.write), so checking permissions is redundant.

Reference: https://cloud.google.com/logging/docs/agent/logging/troubleshooting#verify-agent-running

QUESTION 6

You use a multiple step Cloud Build pipeline to build and deploy your application to Google Kubernetes Engine (GKE). You want to integrate with a third-party monitoring platform by performing a HTTP POST of the build information to a webhook. You want to minimize the development effort. What should you do?

  • A. Add logic to each Cloud Build step to HTTP POST the build information to a webhook.
  • B. Add a new step at the end of the pipeline in Cloud Build to HTTP POST the build information to a webhook.
  • C. Use Stackdriver Logging to create a logs-based metric from the Cloud Build logs. Create an Alert with a Webhook notification type.
  • D. Create a Cloud Pub/Sub push subscription to the Cloud Build cloud-builds PubSub topic to HTTP POST the build information to a webhook.
Click to View Verified Solution & Explanation

Correct Option: D

Explanation:

✅ Option D (Correct)
Reasoning: This is the most efficient and decoupled approach. Google Cloud Build automatically publishes build state change messages to a Pub/Sub topic called cloud-builds. By creating a Pub/Sub push subscription to this topic, you can configure Pub/Sub to automatically forward these messages to a specified HTTP endpoint (the third-party webhook). This requires only configuration and no changes to the build pipeline itself, perfectly aligning with the goal to minimize development effort.

❌ Why the other choices are incorrect:

  • Option A is incorrect: Adding notification logic to every build step is highly inefficient, redundant, and unnecessarily complicates the build configuration. It also generates multiple notifications for a single build.
  • Option B is incorrect: While adding a final step with a curl command would work, it requires modifying the cloudbuild.yaml configuration. This is more effort than the declarative Pub/Sub approach and tightly couples the notification logic to the build process.
  • Option C is incorrect: This is an overly complex solution for a simple notification requirement. It involves creating log sinks, logs-based metrics, alerting policies, and notification channels. This is significantly more effort than using the native Pub/Sub integration.

Reference: https://cloud.google.com/build/docs/subscribe-build-notifications

QUESTION 7

You use Spinnaker to deploy your application and have created a canary deployment stage in the pipeline. Your application has an in-memory cache that loads objects at start time. You want to automate the comparison of the canary version against the production version. How should you configure the canary analysis?

  • A. Compare the canary with a new deployment of the current production version.
  • B. Compare the canary with a new deployment of the previous production version.
  • C. Compare the canary with the existing deployment of the current production version.
  • D. Compare the canary with the average performance of a sliding window of previous production versions.
Click to View Verified Solution & Explanation

Correct Option: A

Explanation:

Correct Answer: A

The key issue is the application’s in-memory cache, which loads at start time. This means a newly deployed instance (a “cold start”) will have different performance characteristics than an instance that has been running for some time (a “warm” instance with a populated cache). To conduct a fair, apples-to-apples comparison, both the canary and the system it’s being compared against (the baseline) must be in the same state. By deploying a new instance of the current production version to serve as the baseline, you ensure that both the canary and baseline are undergoing a cold start simultaneously. This creates a controlled experiment, allowing you to accurately measure the performance impact of the new code changes.

Incorrect Answers:

  • B is incorrect: The comparison should be against the current production version to ensure the new code is an improvement, not against a previous, outdated version.
  • C is incorrect: Comparing a new, “cold” canary to an existing, “warm” production deployment is an invalid comparison. The warm production instance’s populated cache would give it a significant performance advantage, likely causing the canary analysis to fail incorrectly.
  • D is incorrect: Using a historical average from previous production versions also creates an unfair comparison, as this data represents “warm” instances, not the “cold start” state of the new canary.

Reference: https://spinnaker.io/docs/guides/user/canary/

QUESTION 8

You support a high-traffic web application and want to ensure that the home page loads in a timely manner. As a first step, you decide to implement a Service Level Indicator (SLI) to represent home page request latency with an acceptable page load time set to 100 ms. What is the Google-recommended way of calculating this SLI?

  • A. Bucketize the request latencies into ranges, and then compute the percentile at 100 ms.
  • B. Bucketize the request latencies into ranges, and then compute the median and 90th percentiles.
  • C. Count the number of home page requests that load in under 100 ms, and then divide by the total number of home page requests.
  • D. Count the number of home page request that load in under 100 ms, and then divide by the total number of all web application request.
Click to View Verified Solution & Explanation

Correct Option: C

Explanation:

✅ Option C (Correct)
Reasoning: This option correctly applies the standard formula for calculating a Service Level Indicator (SLI) as recommended by Google’s SRE principles. An SLI is defined as the ratio of good events to the total number of valid events. In this scenario, a ‘good event’ is a home page request that loads in under the 100 ms threshold. The ‘total valid events’ are all requests specifically for the home page. Therefore, the correct calculation is the count of requests that meet the latency criteria divided by the total number of relevant requests.

❌ Why the other choices are incorrect:

  • Option A is incorrect: Computing a percentile at a specific value (100 ms) is not a standard operation. You compute the Xth percentile (e.g., 95th) to get a latency value. While you can use a distribution to see what percentage of events fall under 100ms, the phrasing in option C is the direct and clearest way to define the SLI.
  • Option B is incorrect: Median and 90th percentiles are valuable metrics for understanding latency distribution, but they are not the SLI as described. An SLO might be based on a percentile (e.g., ’90th percentile latency < 100ms’), but the fundamental SLI is often best expressed as a proportion of good events.
  • Option D is incorrect: The denominator is incorrect because the scope is too broad. The SLI is specifically for the home page. Including all other web application requests would dilute the metric, making it an inaccurate measurement of the home page’s performance.

Reference: https://sre.google/sre-book/service-level-objectives/

QUESTION 9 (Multi-Select)

You deploy a new release of an internal application during a weekend maintenance window when there is minimal user tragic. After the window ends, you learn that one of the new features isn’t working as expected in the production environment. After an extended outage, you roll back the new release and deploy a fix. You want to modify your release process to reduce the mean time to recovery so you can avoid extended outages in the future. What should you do? (Choose two.)

  • A. Before merging new code, require 2 different peers to review the code changes.
  • B. Adopt the blue/green deployment strategy when releasing new code via a CD server.
  • C. Integrate a code linting tool to validate coding standards before any code is accepted into the repository.
  • D. Require developers to run automated integration tests on their local development environments before release.
  • E. Configure a CI server. Add a suite of unit tests to your code and have your CI server run them on commit and verify any changes.
Click to View Verified Solution & Explanation

Correct Option: B,E

Explanation:

The question asks for methods to reduce Mean Time to Recovery (MTTR), which is the average time it takes to restore a service after a failure.

✅ Option B (Correct)
Reasoning: A blue/green deployment strategy maintains two identical production environments: ‘blue’ (current live version) and ‘green’ (new version). Traffic is directed to the blue environment. The new release is deployed to the green environment. Once the green environment is verified, the load balancer or router is switched to direct all traffic to green. If an issue is discovered, recovery is nearly instantaneous: you simply switch the traffic back to the stable blue environment. This directly and dramatically reduces the time required to recover from a failed deployment.

✅ Option E (Correct)
Reasoning: A Continuous Integration (CI) server automates the build and testing process. By running a suite of unit tests on every commit, it ensures that the main branch is always in a deployable, high-quality state. In the event of a production failure requiring a code rollback, the CI server can quickly build and test the previous known-good version, enabling a fast and reliable redeployment. This automation is crucial for reducing the manual effort and time involved in the recovery process, thus lowering MTTR.

❌ Why the other choices are incorrect:

  • Option A, C, and D are incorrect: These options—requiring peer reviews (A), using a linter (C), and running local integration tests (D)—are all ‘shift-left’ quality practices. Their primary goal is to prevent defects from reaching production in the first place, thereby improving Mean Time Between Failures (MTBF). While valuable, they do not change the mechanics or speed of the recovery process after a failure has already occurred in production. The core of the question is about speeding up recovery (MTTR), not preventing the failure (MTBF).

Reference: https://cloud.google.com/architecture/application-deployment-and-testing-strategies

QUESTION 10

You have a pool of application servers running on Compute Engine. You need to provide a secure solution that requires the least amount of configuration and allows developers to easily access application logs for troubleshooting. How would you implement the solution on GCP?

  • A. 1. Deploy the Stackdriver logging agent to the application servers. 2. Give the developers the IAM Logs Viewer role to access Stackdriver and view logs.
  • B. 1. Deploy the Stackdriver logging agent to the application servers. 2. Give the developers the IAM Logs Private Logs Viewer role to access Stackdriver and view logs.
  • C. 1. Deploy the Stackdriver monitoring agent to the application servers. 2. Give the developers the IAM Monitoring Viewer role to access Stackdriver and view metrics.
  • D. 1. Install the gsutil command line tool on your application servers. 2. Write a script using gsutil to upload your application log to a Cloud Storage bucket, and then schedule it to run via cron every 5 minutes. 3. Give the developers the IAM Object Viewer access to view the logs in the specified bucket.
Click to View Verified Solution & Explanation

Correct Option: A

Explanation:

✅ Option A (Correct)
Reasoning: This is the standard, best-practice solution. The Cloud Logging agent is designed specifically to collect and forward logs from Compute Engine instances to the centralized Cloud Logging service with minimal configuration. The Logs Viewer (roles/logging.viewer) IAM role is the appropriate predefined role that grants read-only access to logs, allowing developers to use the powerful Logs Explorer UI for searching, filtering, and analysis without granting excessive permissions.

❌ Why the other choices are incorrect:

  • Option B is incorrect: The Private Logs Viewer role (roles/logging.privateLogViewer) is more privileged than necessary for general application logs, as it also grants access to sensitive logs like Data Access audit logs. The standard Logs Viewer role adheres better to the principle of least privilege.
  • Option C is incorrect: This option confuses two different services. The Cloud Monitoring agent collects metrics (e.g., CPU, memory), not logs. The Monitoring Viewer role provides access to Cloud Monitoring dashboards, not the Cloud Logging service.
  • Option D is incorrect: This is a manual, high-overhead solution. It requires writing and maintaining custom scripts and cron jobs, which directly contradicts the requirement for the "least amount of configuration." The user experience for developers reading raw text files in a Cloud Storage bucket is also significantly inferior to the feature-rich Logs Explorer.

Reference: https://cloud.google.com/logging/docs/agent/logging/overview

QUESTION 11

You support the backend of a mobile phone game that runs on a Google Kubernetes Engine (GKE) cluster. The application is serving HTTP requests from users. You need to implement a solution that will reduce the network cost. What should you do?

  • A. Configure the VPC as a Shared VPC Host project.
  • B. Configure your network services on the Standard Tier.
  • C. Configure your Kubernetes duster as a Private Cluster.
  • D. Configure a Google Cloud HTTP Load Balancer as Ingress.
Click to View Verified Solution & Explanation

Correct Option: D

Explanation:

✅ Option D (Correct)
Reasoning: Configuring a Google Cloud HTTP(S) Load Balancer through a GKE Ingress is the most effective way to reduce network costs for this scenario. This setup allows you to enable Google Cloud CDN. Cloud CDN caches your game’s static content (like images, scripts, and media) at Google’s network edge locations, closer to your users. When a user requests cached content, it is served from the edge, which significantly reduces the amount of data egressing from your GKE cluster. Since network egress is a primary driver of cloud costs, reducing the volume of egress traffic directly lowers your bill.

❌ Why the other choices are incorrect:

  • Option A is incorrect: Shared VPC is a feature for centralizing network administration and sharing VPC networks across multiple projects within an organization. It simplifies management but does not inherently reduce network egress costs.
  • Option B is incorrect: While using the Standard Network Service Tier does offer a lower price per GB for network egress compared to the Premium Tier, it comes at the cost of performance as traffic travels over the public internet for a longer distance. Option D, by enabling Cloud CDN, can lead to much greater cost savings by reducing the total volume of egress traffic, which is often more impactful than just lowering the per-unit cost. Furthermore, the default global HTTP(S) Load Balancer created by GKE Ingress requires the Premium Tier.
  • Option C is incorrect: Configuring a private cluster is a security measure. It prevents nodes from having public IP addresses, isolating them from the public internet. This enhances the security posture of the cluster but does not reduce costs associated with serving application traffic to end-users.

Reference: https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-for-xlb

QUESTION 12

You encountered a major service outage that affected all users of the service for multiple hours. After several hours of incident management, the service returned to normal, and user access was restored. You need to provide an incident summary to relevant stakeholders following the Site Reliability Engineering recommended practices. What should you do first?

  • A. Call individual stakeholders to explain what happened.
  • B. Develop a post-mortem to be distributed to stakeholders.
  • C. Send the Incident State Document to all the stakeholders.
  • D. Require the engineer responsible to write an apology email to all stakeholders.
Click to View Verified Solution & Explanation

Correct Option: B

Explanation:

✅ Option B (Correct)
Reasoning: Developing a post-mortem is the standard and most critical first step in the post-incident process according to Site Reliability Engineering (SRE) principles. A post-mortem is a formal, written document that provides a comprehensive, blameless analysis of an incident. It details the impact, root cause(s), actions taken during the incident, and a list of actionable follow-up items to prevent recurrence. This structured approach ensures all stakeholders receive a consistent, factual summary and demonstrates a commitment to learning and improvement.

❌ Why the other choices are incorrect:

  • Option A is incorrect: Calling individual stakeholders is inefficient, not scalable for a major outage, and risks communicating inconsistent or incomplete information. A written post-mortem provides a single source of truth.
  • Option C is incorrect: The Incident State Document is a live, collaborative document used by the incident response team during the incident. It contains raw data, chat logs, and unverified hypotheses, making it unsuitable for direct distribution as a final summary to stakeholders.
  • Option D is incorrect: This action is antithetical to the SRE principle of a blameless culture. The goal of a post-mortem is to identify and correct systemic issues, not to assign individual blame. Fostering a blameless environment is essential for honest and effective incident analysis.

Reference: https://sre.google/sre-book/postmortem-culture/

QUESTION 13

You are performing a semi-annual capacity planning exercise for your flagship service. You expect a service user growth rate of 10% month-over-month over the next six months. Your service is fully containerized and runs on Google Cloud Platform (GCP), using a Google Kubernetes Engine (GKE) Standard regional cluster on three zones with cluster autoscaler enabled. You currently consume about 30% of your total deployed CPU capacity, and you require resilience against the failure of a zone. You want to ensure that your users experience minimal negative impact as a result of this growth or as a result of zone failure, while avoiding unnecessary costs. How should you prepare to handle the predicted growth?

  • A. Verify the maximum node pool size, enable a horizontal pod autoscaler, and then perform a load test to verify your expected resource needs.
  • B. Because you are deployed on GKE and are using a cluster autoscaler, your GKE cluster will scale automatically regardless of growth rate.
  • C. Because you are at only 30% utilization, you have significant headroom and you won’t need to add any additional capacity for this rate of growth.
  • D. Proactively add 60% more node capacity to account for six months of 10% growth rate, and then perform a load test to make sure you have enough.
Click to View Verified Solution & Explanation

Correct Option: A

Explanation:

✅ Option A (Correct)

Reasoning: This option represents a comprehensive and proactive DevOps approach. Verifying the maximum node pool size ensures the Cluster Autoscaler has the headroom to add nodes as needed. Enabling the Horizontal Pod Autoscaler (HPA) is crucial for scaling the application workload (pods) based on metrics like CPU utilization. The Cluster Autoscaler then provisions new nodes when HPA creates pods that can’t be scheduled. Finally, performing a load test is the only way to validate that the entire system (HPA, Cluster Autoscaler, application) can handle the predicted future traffic gracefully, ensuring minimal user impact while maintaining cost-efficiency.

❌ Why the other choices are incorrect:

  • Option B is incorrect: Relying solely on the Cluster Autoscaler is a dangerous assumption. It is a reactive mechanism and is constrained by the maximum node pool size and project quotas. Furthermore, without a Horizontal Pod Autoscaler, the number of application pods will not increase, meaning new nodes would be added but not utilized to handle the increased request load.
  • Option C is incorrect: This option underestimates the impact of compound growth and the resiliency requirement. A 10% month-over-month growth for six months results in a `(1.1)^6 ≈ 1.77`, or a 77% increase in traffic, which is significant. More importantly, to be resilient to a zone failure in a 3-zone cluster, the remaining two zones must have enough spare capacity to handle 100% of the traffic, which the current 30% utilization level combined with the expected growth will not support.
  • Option D is incorrect: Proactively adding a fixed capacity of 60% is both inaccurate and costly. The actual compound growth is closer to 77%. More importantly, this approach goes against the principle of avoiding unnecessary costs by paying for idle capacity for months. The goal of autoscaling is to provision resources on-demand, not to pre-provision for a distant future peak.

Reference: https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-autoscaler

QUESTION 14

Your application images are built and pushed to Google Container Registry (GCR). You want to build an automated pipeline that deploys the application when the image is updated while minimizing the development effort. What should you do?

  • A. Use Cloud Build to trigger a Spinnaker pipeline.
  • B. Use Cloud Pub/Sub to bigger a Spinnaker pipeline.
  • C. Use a custom builder in Cloud Build to trigger Jenkins pipeline.
  • D. Use Cloud Pub/Sub to trigger a custom deployment service running in Google Kubernetes Engine (GKE).
Click to View Verified Solution & Explanation

Correct Option: B

Explanation:

✅ Option B (Correct)
Reasoning: This is the most efficient and standard pattern for this use case. Google Container Registry (GCR) can be configured to automatically publish messages to a Cloud Pub/Sub topic whenever a new image is pushed. Spinnaker, a continuous delivery platform, has native support for GCR triggers via Pub/Sub. By subscribing a Spinnaker pipeline to this topic, you can create a fully automated, event-driven deployment workflow. This approach requires minimal configuration and no custom code, directly satisfying the requirement to minimize development effort.

❌ Why the other choices are incorrect:

  • Option A is incorrect: Cloud Build is a CI tool used to build and push images; it is not the triggering mechanism to react to images already present in GCR. The event originates from GCR itself.
  • Option C is incorrect: This solution introduces unnecessary complexity by involving a custom builder within Cloud Build to trigger a different CI/CD tool (Jenkins). A direct trigger from GCR via Pub/Sub is far simpler.
  • Option D is incorrect: Building and maintaining a custom deployment service in GKE requires significant development and operational overhead, which directly contradicts the requirement to minimize development effort.

Reference: https://cloud.google.com/container-registry/docs/configuring-notifications

QUESTION 15

Your product is currently deployed in three Google Cloud Platform (GCP) zones with your users divided between the zones. You can fail over from one zone to another, but it causes a 10-minute service disruption for the affected users. You typically experience a database failure once per quarter and can detect it within five minutes. You are cataloging the reliability risks of a new real-time chat feature for your product. You catalog the following information for each risk:
* Mean Time to Detect (MTTD) in minutes
* Mean Time to Repair (MTTR) in minutes
* Mean Time Between Failure (MTBF) in days
* User Impact Percentage
The chat feature requires a new database system that takes twice as long to successfully fail over between zones. You want to account for the risk of the new database failing in one zone. What would be the values for the risk of database failover with the new system?

  • A. MTTD: 5 MTTR: 10 MTBF: 90 Impact: 33%
  • B. MTTD: 5 MTTR: 20 MTBF: 90 Impact: 33%
  • C. MTTD: 5 MTTR: 10 MTBF: 90 Impact: 50%
  • D. MTTD: 5 MTTR: 20 MTBF: 90 Impact: 50%
Click to View Verified Solution & Explanation

Correct Option: B

Explanation:

✅ Option B (Correct)
Reasoning: This option correctly calculates all the risk metrics based on the information provided in the scenario.

  • MTTD (Mean Time to Detect): The scenario states that a database failure can be detected within 5 minutes. This value is not indicated to change for the new system, so MTTD remains 5.
  • MTTR (Mean Time to Repair): The current system’s failover takes 10 minutes. The new database system takes ‘twice as long,’ so the new MTTR is 10 minutes * 2 = 20 minutes.
  • MTBF (Mean Time Between Failure): A failure occurs ‘once per quarter.’ A quarter is approximately 90 days, so the MTBF is 90. This frequency is assumed to be the same for the new system.
  • User Impact Percentage: The application is deployed across ‘three Google Cloud Platform (GCP) zones with your users divided between the zones.’ A failure in one zone would impact the users in that zone. Assuming an even distribution, the impact is 1/3, or approximately 33%.

❌ Why the other choices are incorrect:

  • Option A is incorrect: It uses the old MTTR of 10 minutes instead of the new, doubled value of 20 minutes.
  • Option C is incorrect: It uses the incorrect MTTR of 10 minutes and an incorrect impact of 50%. The impact should be 33% because there are three zones.
  • Option D is incorrect: It uses an incorrect impact of 50%. With three zones and users divided among them, a single-zone failure impacts roughly 33% of users, not 50%.

Reference: https://sre.google/sre-book/embracing-risk/

QUESTION 16

You are managing the production deployment to a set of Google Kubernetes Engine (GKE) clusters. You

want to make sure only images which are successfully built by your trusted CI/CD pipeline are deployed to production. What should you do?

  • A. Enable Cloud Security Scanner on the clusters.
  • B. Enable Vulnerability Analysis on the Container Registry.
  • C. Set up the Kubernetes Engine clusters as private clusters.
  • D. Set up the Kubernetes Engine clusters with Binary Authorization.
Click to View Verified Solution & Explanation

Correct Option: D

Explanation:

✅ Option D (Correct)
Reasoning: Binary Authorization is a deploy-time security control for Google Kubernetes Engine (GKE) that ensures only trusted container images are deployed. To meet the requirement, you would configure a Binary Authorization policy that requires images to be signed by a trusted authority, known as an "attestor." The trusted CI/CD pipeline would be configured to sign the image digest after a successful build, creating this required attestation. When a deployment is attempted, the Binary Authorization admission controller on the GKE cluster intercepts the request and verifies that the image has a valid attestation from the trusted CI/CD pipeline before allowing the pod to be created. This directly enforces the rule that only images from the trusted pipeline can run in production.

❌ Why the other choices are incorrect:

  • Option A is incorrect: Cloud Security Scanner is a service that identifies security vulnerabilities in running App Engine, Compute Engine, and GKE web applications. It does not control or verify the source of container images at deployment time.
  • Option B is incorrect: Vulnerability Analysis (part of Artifact Analysis) scans container images for known vulnerabilities (CVEs). While this is a critical security practice, it does not verify the image’s origin. An image could have zero vulnerabilities but still be built outside the trusted CI/CD pipeline.
  • Option C is incorrect: Private clusters enhance network security by restricting access to the cluster’s control plane and nodes from the public internet. This feature controls network traffic, not the provenance of the software being deployed within the cluster.

Reference: https://cloud.google.com/binary-authorization/docs/overview

QUESTION 17

You support an e-commerce application that runs on a large Google Kubernetes Engine (GKE) cluster deployed on-premises and on Google Cloud Platform. The application consists of microservices that run in containers. You want to identify containers that are using the most CPU and memory. What should you do?

  • A. Use Stackdriver Kubernetes Engine Monitoring.
  • B. Use Prometheus to collect and aggregate logs per container, and then analyze the results in Grafana.
  • C. Use the Stackdriver Monitoring API to create custom metrics, and then organize your containers using groups.
  • D. Use Stackdriver Logging to export application logs to BigQuery, aggregate logs per container, and then analyze CPU and memory consumption.
Click to View Verified Solution & Explanation

Correct Option: A

Explanation:

✅ Option A (Correct)
Reasoning: Google Cloud’s operations suite (formerly Stackdriver) provides a dedicated monitoring solution for Google Kubernetes Engine (GKE), which works for both on-premises and Google Cloud deployments. This service automatically collects key metrics at the container, pod, node, and cluster levels, including CPU and memory utilization. It offers pre-configured dashboards that allow operators to quickly visualize and identify containers consuming the most resources, making it the most direct and integrated solution for the described scenario.

❌ Why the other choices are incorrect:

  • Option B is incorrect: Prometheus is a system for collecting metrics, not logs. While Prometheus and Grafana are a popular combination for Kubernetes monitoring, the description in the option is technically inaccurate.
  • Option C is incorrect: Container CPU and memory utilization are standard metrics automatically collected by the Cloud Monitoring agent for GKE. There is no need to use the API to create custom metrics for this fundamental requirement.
  • Option D is incorrect: Cloud Logging is designed for event logs, not performance metrics. While logs could be exported to BigQuery for analysis, this is the wrong tool and an inefficient method for monitoring real-time resource consumption like CPU and memory. Cloud Monitoring is the appropriate service for this task.

Reference: https://cloud.google.com/monitoring/kubernetes-engine

QUESTION 18

Your company experiences bugs, outages, and slowness in its production systems. Developers use the production environment for new feature development and bug fixes. Configuration and experiments are done in the production environment, causing outages for users. Testers use the production environment for load testing, which often slows the production systems. You need to redesign the environment to reduce the number of bugs and outages in production and to enable testers to toad test new features. What should you do?

  • A. Create an automated testing script in production to detect failures as soon as they occur.
  • B. Create a development environment with smaller server capacity and give access only to developers and testers.
  • C. Secure the production environment to ensure that developers can't change it and set up one controlled update per year.
  • D. Create a development environment for writing code and a test environment for configurations, experiments, and load testing.
Click to View Verified Solution & Explanation

Correct Option: D

Explanation:

✅ Option D (Correct)
Reasoning: This option correctly implements a multi-environment strategy, a fundamental DevOps practice. Separating development, testing, and production environments isolates different stages of the software lifecycle. A dedicated development environment allows developers to code without impacting other systems. A separate test environment, which should closely mirror production, is essential for accurate load testing, configuration validation, and experiments without risking the stability of the live system. This directly solves the problem of development and testing activities causing production outages and slowness.

❌ Why the other choices are incorrect:

  • Option A is incorrect: This is a reactive approach. While automated testing in production (like smoke tests or canaries) is useful, it only detects failures after they have been deployed. It doesn’t prevent the root cause, which is the misuse of the production environment for development and load testing.
  • Option B is incorrect: This improperly combines development and testing. A stable, production-like environment is needed for reliable load testing, which is often disrupted by ongoing development activities. A smaller server capacity for the test environment would also yield inaccurate load test results.
  • Option C is incorrect: Securing production is crucial, but limiting updates to once a year is an anti-pattern for DevOps, which emphasizes agility and frequent, small releases. This approach would severely hinder the ability to deliver features and bug fixes.

Reference: https://cloud.google.com/architecture/application-deployment-and-testing-strategies

QUESTION 19

You support an application running on App Engine. The application is used globally and accessed from various device types. You want to know the number of connections. You are using Stackdriver Monitoring for App Engine. What metric should you use?

  • A. flex/connections/current
  • B. tcp_ssl_proxy/new_connections
  • C. tcp_ssl_proxy/open_connections
  • D. flex/instance/connections/current
Click to View Verified Solution & Explanation

Correct Option: A

Explanation:

✅ Option A (Correct)
Reasoning: The metric appengine.googleapis.com/flex/connections/current is the correct choice because it provides the total current number of client connections aggregated across all instances of an App Engine Flexible environment service. This directly answers the need to monitor the overall “number of connections” to the application.

❌ Why the other choices are incorrect:

  • Option B and C are incorrect: The metrics tcp_ssl_proxy/new_connections and tcp_ssl_proxy/open_connections belong to the TCP/SSL Proxy Load Balancer service, not App Engine. The question specifically asks about monitoring for App Engine, and there is no indication that a TCP proxy is in use. Furthermore, new_connections measures the rate of new connections, not the current count.
  • Option D is incorrect: The metric flex/instance/connections/current reports the number of connections on a per-instance basis. The question asks for the number of connections to the application as a whole, which requires the aggregated metric provided by option A.

Reference: https://cloud.google.com/monitoring/api/metrics_gcp#gcp-appengine

QUESTION 20

You support an application deployed on Compute Engine. The application connects to a Cloud SQL instance to store and retrieve data. After an update to the application, users report errors showing database timeout messages. The number of concurrent active users remained stable. You need to find the most probable cause of the database timeout. What should you do?

  • A. Check the serial port logs of the Compute Engine instance.
  • B. Use Stackdriver Profiler to visualize the resources utilization throughout the application.
  • C. Determine whether there is an increased number of connections to the Cloud SQL instance.
  • D. Use Cloud Security Scanner to see whether your Cloud SQL is under a Distributed Denial of Service (DDoS) attack.
Click to View Verified Solution & Explanation

Correct Option: B

Explanation:

✅ Option B (Correct)
Reasoning: The problem started immediately after an application update, with a stable user load. This strongly suggests a performance regression or bug was introduced in the new code. Cloud Profiler is the ideal tool for this scenario as it continuously analyzes application performance by collecting CPU usage and memory allocation data. It helps pinpoint inefficient code paths, resource contention, or memory leaks at the function level, which are common root causes for database timeouts. By visualizing the resource consumption of the new code, the developer can quickly identify the part of the application causing the performance bottleneck leading to the timeouts.

❌ Why the other choices are incorrect:

  • Option A is incorrect: Serial port logs are used for diagnosing low-level instance issues like boot failures, kernel problems, or OS-level events. They do not provide insights into application-level performance or database connection issues.
  • Option C is incorrect: While checking the number of Cloud SQL connections is a valid diagnostic step, it only identifies a symptom (high connection count), not the root cause. The underlying problem is likely within the application code (e.g., a connection leak), which Cloud Profiler is designed to find. This option describes what might be happening, whereas Profiler helps discover why.
  • Option D is incorrect: Cloud Security Scanner is a tool for identifying web application security vulnerabilities like cross-site scripting (XSS). It is not used for performance analysis or detecting DDoS attacks. Services like Google Cloud Armor are used for DDoS protection.

Reference: https://cloud.google.com/profiler/docs/overview

QUESTION 21

Your application images are built wing Cloud Build and pushed to Google Container Registry (GCR). You want to be able to specify a particular version of your application for deployment based on the release version tagged in source control. What would you do when you push the image?

  • A. Reference the image digest in the source control tag.
  • B. Supply the source control tag as a parameter within the image name.
  • C. Use Cloud Build to include the release version tag in the application image.
  • D. Use GCR digest versioning to match the image to the tag in source control.
Click to View Verified Solution & Explanation

Correct Option: C

Explanation:

✅ Option C (Correct)
Reasoning: This is the standard and most direct method for versioning container images. Cloud Build has access to source repository metadata through default substitution variables. When a build is triggered by a Git tag, Cloud Build populates the $TAG_NAME variable. This variable can then be used in a build step to tag the container image with the corresponding release version (e.g., docker build -t gcr.io/PROJECT_ID/my-app:$TAG_NAME .). Pushing this tagged image to Google Container Registry (GCR) creates a clear, traceable link between the source code version and the deployable artifact.

❌ Why the other choices are incorrect:

  • Option A is incorrect: The image digest is generated by the registry when the image is pushed. The source control tag is created before the build is initiated, making it impossible to reference a future digest in the tag.
  • Option B is incorrect: The standard container image naming convention is [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]. Versioning information should be placed in the tag, not embedded within the image name itself. This option suggests a non-standard and confusing practice.
  • Option D is incorrect: While using digests is a best practice for immutable deployments, the digest itself does not inherently link back to a human-readable source control tag. The primary link is created by applying the source control version as an image tag, as described in option C. The digest is the immutable identifier for that tagged image.

Reference: https://cloud.google.com/build/docs/configuring-builds/substitute-variable-values

QUESTION 22

You are on-call for an infrastructure service that has a large number of dependent systems. You receive an alert indicating that the service is failing to serve most of its requests and all of its dependent systems with hundreds of thousands of users are affected. As part of your Site Reliability Engineering (SRE) incident management protocol, you declare yourself Incident Commander (IC) and pull in two experienced people from your team as Operations Lead (OL) and Communications Lead (CL). What should you do next?

  • A. Look for ways to mitigate user impact and deploy the mitigations to production.
  • B. Contact the affected service owners and update them on the status of the incident.
  • C. Establish a communication channel where incident responders and leads can communicate with each other.
  • D. Start a postmortem, add incident information, circulate the draft internally, and ask internal stakeholders for input.
Click to View Verified Solution & Explanation

Correct Option: C

Explanation:

✅ Option C (Correct)
Reasoning: According to SRE principles, the Incident Commander’s (IC) primary responsibility is to coordinate the response, not to perform the hands-on work. After assembling the core team (IC, Operations Lead, and Communications Lead), the immediate priority is establishing a central communication channel, often called a "war room." This allows the team to coordinate actions, share status updates, and make decisions efficiently. All other response activities stem from this initial coordinated effort.

❌ Why the other choices are incorrect:

  • Option A is incorrect: This task falls under the responsibility of the Operations Lead (OL), who is tasked with investigating the issue and deploying fixes under the IC’s direction.
  • Option B is incorrect: This is the primary role of the Communications Lead (CL), who manages all communications with stakeholders and affected parties.
  • Option D is incorrect: A postmortem is a critical process, but it is conducted after the incident has been fully resolved to analyze the root cause and identify preventative measures.

Reference: https://sre.google/sre-book/emergency-response/

QUESTION 23

You are developing a strategy for monitoring your Google Cloud Platform (GCP) projects in production using Stackdriver Workspaces. One of the requirements is to be able to quickly identify and react to production environment issues without false alerts from development and staging projects. You want to ensure that you adhere to the principle of least privilege when providing relevant team members with access to Stackdriver Workspaces. What should you do?

  • A. Grant relevant team members read access to all GCP production projects. Create Stackdriver workspaces inside each project.
  • B. Grant relevant team members the Project Viewer IAM role on all GCP production projects. Create Stackdriver workspaces inside each project.
  • C. Choose an existing GCP production project to host the monitoring workspace. Attach the production Projects to this workspace. Grant relevant team members read access to the Stackdriver Workspace.
  • D. Create a new GCP monitoring project and create a Stackdriver Workspace inside it. Attach the production projects to this workspace. Grant relevant team members read access to the Stackdriver Workspace.
Click to View Verified Solution & Explanation

Correct Option: D

Explanation:

✅ Option D (Correct)
Reasoning: This is the recommended Google Cloud best practice for centralized monitoring. Creating a new, dedicated GCP project to host the Cloud Monitoring workspace (known as a scoping project) provides a clear separation of concerns. This central project aggregates metrics, logs, and traces from all other attached production projects into a single pane of glass. Granting team members access (e.g., the monitoring.viewer role) only to this scoping project adheres to the principle of least privilege. They can view all necessary production monitoring data without needing direct, and potentially overly broad, permissions on the individual production projects themselves.

❌ Why the other choices are incorrect:

  • Option A is incorrect: Creating a workspace in each project results in a decentralized, fragmented monitoring setup. This makes it impossible to get a consolidated view of the entire production environment, which is a key requirement for identifying cross-system issues.
  • Option B is incorrect: This has the same fragmentation problem as option A. Furthermore, granting the Project Viewer IAM role is overly permissive for users who only need to view monitoring data, violating the principle of least privilege.
  • Option C is incorrect: While this option correctly centralizes monitoring, using an existing production project as the host is not ideal. It mixes monitoring administration with application resources, which can complicate IAM, billing, and lifecycle management. A dedicated monitoring project provides cleaner separation and administration.

Reference: https://cloud.google.com/monitoring/workspaces/view-metrics-multiple-projects

QUESTION 24

You currently store the virtual machine (VM) utilization logs in Stackdriver. You need to provide an easy-to- share interactive VM utilization dashboard that is updated in real time and contains information aggregated on a quarterly basis. 

You want to use Google Cloud Platform solutions. What should you do?

  • A. 1. Export VM utilization logs from Stackdriver to BigQuery. 2. Create a dashboard in Data Studio. 3. Share the dashboard with your stakeholders.
  • B. 1. Export VM utilization logs from Stackdriver to Cloud Pub/Sub. 2. From Cloud Pub/Sub, send the logs to a Security Information and Event Management (SIEM) system. 3. Build the dashboards in the SIEM system and share with your stakeholders.
  • C. 1. Export VM utilization logs from Stackdriver to BigQuery. 2. From BigQuery, export the logs to a CSV file. 3. Import the CSV file into Google Sheets. 4. Build a dashboard in Google Sheets and share it with your stakeholders.
  • D. 1. Export VM utilization logs from Stackdriver to a Cloud Storage bucket. 2. Enable the Cloud Storage API to pull the logs programmatically. 3. Build a custom data visualization application. 4. Display the pulled logs in a custom dashboard.
Click to View Verified Solution & Explanation

Correct Option: A

Explanation:

✅ Option A (Correct)
Reasoning: This is the standard, managed GCP pattern for visualizing logs. Exporting logs from Cloud Logging to BigQuery via a sink enables real-time data streaming and powerful, large-scale SQL-based aggregation (e.g., quarterly summaries). Looker Studio (formerly Data Studio) natively connects to BigQuery to create interactive, easily shareable dashboards that can be configured to refresh automatically, fulfilling all requirements of the scenario efficiently.

❌ Why the other choices are incorrect:

  • Option B is incorrect: A Security Information and Event Management (SIEM) system is primarily for security analysis, not general VM utilization metrics. This is not the appropriate tool for the task.
  • Option C is incorrect: The process of exporting to a CSV file and importing into Google Sheets is a manual, batch process. It fails the requirement for a dashboard that is “updated in real time.”
  • Option D is incorrect: Building a custom data visualization application is complex and time-consuming. It is an unnecessary effort when a powerful, managed, and integrated GCP solution like Looker Studio already exists for this purpose.

Reference: https://cloud.google.com/logging/docs/export/bigquery

QUESTION 25

You need to run a business-critical workload on a fixed set of Compute Engine instances for several months. The workload is stable with the exact amount of resources allocated to it. You want to lower the costs for this workload without any performance implications. What should you do?

  • A. Purchase Committed Use Discounts.
  • B. Migrate the instances to a Managed Instance Group.
  • C. Convert the instances to preemptible virtual machines.
  • D. Create an Unmanaged Instance Group for the instances used to run the workload.
Click to View Verified Solution & Explanation

Correct Option: A

Explanation:

✅ Option A (Correct)
Reasoning: Committed Use Discounts (CUDs) are designed for workloads with predictable resource needs, such as the one described. By committing to a 1- or 3-year term for a specific amount of vCPUs and memory, you receive a significant discount on Compute Engine usage. This directly lowers costs for a stable, long-running workload without any impact on performance or availability, as the underlying instances are standard VMs.

❌ Why the other choices are incorrect:

  • Option B is incorrect: A Managed Instance Group (MIG) provides scalability and high availability features like auto-healing and auto-scaling. While beneficial, a MIG itself does not reduce the cost of running a fixed number of instances. The primary cost-saving mechanism in a MIG is auto-scaling, which is not applicable to a stable workload with a fixed resource allocation.
  • Option C is incorrect: Preemptible VMs (now Spot VMs) offer large discounts but can be terminated by Google with little notice. Using them for a "business-critical" workload would introduce unacceptable risk of downtime, violating the requirement of having no performance implications.
  • Option D is incorrect: An Unmanaged Instance Group is simply a logical grouping of dissimilar instances. It does not provide any cost-saving features, auto-healing, or scaling capabilities.

Reference: https://cloud.google.com/compute/docs/instances/committed-use-discounts-overview

QUESTION 26

You are part of an organization that follows SRE practices and principles. You are taking over the management of a new service from the Development Team, and you conduct a Production Readiness Review (PRR). After the PRR analysis phase, you determine that the service cannot currently meet its Service Level Objectives (SLOs). You want to ensure that the service can meet its SLOs in production. What should you do next?

  • A. Adjust the SLO targets to be achievable by the service so you can bring it into production.
  • B. Notify the development team that they will have to provide production support for the service.
  • C. Identify recommended reliability improvements to the service to be completed before handover.
  • D. Bring the service into production with no SLOs and build them when you have collected operational data.
Click to View Verified Solution & Explanation

Correct Option: C

Explanation:

✅ Option C (Correct)
Reasoning: The primary purpose of a Production Readiness Review (PRR) is to assess a service against SRE standards before it enters production. When a PRR reveals that a service cannot meet its required Service Level Objectives (SLOs), the correct action is to identify the necessary improvements. This is a collaborative process between the SRE and development teams to enhance the service’s reliability, scalability, and observability, ensuring it is fit for production and can meet its user-facing commitments.

❌ Why the other choices are incorrect:

  • Option A is incorrect: Adjusting SLOs downwards to match a service’s current (unreliable) state is an anti-pattern. SLOs should be based on user expectations, not the system’s limitations.
  • Option B is incorrect: While shared responsibility is an SRE principle, simply making the development team support the service does not resolve the underlying reliability issues identified in the PRR. The goal is collaboration to fix the service.
  • Option D is incorrect: Launching a service without SLOs means there is no objective way to measure its performance or determine if it is meeting user needs. SLOs should be defined before a service goes live.

Reference: https://sre.google/workbook/production-readiness-review/

QUESTION 27

You are running an experiment to see whether your users like a new feature of a web application. Shortly after deploying the feature as a canary release, you receive a spike in the number of 500 errors sent to users, and your monitoring reports show increased latency. You want to quickly minimize the negative impact on users. What should you do first?

  • A. Roll back the experimental canary release.
  • B. Start monitoring latency, traffic, errors, and saturation.
  • C. Record data for the postmortem document of the incident.
  • D. Trace the origin of 500 errors and the root cause of increased latency.
Click to View Verified Solution & Explanation

Correct Option: A

Explanation:

✅ Option A (Correct)
Reasoning: The primary goal during an active incident is to mitigate user impact as quickly as possible, which is measured by Mean Time To Recovery (MTTR). A canary release is a deployment strategy specifically designed to test new code on a small subset of users and allow for a rapid rollback if negative signals (like increased errors or latency) are detected. Since the canary release is clearly correlated with the production issues, rolling it back is the fastest and safest first step to restore normal service. Once the service is stable, the team can then perform a root cause analysis in a less time-pressured environment.

❌ Why the other choices are incorrect:

  • Option B is incorrect: The scenario states that monitoring is already in place and has detected the spike in errors and latency. The priority is to act on the available data, not to start the monitoring process over again.
  • Option C is incorrect: Documenting an incident for a postmortem is a critical part of the incident lifecycle, but it occurs after the immediate impact has been mitigated. The first priority is always to restore service.
  • Option D is incorrect: While tracing the root cause is essential for a permanent fix, it should be done after the service has been stabilized by a rollback. Attempting to debug a live, user-impacting issue is often slower and riskier than reverting to a known-good state.

Reference: https://sre.google/sre-book/managing-incidents/

QUESTION 28

You are responsible for creating and modifying the Terraform templates that define your Infrastructure. Because two new engineers will also be working on the same code, you need to define a process and adopt a tool that will prevent you from overwriting each other’s code. You also want to ensure that you capture all updates in the latest version. What should you do?

  • A. 1. Store your code in a Git-based version control system. 2. Establish a process that allows developers to merge their own changes at the end of each day. 3. Package and upload code to a versioned Cloud Storage basket as the latest master version.
  • B. 1. Store your code in a Git-based version control system. 2. Establish a process that includes code reviews by peers and unit testing to ensure integrity and functionality before integration of code. 3. Establish a process where the fully integrated code in the repository becomes the latest master version.
  • C. 1. Store your code as text files in Google Drive in a defined folder structure that organizes the files. 2. At the end of each day, confirm that all changes have been captured in the files within the folder structure. 3. Rename the folder structure with a predefined naming convention that increments the version.
  • D. 1. Store your code as text files in Google Drive in a defined folder structure that organizes the files. 2. At the end of each day, confirm that all changes have been captured in the files within the folder structure and create a new .zip archive with a predefined naming convention. 3. Upload the .zip archive to a versioned Cloud Storage bucket and accept it as the latest version.
Click to View Verified Solution & Explanation

Correct Option: B

Explanation:

✅ Option B (Correct)

Reasoning: This option describes the industry-standard best practice for collaborative Infrastructure as Code (IaC) development. Using a Git-based version control system is essential for tracking changes, branching, and merging. The process of peer code reviews (typically via pull/merge requests) and automated testing is crucial for ensuring code quality, preventing conflicts, and catching errors before they are integrated into the main branch. This workflow directly addresses the problem of multiple engineers overwriting each other’s work by providing a structured integration process. The repository’s main branch serves as the single source of truth for the infrastructure’s desired state.

❌ Why the other choices are incorrect:

  • Option A is incorrect: Allowing developers to merge their own changes without a review process is risky and undermines collaboration. It can lead to integration issues, broken builds, and conflicts in the main branch. Using Cloud Storage as the primary versioned artifact for source code is also an anti-pattern; Git itself is the versioning system for the code.
  • Options C and D are incorrect: Using Google Drive as a repository for code is fundamentally flawed. Drive is a file storage and collaboration tool, not a version control system (VCS). It lacks critical features for software development like atomic commits, branching, merging, and conflict resolution, making it extremely difficult and error-prone for multiple engineers to work on the same codebase without overwriting changes.

Reference: https://cloud.google.com/docs/ci-cd/infrastructure-as-code/managing-infrastructure-as-code

QUESTION 29

You support a high-traffic web application with a microservice architecture. The home page of the application displays multiple widgets containing content such as the current weather, stock prices, and news headlines. The main serving thread makes a call to a dedicated microservice for each widget and then lays out the homepage for the user. The microservices occasionally fail; when that happens, the serving thread serves the homepage with some missing content. Users of the application are unhappy if this degraded mode occurs too frequently, but they would rather have some content served instead of no content at all. You want to set a Service Level Objective (SLO) to ensure that the user experience does not degrade too much. What Service Level Indicator (SLI) should you use to measure this?

  • A. A quality SLI: the ratio of non-degraded responses to total responses.
  • B. An availability SLI: the ratio of healthy microservices to the total number of microservices.
  • C. A freshness SLI: the proportion of widgets that have been updated within the last 10 minutes.
  • D. A latency SLI: the ratio of microservice calls that complete in under 100 ms to the total number of microservice calls.
Click to View Verified Solution & Explanation

Correct Option: A

Explanation:

✅ Option A (Correct)
Reasoning: The core issue is the user-facing quality of the homepage, which can be either complete (non-degraded) or incomplete (degraded). A Service Level Indicator (SLI) should directly measure the user experience. A quality SLI, defined as the ratio of non-degraded responses to the total number of responses, perfectly captures this. It measures how often the service provides a “good” or complete response, directly aligning with the user’s happiness and allowing the team to set a meaningful Service Level Objective (SLO) like “99.9% of homepage views will be non-degraded.”

❌ Why the other choices are incorrect:

  • Option B is incorrect: This measures the health of the backend components (microservices), not the user’s experience. The main homepage service is always available, even if degraded. The health of individual microservices is an indirect proxy and doesn’t precisely reflect the rate of degraded responses served to users.
  • Option C is incorrect: A freshness SLI measures how up-to-date the data is. The problem describes content failing to load entirely, not the content being stale. Therefore, this SLI is irrelevant to the stated problem.
  • Option D is incorrect: A latency SLI measures response speed. While important, the primary issue here is the completeness or quality of the response, not how fast it is delivered. A response could be very fast but still degraded (missing content).

Reference: https://sre.google/sre-book/service-level-objectives/#choosing-an-sli

QUESTION 30 (Multi-Select)

You support a multi-region web service running on Google Kubernetes Engine (GKE) behind a Global HTTP/ S Cloud Load Balancer (CLB). For legacy reasons, user requests first go through a third-party Content Delivery Network (CDN), which then routes traffic to the CLB. You have already implemented an availability Service Level Indicator (SLI) at the CLB level. However, you want to increase coverage in case of a potential load balancer misconfiguration, CDN failure, or other global networking catastrophe. Where should you measure this new SLI? (Choose two.)

  • A. Your application servers' logs.
  • B. Instrumentation coded directly in the client.
  • C. Metrics exported from the application servers.
  • D. GKE health checks for your application servers.
  • E. A synthetic client that periodically sends simulated user requests.
Click to View Verified Solution & Explanation

Correct Option: B,E

Explanation:

Rationale Breakdown

The goal is to create a new Service Level Indicator (SLI) that measures availability from an end-user’s perspective, covering the entire request path: third-party CDN, Google’s Global Cloud Load Balancer (CLB), and the GKE backend. The existing SLI at the CLB level is insufficient as it cannot detect failures in the CDN or global network routing issues before the request reaches Google’s network edge.

The chosen methods must therefore originate from outside the Google Cloud project’s infrastructure to accurately simulate or measure the end-user experience.

✅ Option B (Correct)

Reasoning: Instrumenting the client application (e.g., a web browser or mobile app) is known as Real User Monitoring (RUM). This provides the most accurate measurement of user-perceived availability because it captures the success or failure of actual user requests across the entire path, including the user’s local network, the internet, the CDN, and the load balancer. It directly answers the question of whether real users can access the service.

✅ Option E (Correct)

Reasoning: A synthetic client, also known as a prober or black-box monitoring, simulates user requests from various external locations. This proactively tests the availability and latency of the entire public-facing infrastructure (CDN, DNS, CLB). It is essential for detecting outages or misconfigurations even when real user traffic is low and provides a consistent baseline for availability measurement that is independent of actual user behavior.

❌ Why the other choices are incorrect:

  • Option A & C are incorrect: Application server logs and exported metrics are forms of white-box monitoring. They only see requests that have successfully traversed the CDN and the CLB to reach the GKE pods. They cannot detect failures in these upstream components.
  • Option D is incorrect: GKE health checks are an internal mechanism used by the CLB and Kubernetes to determine if individual pods are healthy. A passing health check does not guarantee that a user can reach the service through the CDN.

Reference: https://sre.google/sre-book/monitoring-distributed-systems/#xref_monitoring_golden-signals

QUESTION 31

Your team is designing a new application for deployment into Google Kubernetes Engine (GKE). You need to set up monitoring to collect and aggregate various application-level metrics in a centralized location. You want to use Google Cloud Platform services while minimizing the amount of work required to set up monitoring. What should you do?

  • A. Publish various metrics from the application directly to the Stackdriver Monitoring API, and then observe these custom metrics in Stackdriver.
  • B. Install the Cloud Pub/Sub client libraries, push various metrics from the application to various topics, and then observe the aggregated metrics in Stackdriver.
  • C. Install the OpenTelemetry client libraries in the application, configure Stackdriver as the export destination for the metrics, and then observe the application's metrics in Stackdriver.
  • D. Emit all metrics in the form of application-specific log messages, pass these messages from the containers to the Stackdriver logging collector, and then observe metrics in Stackdriver.
Click to View Verified Solution & Explanation

Correct Option: A

Explanation:

✅ Option A (Correct)
Reasoning: This is the most direct and simplest method to get custom application metrics into Google Cloud Monitoring. By using the Cloud Monitoring client libraries, the application can publish metrics directly to the Monitoring API. This approach requires no intermediate services or complex configurations, perfectly aligning with the requirement to use GCP services while minimizing setup work. For applications running in GKE, authentication is handled seamlessly via Workload Identity.

❌ Why the other choices are incorrect:

  • Option B is incorrect: Using Cloud Pub/Sub adds an unnecessary intermediate layer. This would require pushing metrics to a topic and then creating a separate component (like a Cloud Function) to pull from the topic and write to Cloud Monitoring, which significantly increases complexity and work.
  • Option C is incorrect: While OpenTelemetry is a powerful and modern standard for observability, setting it up involves integrating its libraries and configuring an exporter. Using the native Cloud Monitoring client library directly (as in option A) is arguably a more straightforward approach with less initial setup, thus better fitting the "minimize work" criterion for a purely GCP-focused solution.
  • Option D is incorrect: Creating log-based metrics is a valid pattern, but it’s less efficient and intended for deriving metrics from existing log data (e.g., counting errors), not for publishing dedicated, high-frequency application metrics. This method introduces latency and is not the primary mechanism for custom metric instrumentation.

Reference: https://cloud.google.com/monitoring/custom-metrics/creating-metrics

QUESTION 32

You support a production service that runs on a single Compute Engine instance. You regularly need to spend time on recreating the service by deleting the crashing instance and creating a new instance based on the relevant image. You want to reduce the time spent performing manual operations while following Site Reliability Engineering principles. What should you do?

  • A. File a bug with the development team so they can find the root cause of the crashing instance.
  • B. Create a Managed instance Group with a single instance and use health checks to determine the system status.
  • C. Add a Load Balancer in front of the Compute Engine instance and use health checks to determine the system status.
  • D. Create a Stackdriver Monitoring dashboard with SMS alerts to be able to start recreating the crashed instance promptly after it was crashed.
Click to View Verified Solution & Explanation

Correct Option: B

Explanation:

Correct Answer: B

A Managed Instance Group (MIG) with a size of one is the most effective solution. MIGs have a built-in autohealing feature. By configuring a health check, the MIG will monitor the instance’s status. If the instance fails the health check, the MIG will automatically delete the unhealthy instance and create a new one based on the instance template. This directly automates the manual recovery process described, reduces operational toil, and improves service availability, which are core Site Reliability Engineering (SRE) principles.

Incorrect Answers:

  • A: Filing a bug is important for root cause analysis but does not address the immediate operational need to automate the recovery process and reduce toil.
  • C: A Load Balancer can use health checks to detect a failure, but it cannot recreate the failed backend instance. It would only stop routing traffic, resulting in an outage until manual intervention.
  • D: Creating alerts reduces the Mean Time to Detect (MTTD) but does not automate the recovery. An operator would still need to perform the manual recreation steps, which fails to reduce the operational burden.

Reference: https://cloud.google.com/compute/docs/instance-groups/autohealing-for-migs

QUESTION 33

Your application artifacts are being built and deployed via a CI/CD pipeline. You want the CI/CD pipeline to securely access application secrets. You also want to more easily rotate secrets in case of a security breach. What should you do?

  • A. Prompt developers for secrets at build time. Instruct developers to not store secrets at rest.
  • B. Store secrets in a separate configuration file on Git. Provide select developers with access to the configuration file.
  • C. Store secrets in Cloud Storage encrypted with a key from Cloud KMS. Provide the CI/CD pipeline with access to Cloud KMS via IAM.
  • D. Encrypt the secrets and store them in the source code repository. Store a decryption key in a separate repository and grant your pipeline access to it.
Click to View Verified Solution & Explanation

Correct Option: C

Explanation:

✅ Option C (Correct)
Reasoning: This option describes a secure and standard Google Cloud pattern for managing secrets. Storing secrets encrypted at rest in Cloud Storage, with the encryption key managed by Cloud KMS, ensures data protection. Access is controlled via IAM, allowing the CI/CD pipeline’s service account to be granted the specific Cloud KMS CryptoKey Decrypter role. This enforces the principle of least privilege, as the pipeline can only decrypt secrets it has access to, right when it needs them. Rotating a secret is as simple as updating the encrypted file in Cloud Storage, without any code changes, making it efficient and easy to manage.

❌ Why the other choices are incorrect:

  • Option A is incorrect: Prompting for secrets is a manual step that breaks the automation goal of a CI/CD pipeline.
  • Option B is incorrect: Storing plaintext secrets in a source code repository like Git, even a private one, is a major security anti-pattern. Secrets can be exposed through the commit history and are difficult to purge completely.
  • Option D is incorrect: While encrypting secrets is good, storing the decryption key in another repository is not a secure practice. It simply moves the problem. A dedicated key management service like Cloud KMS provides hardware-level security, fine-grained access control, and audit logging that a Git repository does not.

Reference: https://cloud.google.com/kms/docs/secret-management

QUESTION 34

Your company follows Site Reliability Engineering practices. You are the person in charge of Communications for a large, ongoing incident affecting your customer-facing applications. There is still no estimated time for a resolution of the outage. You are receiving emails from internal stakeholders who want updates on the outage, as well as emails from customers who want to know what is happening. You want to efficiently provide updates to everyone affected by the outage. What should you do?

  • A. Focus on responding to internal stakeholders at least every 30 minutes. Commit to “next update” times.
  • B. Provide periodic updates to all stakeholders in a timely manner. Commit to a “next update” time in all communications.
  • C. Delegate the responding to internal stakeholder emails to another member of the Incident Response Team. Focus on providing responses directly to customers.
  • D. Provide all internal stakeholder emails to the Incident Commander, and allow them to manage internal communications. Focus on providing responses directly to customers.
Click to View Verified Solution & Explanation

Correct Option: B

Explanation:

✅ Option B (Correct)
Reasoning: This option aligns perfectly with Site Reliability Engineering (SRE) best practices for incident management. The Communications Lead’s primary responsibility is to provide clear, consistent, and timely updates to all stakeholders, both internal and external. Committing to a “next update time,” even when there is no new information, is a critical technique. It manages expectations, builds trust, and reduces the frequency of inbound status requests, which allows the incident response team to focus on resolving the issue.

❌ Why the other choices are incorrect:

  • Option A is incorrect: This approach neglects external customers, who are a critical stakeholder group. Effective incident communication must encompass everyone affected by the outage.
  • Option C is incorrect: Splitting communication duties between different people for internal and external audiences risks creating inconsistent or conflicting messages. The Communications Lead should own the overall communication strategy to ensure a single, consistent source of truth.
  • Option D is incorrect: This is a classic anti-pattern. The Incident Commander’s role is to focus on resolving the incident. Burdening them with communication tasks distracts from their primary responsibility. The Communications Lead role exists specifically to offload this work from the Incident Commander.

Reference: https://sre.google/sre-book/managing-incidents/

QUESTION 35

Your team uses Cloud Build for all CI/CD pipelines. You want to use the kubectl builder for Cloud Build to deploy new images to Google Kubernetes Engine (GKE). You need to authenticate to GKE while minimizing development effort. What should you do?

  • A. Assign the Container Developer role to the Cloud Build service account.
  • B. Specify the Container Developer role for Cloud Build in the cloudbuild.yaml file.
  • C. Create a new service account with the Container Developer role and use it to run Cloud Build.
  • D. Create a separate step in Cloud Build to retrieve service account credentials and pass these to kubectl.
Click to View Verified Solution & Explanation

Correct Option: A

Explanation:

✅ Option A (Correct)
Reasoning: Cloud Build executes its steps using a dedicated service account ([PROJECT_NUMBER]@cloudbuild.gserviceaccount.com). To interact with other Google Cloud services like GKE, this service account needs the appropriate IAM permissions. The Kubernetes Engine Developer role (roles/container.developer) grants the necessary permissions to manage Kubernetes workloads. By assigning this role directly to the Cloud Build service account, the kubectl builder, which runs within the Cloud Build environment, automatically authenticates to the GKE cluster and is authorized to deploy applications. This is the most direct, secure, and least effort solution.

❌ Why the other choices are incorrect:

  • Option B is incorrect: The cloudbuild.yaml file is used to define the build steps, not to assign IAM roles. IAM permissions are managed at the project or resource level through IAM policies, not within build configuration files.
  • Option C is incorrect: While you can use a custom service account with Cloud Build, creating a new one adds unnecessary steps compared to granting a role to the existing default service account. The question specifically asks to minimize development effort, making this a less optimal choice.
  • Option D is incorrect: The gcr.io/cloud-builders/kubectl builder is designed to automatically use the ambient credentials provided by the Cloud Build execution environment. Manually retrieving and passing credentials adds unnecessary complexity and is not the standard practice. The builder handles authentication seamlessly once the service account has the correct permissions.

Reference: https://cloud.google.com/build/docs/deploying-builds/deploy-gke

QUESTION 36

You support an application that stores product information in cached memory. For every cache miss, an entry is logged in Stackdriver Logging. You want to visualize how often a cache miss happens over time. What should you do?

  • A. Link Stackdriver Logging as a source in Google Data Studio. Filter the logs on the cache misses.
  • B. Configure Stackdriver Profiler to identify and visualize when the cache misses occur based on the logs.
  • C. Create a logs-based metric in Stackdriver Logging and a dashboard for that metric in Stackdriver Monitoring.
  • D. Configure BigQuery as a sink for Stackdriver Logging. Create a scheduled query to filter the cache miss logs and write them to a separate table.
Click to View Verified Solution & Explanation

Correct Option: C

Explanation:

✅ Option C (Correct)
Reasoning: This is the standard and most direct method for converting log events into visualizable time-series data on Google Cloud. Creating a logs-based metric allows you to define a filter for the specific log entries (cache misses) and count their occurrences. This count is published as a custom metric to Cloud Monitoring, where it can be charted on a dashboard to visualize the rate of cache misses over time, fulfilling the requirement perfectly.

❌ Why the other choices are incorrect:

  • Option A is incorrect: While Data Studio is a visualization tool, it’s not the primary tool for real-time operational monitoring of log data. The standard path is through Cloud Monitoring, which is specifically designed for time-series metrics and alerting.
  • Option B is incorrect: Cloud Profiler is a performance analysis tool used to analyze CPU and memory usage within an application’s code. It does not analyze log contents or visualize event frequencies.
  • Option D is incorrect: Configuring a BigQuery sink is a valid pattern for long-term log analysis and complex querying, but it’s overly complex and introduces latency for the simple, near real-time visualization of an event’s frequency. The logs-based metric to Cloud Monitoring workflow is more efficient for this use case.

Reference: https://cloud.google.com/logging/docs/logs-based-metrics

QUESTION 37

You need to deploy a new service to production. The service needs to automatically scale using a Managed Instance Group (MIG) and should be deployed over multiple regions. The service needs a large number of resources for each instance and you need to plan for capacity. What should you do?

  • A. Use the n1-highcpu-96 machine type in the configuration of the MIG.
  • B. Monitor results of Stackdriver Trace to determine the required amount of resources.
  • C. Validate that the resource requirements are within the available quota limits of each region.
  • D. Deploy the service in one region and use a global load balancer to route traffic to this region.
Click to View Verified Solution & Explanation

Correct Option: C

Explanation:

✅ Option C (Correct)

Reasoning: Google Cloud enforces resource quotas on a per-project, per-region basis to manage resource allocation and prevent unexpected over-consumption. For a deployment that is large, resource-intensive, and spans multiple regions, the most critical capacity planning step is to ensure that the required resources (like total vCPUs, IP addresses, and disk space) are available within the project’s quota limits for each target region. If the planned deployment exceeds these limits, it will fail. Therefore, validating against quotas and requesting increases if necessary is a fundamental prerequisite for a successful deployment.

❌ Why the other choices are incorrect:

  • Option A is incorrect: Selecting a specific machine type is part of the configuration, but it doesn’t address the core capacity planning issue. You could select the perfect machine type, but the deployment will still fail if you don’t have enough quota for it in each region.
  • Option B is incorrect: Cloud Trace is a performance monitoring tool for analyzing latency in distributed systems. It is used to debug application performance after deployment, not for pre-deployment infrastructure capacity planning or checking resource quotas.
  • Option D is incorrect: This approach contradicts the explicit requirement to deploy the service “over multiple regions.” A multi-region architecture is key for high availability and low latency for a global user base.

Reference: https://cloud.google.com/docs/quotas/view-manage

QUESTION 38

You are running an application on Compute Engine and collecting logs through Stackdriver. You discover that some personally identifiable information (PII) is leaking into certain log entry fields. All PII entries begin with the text userinfo. You want to capture these log entries in a secure location for later review and prevent them from leaking to Stackdriver Logging. What should you do?

  • A. Create a basic log filter matching userinfo, and then configure a log export in the Stackdriver console with Cloud Storage as a sink.
  • B. Use a Fluentd filter plugin with the Stackdriver Agent to remove log entries containing userinfo, and then copy the entries to a Cloud Storage bucket.
  • C. Create an advanced log filter matching userinfo, configure a log export in the Stackdriver console with Cloud Storage as a sink, and then configure a log exclusion with userinfo as a filter.
  • D. Use a Fluentd filter plugin with the Stackdriver Agent to remove log entries containing userinfo, create an advanced log filter matching userinfo, and then configure a log export in the Stackdriver console with Cloud Storage as a sink.
Click to View Verified Solution & Explanation

Correct Option: B

Explanation:

✅ Option B (Correct)
Reasoning: The most effective way to prevent personally identifiable information (PII) from reaching the Cloud Logging service is to process the logs on the client side, before they are sent. The Ops Agent (or legacy Logging agent) on the Compute Engine instance is based on Fluentd and allows for custom filter plugins. A Fluentd filter can be configured to match log entries containing the userinfo string, remove them from the main processing pipeline destined for Cloud Logging, and simultaneously route a copy to a secure location like a Cloud Storage bucket. This approach ensures the sensitive data never leaves the VM and is not ingested by the Cloud Logging API, directly addressing the requirement to prevent the leak.

❌ Why the other choices are incorrect:

  • Option A is incorrect: This configuration processes logs after they have been ingested by Cloud Logging. The export will send the logs to Cloud Storage, but they will still be visible in the Logs Explorer, failing to prevent the leak.
  • Option C is incorrect: Log exports and exclusions are server-side configurations that operate on logs after they have been received by the Cloud Logging API. While an exclusion would prevent the log from being stored in Cloud Logging log buckets, the PII is still transmitted to and processed by the logging service, which can be considered a leak.
  • Option D is incorrect: This approach is redundant. If a Fluentd filter on the agent removes the log entries at the source, there will be no logs containing userinfo ingested into Cloud Logging for the server-side advanced filter and export to act upon.

Reference: https://cloud.google.com/logging/docs/agent/logging/processing-logs

QUESTION 39

You have a CI/CD pipeline that uses Cloud Build to build new Docker images and push them to Docker Hub. You use Git for code versioning. After making a change in the Cloud Build YAML configuration, you notice that no new artifacts are being built by the pipeline. You need to resolve the issue following Site Reliability Engineering practices. What should you do?

  • A. Disable the CI pipeline and revert to manually building and pushing the artifacts.
  • B. Change the CI pipeline to push the artifacts is Container Registry instead of Docker Hub.
  • C. Upload the configuration YAML file to Cloud Storage and use Error Reporting to identify and fix the issue.
  • D. Run a Git compare between the previous and current Cloud Build Configuration files to find and fix the bug.
Click to View Verified Solution & Explanation

Correct Option: D

Explanation:

✅ Option D (Correct)
Reasoning: Site Reliability Engineering (SRE) practices emphasize using version control as the source of truth and for incident analysis. Since the pipeline broke immediately after a change to the Cloud Build YAML configuration, the most direct and efficient troubleshooting step is to compare the current, non-working configuration with the last known-good version stored in Git. Using a git diff command will immediately highlight the changes made, allowing for rapid identification and correction of the bug. This approach directly targets the root cause with minimal disruption.

❌ Why the other choices are incorrect:

  • Option A is incorrect: Abandoning automation for manual processes is a step backward. It increases toil and the risk of human error, which is directly contrary to SRE principles.
  • Option B is incorrect: Changing the artifact destination from Docker Hub to Container Registry is irrelevant to the problem. The build is failing before the push step, so changing the destination will not resolve the underlying configuration error.
  • Option C is incorrect: Cloud Error Reporting is designed to aggregate and display errors from running applications, not to debug syntax or logical errors in a CI/CD configuration file. The appropriate place to view detailed build failure logs is within Cloud Build’s execution details in the Google Cloud Console, which are streamed to Cloud Logging.

Reference: https://cloud.google.com/build/docs/troubleshooting-build-errors

QUESTION 40

Your company follows Site Reliability Engineering principles. You are writing a postmortem for an incident, triggered by a software change, that severely affected users. You want to prevent severe incidents from happening in the future. What should you do?

  • A. Identify engineers responsible for the incident and escalate to their senior management.
  • B. Ensure that test cases that catch errors of this type are run successfully before new software releases.
  • C. Follow up with the employees who reviewed the changes and prescribe practices they should follow in the future.
  • D. Design a policy that will require on-call teams to immediately call engineers and management to discuss a plan of action if an incident occurs.
Click to View Verified Solution & Explanation

Correct Option: B

Explanation:

✅ Option B (Correct)
Reasoning: This aligns perfectly with the core principles of a Site Reliability Engineering (SRE) blameless postmortem. The primary goal is to understand the systemic causes of an incident and implement preventative measures. Since the incident was triggered by a software change, the most effective prevention is to introduce automated checks. Adding specific test cases to the continuous integration (CI) pipeline ensures this class of error is caught automatically before future deployments, making the system more resilient without relying on fallible human processes.

❌ Why the other choices are incorrect:

  • Option A is incorrect: This promotes a culture of blame, which is the antithesis of SRE principles. Blameless postmortems are essential for psychological safety and effective learning.
  • Option C is incorrect: While improving review practices can be a contributing action item, it relies on human memory and diligence. A systemic, automated solution like new test cases (Option B) is a more reliable and durable fix.
  • Option D is incorrect: This addresses incident response, not incident prevention. The question asks how to prevent future incidents. While improving response is important, the root cause was the software change, which should be addressed earlier in the development lifecycle.

Reference: https://sre.google/sre-book/postmortem-culture/

QUESTION 41 (Multi-Select)

You support a high-traffic web application that runs on Google Cloud Platform (GCP). You need measure application reliability from a user perspective without making any engineering changes to it. What should you do? (Choose two.)

  • A. Review current application metrics and add new ones as needed.
  • B. Modify the code to capture additional information for user interaction.
  • C. Analyze the web proxy logs only and capture response time of each request.
  • D. Create new synthetic clients to simulate a user journey using the application.
  • E. Use current and historic Request Logs to trace customer interaction with the application.
Click to View Verified Solution & Explanation

Correct Option: C,E

Explanation:

✅ Option C (Correct)
Reasoning: Analyzing web proxy or load balancer logs is a classic black-box monitoring technique. These logs are generated automatically without any application code changes. They contain crucial user-facing metrics such as request latency (response time) and HTTP status codes (error rates), which are direct indicators of application reliability from a user’s perspective.

✅ Option E (Correct)
Reasoning: Similar to proxy logs, Request Logs (e.g., from Cloud Load Balancing, captured in Cloud Logging) provide a detailed, historical record of every user request. Tracing these requests allows you to reconstruct user journeys and identify specific points of failure or high latency. This method uses existing data and requires no engineering changes to the application itself.

❌ Why the other choices are incorrect:

  • Option A is incorrect: While reviewing current metrics is fine, adding new ones often requires instrumenting the application code with a client library, which constitutes an engineering change.
  • Option B is incorrect: This explicitly violates the core constraint of the question, which is to avoid making any engineering changes to the application code.
  • Option D is incorrect: Creating synthetic clients is a valid proactive monitoring strategy (black-box monitoring). However, it involves an engineering effort to build and deploy a new monitoring system. Analyzing existing logs (C and E) is a more direct approach that leverages data already being generated, perfectly aligning with the "no changes" requirement.

Reference: https://cloud.google.com/load-balancing/docs/logging-monitoring

QUESTION 42

You manage an application that is writing logs to Stackdriver Logging. You need to give some team members the ability to export logs. What should you do?

  • A. Grant the team members the IAM role of logging.configWriter on Cloud IAM.
  • B. Configure Access Context Manager to allow only these members to export logs.
  • C. Create and grant a custom IAM role with the permissions logging.sinks.list and logging.sink.get.
  • D. Create an Organizational Policy in Cloud IAM to allow only these members to create log exports.
Click to View Verified Solution & Explanation

Correct Option: A

Explanation:

✅ Option A (Correct)

The predefined IAM role logging.configWriter (roles/logging.configWriter) grants the necessary permissions to manage logging configurations. This includes creating, modifying, and deleting log sinks, which are the resources used to configure log exports to destinations like Cloud Storage, BigQuery, or Pub/Sub. Assigning this role is the most direct and correct way to grant the ability to export logs, adhering to the principle of least privilege.

❌ Why the other choices are incorrect:

  • Option B is incorrect: Access Context Manager is used to enforce fine-grained access control based on user and device attributes (like IP address, location, or device state). It defines from where and when a user can access services, not what actions they can perform within the Cloud Logging service.
  • Option C is incorrect: A custom role with only logging.sinks.list and logging.sinks.get permissions would be read-only. Users with this role could view existing log sinks but would lack the logging.sinks.create permission required to create a new log export.
  • Option D is incorrect: Organization Policies are used to enforce broad constraints on how resources can be configured across an organization (e.g., restricting resource locations). They do not grant permissions to individual users or groups; that is the function of IAM roles and policies.

Reference: https://cloud.google.com/logging/docs/access-control#logging-roles

Need the Full Exam Simulator?

Practice the complete question bank in a realistic, timed environment with advanced tracking.

Access Full CertoMetrics Engine →

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top