Ngân hàng đề — Google Cloud Professional Cloud Developer

Tìm thấy 358 câu.

Câu 61
Your application performs well when tested locally, but it runs significantly slower after you deploy it to a Compute Engine instance. You need to diagnose the problem. What should you do?
What should you do?
  1. A File a ticket with Cloud Support indicating that the application performs faster locally.
  2. B Use Cloud Debugger snapshots to look at a point-in-time execution of the application.
  3. C Use Cloud Profiler to determine which functions within the application take the longest amount of time.
  4. D Add logging commands to the application and use Cloud Logging to check where the latency problem occurs.
Xem giải thích

🧩 Phân tích nội dung câu hỏi

Câu hỏi mô tả một tình huống phổ biến trong phát triển ứng dụng trên Google Cloud Platform (GCP): Ứng dụng chạy mượt mà và nhanh chóng khi test local (trên máy cá nhân), nhưng chậm đáng kể sau khi deploy lên instance Compute Engine. Nhiệm vụ là chẩn đoán vấn đề (diagnose the problem) để tìm nguyên nhân gây chậm, tập trung vào việc xác định phần nào của code gây bottleneck hiệu suất.
📌 Bối cảnh chính: Compute Engine là dịch vụ VM (máy ảo) trên GCP, nơi ứng dụng có thể chậm do nhiều yếu tố như CPU-bound, I/O, network, memory leak, hoặc sự khác biệt môi trường (local vs. cloud). Cần công cụ profiling chuyên sâu để đo lường thời gian thực thi của từng function/method, chứ không phải debug thông thường hay log thủ công.

✅ Đáp án đúng

Use Cloud Profiler to determine which functions within the application take the longest amount of time.

Lý do chọn đáp án này 🛠️:
Cloud Profiler là công cụ continuous profiling của GCP, được thiết kế chuyên biệt để phân tích hiệu suất ứng dụng bằng cách thu thập dữ liệu CPU, wall-clock time, và memory allocation theo từng function mà không cần thay đổi code. Nó giúp xác định chính xác functions/methods nào mất thời gian lâu nhất, ngay cả trên môi trường production như Compute Engine. Đây là giải pháp tối ưu và chính xác nhất cho vấn đề performance degradation giữa local và cloud (do cloud có overhead như virtualization). Theo tài liệu GCP cập nhật 2024-2026, Cloud Profiler hỗ trợ nhiều ngôn ngữ (Java, Go, Python, Node.js, etc.) và tích hợp dễ dàng với Compute Engine qua agent.
📘 Nguồn tham khảo: Cloud Profiler Documentation và Best Practices for Performance Profiling.

📋 Giải thích chi tiết tất cả các phương án

Dưới đây là phân tích từng lựa chọn một cách đầy đủ, giữ nguyên văn bản gốc bằng tiếng Anh. Tôi đánh dấu ✅ cho đúng và ❌ cho sai, kèm lý do cụ thể dựa trên best practices GCP mới nhất (2026).

  • ❌ File a ticket with Cloud Support indicating that the application performs faster locally.
    Phân tích sai: Phương án này trì hoãn tự chẩn đoán, chỉ báo cáo vấn đề mà không tự troubleshoot – vi phạm nguyên tắc "self-service" trên GCP. Cloud Support (nay là Google Cloud Support) ưu tiên hỗ trợ sau khi developer đã dùng tools như Profiler/Debugger. Không hiệu quả, mất thời gian chờ ticket (có thể hàng giờ/ngày). ❌ Không giải quyết root cause.

  • ❌ Use Cloud Debugger snapshots to look at a point-in-time execution of the application.
    Phân tích sai: Cloud Debugger (trước là Stackdriver Debugger) dùng để debug code đang chạy bằng snapshots biến/local tại breakpoint, không phải profiling performance. Nó chỉ xem trạng thái tại một thời điểm cụ thể, không đo lường thời gian thực thi tổng thể của functions hay bottleneck liên tục. Phù hợp debug lỗi logic hơn là latency/slowdown. Theo docs 2026, Debugger có overhead thấp nhưng không thay thế Profiler cho perf analysis. ❌ Không target đúng vấn đề thời gian.

  • ✅ Use Cloud Profiler to determine which functions within the application take the longest amount of time.
    Phân tích đúng: Như đã giải thích ở trên, đây là công cụ lý tưởng cho continuous profiling, hiển thị flame graph để pinpoint functions chậm (CPU/wall time). Tích hợp native với Compute Engine, low-overhead (<2% CPU), và hỗ trợ production traffic cao. Giải quyết chính xác sự khác biệt local vs. cloud. 🏆 Best match!

  • ❌ Add logging commands to the application and use Cloud Logging to check where the latency problem occurs.
    Phân tích sai: Thêm logging thủ công (như print timestamps) và dùng Cloud Logging (trước là Stackdriver Logging) chỉ giúp trace flow và latency cao cấp, nhưng không đo chi tiết thời gian từng function (quá thô, noisy, và cần redeploy code). Logging tốt cho error/audit, nhưng overhead cao cho perf profiling (có thể làm chậm thêm). GCP recommend Profiler trước Logging cho perf issues (docs 2026). ❌ Không chính xác và inefficient.

🏅 Kết luận & Lời khuyên

Sử dụng Cloud Profiler là cách nhanh chóng, chính xác nhất để fix perf issue trên Compute Engine. Sau khi profile, bạn có thể optimize code hoặc scale VM (n1-standard, c2 machine types). Test với công cụ này giúp tránh trial-error! Nếu cần setup, dùng gcloud CLI: gcloud profiler buckets create.
📘 Tài liệu bổ sung: Troubleshoot Compute Engine Performance & GCP Profiler Quickstart.

Câu 62
You have an application running in App Engine. Your application is instrumented with Observability Trace. The /product-details request reports details about four known unique products at /sku-details as shown below. You want to reduce the time it takes for the request to complete.
What should you do?

  1. A Increase the size of the instance class.
  2. B Change the Persistent Disk type to SSD.
  3. C Change /product-details to perform the requests in parallel.
  4. D Store the /sku-details information in a database, and replace the webservice call with a database query.
Xem giải thích

🧩 Phân tích chi tiết nội dung câu hỏi

Câu hỏi này thuộc chủ đề Google Cloud App Engine (không phải AWS như mô tả ban đầu, có thể là nhầm lẫn), tập trung vào việc tối ưu hóa hiệu suất ứng dụng dựa trên dữ liệu từ Cloud Trace (một phần của Observability trong Google Cloud).

  • Bối cảnh: Ứng dụng đang chạy trên App Engine (có thể là Standard hoặc Flexible environment). Endpoint /product-details xử lý chi tiết về bốn sản phẩm unique bằng cách gọi bốn lần đến endpoint /sku-details (để lấy thông tin SKU).
  • Dữ liệu từ Trace:
    • Tổng thời gian của /product-details: 139.059ms (rất chậm).
    • Timeline hình ảnh cho thấy bốn span con của /sku-details chạy tuần tự (sequential): | Span | Thời gian | |------|-----------| | 1 | 30.59ms | | 2 | 32.124ms | | 3 | 29.329ms | | 4 | 28ms |
    • Timeline nằm ngang từ 0-150ms, các span xếp chồng theo thứ tự thời gian, không chồng chéo → chứng tỏ chúng chờ đợi lẫn nhau (serial execution), tổng thời gian span con ≈ 120ms (gần bằng tổng thời gian cha trừ overhead).
  • Mục tiêu: Giảm thời gian hoàn thành request /product-details.
  • Vấn đề cốt lõi (dựa trên hình ảnh): Các lời gọi HTTP/webservice đến /sku-details đang thực hiện tuần tự, dẫn đến thời gian tích lũy cao. Giải pháp cần tập trung vào parallelization để tận dụng concurrency.

Kiến thức cập nhật (đến 2026): Theo Google Cloud docs (App Engine v2+ và Cloud Trace Gen2), Trace giúp detect bottlenecks như sequential calls. App Engine hỗ trợ async/parallel HTTP calls qua ngôn ngữ runtime (Node.js Promise.all, Python asyncio, Java CompletableFuture, v.v.).

📘 Tài liệu tham khảo:

✅ Đáp án đúng và lý do lựa chọn

Đáp án đúng: Change /product-details to perform the requests in parallel.

Lý do 🛠️:

  • Hình ảnh Trace rõ ràng cho thấy 4 calls sequential, tổng thời gian ≈ sum(30+32+29+28)ms = ~119ms + overhead ≈139ms.
  • Chuyển sang parallel (sử dụng async/await hoặc futures): Thời gian chỉ còn max(32ms) + overhead ≈40-50ms → giảm >60% thời gian.
  • Đây là giải pháp trực tiếp, hiệu quả nhất cho bottleneck external API calls trong App Engine (không cần thay đổi infra).
  • Áp dụng thực tế: Trong code, dùng Promise.all() (Node.js), asyncio.gather() (Python) để fetch parallel.

📋 Giải thích tất cả các phương án (đúng/sai)

  • ❌ [SAI] Increase the size of the instance class.
    Giải thích: Tăng kích thước instance class (ví dụ F1 → F4 hoặc B2 → B8) chỉ cải thiện CPU/memory/concurrency tổng thể cho instance, giúp xử lý nhiều request đồng thời hơn hoặc compute-intensive tasks. Nhưng không giải quyết sequential calls trong single request (vẫn chờ đợi từng /sku-details). Overhead nhỏ, nhưng bottleneck là network I/O sequential, không phải CPU. (Theo docs 2026: Instance scaling tự động, nhưng parallel code hiệu quả hơn.)

  • ❌ [SAI] Change the Persistent Disk type to SSD.
    Giải thích: App Engine Standard environment không dùng Persistent Disk (sandboxed filesystem read-only). Flexible environment dùng PD (SSD là default từ 2023+), nhưng thay đổi PD type chỉ ảnh hưởng I/O disk (read/write files), không liên quan đến HTTP calls external (/sku-details là webservice, không phải disk access). Hình ảnh Trace chỉ network spans, không phải disk latency → vô ích và có thể không khả dụng.

  • ✅ [ĐÚNG] Change /product-details to perform the requests in parallel.
    Giải thích: Như phần trên, trực tiếp fix bottleneck sequential từ Trace. Parallel calls giảm thời gian xuống mức max span (~32ms). App Engine hỗ trợ full (runtime bất đồng bộ), và Cloud Trace sẽ show spans chồng chéo sau optimize. Giải pháp best practice cho microservices/external APIs.

  • ❌ [SAI] Store the /sku-details information in a database, and replace the webservice call with a database query.
    Giải thích: Lưu cache vào Datastore/Firestore/Cloud SQL có thể nhanh hơn (sub-10ms/query nếu indexed), nhưng phức tạp hóa (data sync, staleness, 4 products unique → nhiều writes). Trace không chỉ ra DB chậm; vấn đề là sequential webservice calls, không phải data source. Parallel vẫn cần nếu query multiple, và refactor lớn hơn parallelize → không phải giải pháp tối ưu đầu tiên.

Kết luận 🎯: Tập trung parallelize code là cách nhanh nhất, chi phí thấp. Test bằng deploy version mới và check Trace!

Câu 63 Chọn nhiều đáp án
Your company has a data warehouse that keeps your application information in BigQuery. The BigQuery data warehouse keeps 2 PBs of user data. Recently, your company expanded your user base to include EU users and needs to comply with these requirements:
✑ Your company must be able to delete all user account information upon user request.
✑ All EU user data must be stored in a single region specifically for EU users.
Which two actions should you take? (Choose two.)
  1. A Use BigQuery federated queries to query data from Cloud Storage.
  2. B Create a dataset in the EU region that will keep information about EU users only.
  3. C Create a Cloud Storage bucket in the EU region to store information for EU users only.
  4. D Re-upload your data using to a Cloud Dataflow pipeline by filtering your user records out.
  5. E Use DML statements in BigQuery to update/delete user records based on their requests.
Xem giải thích

🧩 Phân tích chi tiết nội dung câu hỏi

Câu hỏi thuộc chủ đề Google Cloud Platform (GCP), cụ thể là BigQuery – một dịch vụ kho dữ liệu (data warehouse) serverless. Công ty đang sử dụng BigQuery để lưu trữ 2 PB dữ liệu người dùng. Gần đây, mở rộng sang người dùng EU, cần tuân thủ các yêu cầu GDPR (quy định bảo vệ dữ liệu châu Âu):

  • Xóa toàn bộ thông tin tài khoản người dùng khi có yêu cầu (right to be forgotten – quyền được quên).
  • Tất cả dữ liệu người dùng EU phải lưu trữ trong một vùng (region) duy nhất dành riêng cho EU (để tránh dữ liệu di chuyển ra ngoài EU).

Câu hỏi yêu cầu chọn hai hành động (Choose two) để đáp ứng cả hai yêu cầu trên. Lưu ý: Dữ liệu lớn (2 PB), nên giải pháp phải hiệu quả, scalable và tận dụng tính năng BigQuery native. Kiến thức cập nhật đến 2026: BigQuery hỗ trợ regional datasets (từ 2018), DML statements cho DELETE/UPDATE (cải tiến hiệu suất với partitioning/clustering), và GDPR compliance qua EU regions (như europe-west4).

📘 Tài liệu tham khảo:

✅ Đáp án đúng và lý do lựa chọn

Hai đáp án đúng là:

  • Create a dataset in the EU region that will keep information about EU users only.
  • Use DML statements in BigQuery to update/delete user records based on their requests.

Lý do chọn 🛠️:

  • Yêu cầu 1 (xóa dữ liệu): BigQuery hỗ trợ DML DELETE native (SQL-like), hiệu quả cho dữ liệu lớn khi kết hợp partitioning (theo user_id hoặc timestamp). Không cần export/re-import, tránh downtime.
  • Yêu cầu 2 (lưu trữ EU region): Tạo dataset regional ở EU (ví dụ: europe-west1) chỉ lưu dữ liệu EU, đảm bảo dữ liệu không rời khỏi EU (data residency). Dữ liệu hiện tại có thể migrate qua COPY jobs hoặc federated queries nội bộ.
  • Kết hợp hai hành động này đáp ứng đầy đủ, scalable cho 2 PB, chi phí thấp (BigQuery tính theo query/storage).

📋 Giải thích tất cả các phương án (đúng/sai)

  • ✅ Create a dataset in the EU region that will keep information about EU users only.
    Đúng 🥇: Trực tiếp giải quyết yêu cầu lưu trữ dữ liệu EU trong single EU region (data residency cho GDPR). BigQuery datasets có location cố định (regional/multi-regional). Migrate dữ liệu EU vào dataset này qua INSERT hoặc COPY, giữ dữ liệu gốc ở dataset cũ nếu cần.

  • ✅ Use DML statements in BigQuery to update/delete user records based on their requests.
    Đúng 🥇: BigQuery hỗ trợ DML DELETE/UPDATE (từ 2018, tối ưu 2025 với vectorized execution). Ví dụ: DELETE FROM table WHERE user_id = 'xxx';. Hỗ trợ right to be forgotten mà không cần ETL phức tạp, an toàn với time-travel (query lịch sử trước delete).

  • ❌ Use BigQuery federated queries to query data from Cloud Storage.
    Sai 🚫: Federated queries chỉ dùng để query dữ liệu từ CS/ external sources (như GCS), không giải quyết storage region hoặc deletion. Dữ liệu chính ở BigQuery (không phải CS), và không giúp xóa dữ liệu gốc.

  • ❌ Create a Cloud Storage bucket in the EU region to store information for EU users only.
    Sai 🚫: Data warehouse ở BigQuery, không phải CS (CS là object storage). Chuyển sang CS không hiệu quả cho analytics/query (BigQuery mới là data warehouse), và không hỗ trợ DML delete native như BigQuery.

  • ❌ Re-upload your data using to a Cloud Dataflow pipeline by filtering your user records out.
    Sai 🚫: Dataflow (Apache Beam) dùng cho ETL, nhưng re-upload 2 PB dữ liệu tốn kém (thời gian, chi phí ~$0.01/GB), không scalable, và chỉ filter một lần – không hỗ trợ delete ongoing theo yêu cầu user. Không tận dụng BigQuery native.

Kết luận 🎯: Giải pháp đúng tận dụng BigQuery strengths (serverless, DML, regional datasets), đảm bảo GDPR compliance mà không refactor lớn. Nếu implement, thêm partitioning by region/user để optimize!

Câu 64
Your App Engine standard configuration is as follows:
service: production
instance_class: B1
You want to limit the application to 5 instances.
Which code snippet should you include in your configuration?
  1. A manual_scaling: instances: 5 min_pending_latency: 30ms
  2. B manual_scaling: max_instances: 5 idle_timeout: 10m
  3. C basic_scaling: instances: 5 min_pending_latency: 30ms
  4. D basic_scaling: max_instances: 5 idle_timeout: 10m
Xem giải thích

🧩 Phân tích nội dung câu hỏi

Câu hỏi tập trung vào Google App Engine Standard Environment (không phải AWS như mô tả ban đầu, có thể là nhầm lẫn). Cụ thể, ứng dụng đã có cấu hình service: production và instance_class: B1 (một lớp instance nhỏ, phù hợp cho môi trường standard). Yêu cầu là giới hạn ứng dụng chỉ chạy tối đa 5 instances bằng cách thêm snippet code vào file app.yaml.

App Engine hỗ trợ 3 loại scaling chính:

  • Automatic scaling (mặc định): Tự động scale dựa trên traffic.
  • Basic scaling: Scale linh hoạt, có thể giới hạn max instances, phù hợp cho workload không liên tục.
  • Manual scaling: Số instances cố định, không tự động scale.

Để limit 5 instances, cần dùng basic_scaling với max_instances: 5 và idle_timeout (thời gian idle trước khi shutdown instance để tránh chi phí). Đây là cách chính xác theo docs GCP mới nhất (2024-2026, không thay đổi cơ bản).

📘 Tài liệu tham khảo:

✅ Đáp án đúng

basic_scaling: max_instances: 5 idle_timeout: 10m

Lý do chọn:

  • Trong basic_scaling, max_instances: 5 chính xác giới hạn số instance tối đa là 5, ngay cả khi traffic cao.
  • idle_timeout: 10m (10 phút) yêu cầu để shutdown instance idle, giúp tiết kiệm chi phí và phù hợp với yêu cầu limit instances.
  • Phù hợp với instance_class B1 (F1 tương đương cũ), không xung đột. Đây là config chuẩn theo docs GCP.

🛠️ Giải thích tất cả các phương án

Dưới đây là phân tích chi tiết từng lựa chọn giữ nguyên văn bản gốc tiếng Anh, chỉ giải thích bằng tiếng Việt:

  • ❌ manual_scaling: instances: 5 min_pending_latency: 30ms
    Sai vì: manual_scaling yêu cầu số instances cố định bằng instances: N (không phải "limit", mà luôn chạy đúng N instances, kể cả idle). Field min_pending_latency không tồn tại trong manual_scaling (chỉ có trong automatic_scaling). Config này sẽ lỗi syntax.

  • ❌ manual_scaling: max_instances: 5 idle_timeout: 10m
    Sai vì: manual_scaling không hỗ trợ max_instances hay idle_timeout (chỉ có instances: N). Những field này thuộc basic_scaling. Config sai sẽ bị App Engine reject khi deploy.

  • ❌ basic_scaling: instances: 5 min_pending_latency: 30ms
    Sai vì: Trong basic_scaling, không dùng instances: 5 (đó là của manual_scaling). min_pending_latency chỉ dùng cho automatic_scaling để trigger scale-up. Config này không limit đúng và sẽ lỗi.

  • ✅ basic_scaling: max_instances: 5 idle_timeout: 10m
    Đúng vì: Hoàn hảo cho basic_scaling – max_instances: 5 giới hạn tối đa 5 instances, idle_timeout: 10m shutdown idle instances sau 10 phút. Đáp ứng yêu cầu "limit to 5 instances" mà không chạy thừa.

Lưu ý cuối: Config này deploy ngay bằng gcloud app deploy. Nếu traffic thấp, instances sẽ scale từ 0 lên max 5! 🚀

Câu 65
Your analytics system executes queries against a BigQuery dataset. The SQL query is executed in batch and passes the contents of a SQL file to the BigQuery
CLI. Then it redirects the BigQuery CLI output to another process. However, you are getting a permission error from the BigQuery CLI when the queries are executed.
You want to resolve the issue. What should you do?
  1. A Grant the service account BigQuery Data Viewer and BigQuery Job User roles.
  2. B Grant the service account BigQuery Data Editor and BigQuery Data Viewer roles.
  3. C Create a view in BigQuery from the SQL query and SELECT* from the view in the CLI.
  4. D Create a new dataset in BigQuery, and copy the source table to the new dataset Query the new dataset and table from the CLI.
Xem giải thích

🧩 Phân tích chi tiết nội dung câu hỏi

Câu hỏi mô tả một hệ thống phân tích dữ liệu (analytics system) đang thực thi các truy vấn SQL trên một dataset BigQuery (dịch vụ kho dữ liệu lớn của Google Cloud). Quy trình hoạt động như sau:

  • Các truy vấn SQL được chạy theo chế độ batch (lô), nghĩa là truyền nội dung từ một file SQL vào BigQuery CLI (command-line interface của BigQuery).
  • Sau đó, output từ BigQuery CLI được chuyển hướng (redirect) sang một quy trình khác để xử lý tiếp.
  • Vấn đề gặp phải: Lỗi permission error (lỗi quyền truy cập) từ BigQuery CLI khi thực thi truy vấn.

📌 Mục tiêu: Khắc phục lỗi này một cách hiệu quả nhất, tập trung vào quyền IAM (Identity and Access Management) vì lỗi liên quan đến permission khi chạy job query qua CLI.
🛠️ Bối cảnh kỹ thuật: BigQuery CLI (bq command) yêu cầu service account phải có quyền tạo và chạy job (query job) cũng như đọc dữ liệu từ dataset/table. Đây là vấn đề phổ biến khi sử dụng service account với CLI trong môi trường tự động hóa (batch). Kiến thức dựa trên tài liệu AWS? Không, đây là Google Cloud BigQuery (không liên quan AWS), phiên bản cập nhật mới nhất đến 2026 vẫn giữ nguyên các IAM roles cốt lõi (không thay đổi lớn từ 2023-2026 theo docs GCP).

✅ Đáp án đúng và lý do lựa chọn

Đáp án đúng: Grant the service account BigQuery Data Viewer and BigQuery Job User roles.

Lý do chi tiết:

  • Để chạy query qua BigQuery CLI (bq query), service account cần:
    • BigQuery Job User (roles/bigquery.jobUser): Quyền tạo và quản lý job query (chạy SQL batch).
    • BigQuery Data Viewer (roles/bigquery.dataViewer): Quyền đọc dữ liệu từ dataset/table (SELECT queries).
  • Đây là bộ quyền tối thiểu và chính xác để khắc phục permission error khi CLI tạo job và đọc data. Không cần quyền chỉnh sửa (editor) vì chỉ query/read.
  • Phương án này đơn giản, an toàn (least privilege principle), phù hợp batch job tự động.
    📘 Nguồn tham khảo: BigQuery Access Control & CLI Authentication (cập nhật 2024-2026, không thay đổi roles cốt lõi).

📋 Giải thích tất cả các phương án (đúng/sai)

Dưới đây là phân tích từng lựa chọn, giữ nguyên văn bản gốc tiếng Anh:

  • Grant the service account BigQuery Data Viewer and BigQuery Job User roles.
    ✅ Đúng: Như giải thích trên, đây là sự kết hợp hoàn hảo cho CLI query batch. BigQuery Job User cho phép tạo job, Data Viewer cho phép đọc data → Khắc phục permission error ngay lập tức mà không dư thừa quyền.

  • Grant the service account BigQuery Data Editor and BigQuery Data Viewer roles.
    ❌ Sai: BigQuery Data Editor (roles/bigquery.dataEditor) cho phép chỉnh sửa/ghi dữ liệu (INSERT/UPDATE/DELETE), không cần thiết cho query read-only. Quan trọng hơn, thiếu BigQuery Job User → CLI vẫn không tạo được job, permission error vẫn xảy ra. Đây là quyền thừa và không giải quyết gốc rễ.

  • Create a view in BigQuery from the SQL query and SELECT from the view in the CLI.*
    ❌ Sai: Tạo view từ SQL query rồi SELECT * từ view qua CLI không giải quyết permission error gốc. View chỉ là lớp trừu tượng hóa query, nhưng CLI vẫn cần quyền Job User + Data Viewer trên dataset gốc để chạy job. Đây là workaround phức tạp, không hiệu quả cho batch file SQL lớn.

  • Create a new dataset in BigQuery, and copy the source table to the new dataset Query the new dataset and table from the CLI.
    ❌ Sai: Tạo dataset mới và copy table là giải pháp tốn kém (chi phí storage + copy time), không giải quyết permission trên dataset gốc. CLI vẫn cần quyền Job User trên project/dataset mới, và lỗi permission gốc không biến mất. Đây là cách tiếp cận sai lầm, không scalable cho analytics system.

🧩 Kết luận: Chọn đáp án đúng giúp hệ thống chạy mượt mà với nguyên tắc bảo mật tối ưu! Nếu cần script CLI mẫu: bq query --use_legacy_sql=false < sql_file.sql > output.txt.

Câu 66
Your application is running on Compute Engine and is showing sustained failures for a small number of requests. You have narrowed the cause down to a single
Compute Engine instance, but the instance is unresponsive to SSH.
What should you do next?
  1. A Reboot the machine.
  2. B Enable and check the serial port output.
  3. C Delete the machine and create a new one.
  4. D Take a snapshot of the disk and attach it to a new machine.
Xem giải thích

🧩 Phân tích chi tiết nội dung câu hỏi

Câu hỏi mô tả một tình huống thực tế trong Google Cloud Platform (GCP): Ứng dụng của bạn đang chạy trên Compute Engine (dịch vụ máy ảo VM của GCP) và gặp lỗi sustained failures (lỗi liên tục) chỉ với một số ít request. Bạn đã xác định nguyên nhân tập trung vào một instance Compute Engine duy nhất, nhưng instance này không phản hồi SSH (không thể kết nối qua SSH).

📌 Mục tiêu: Tìm bước hành động tiếp theo (next step) phù hợp nhất để chẩn đoán và khắc phục vấn đề mà không làm gián đoạn dữ liệu hoặc dịch vụ một cách không cần thiết. Đây là kịch bản phổ biến trong troubleshooting VM bị "treo" (hung) hoặc kernel panic, nơi SSH bị block nhưng instance vẫn có thể cung cấp thông tin debug qua các công cụ khác của GCP. Kiến thức dựa trên tài liệu GCP cập nhật đến 2026 (Compute Engine serial console vẫn là best practice cho interactive console access).

✅ Đáp án đúng và lý do lựa chọn

Đáp án đúng: Enable and check the serial port output.

🛠️ Lý do:

  • Khi instance Compute Engine không phản hồi SSH (do kernel panic, OOM killer, hoặc driver issues), serial port output (cổng nối tiếp) là công cụ chính thức và an toàn nhất của GCP để truy cập console output ngay lập tức.
  • Bạn cần enable serial port trước (qua gcloud hoặc Console), sau đó check output để xem log kernel, boot messages, hoặc lỗi thực tế (ví dụ: stack trace).
  • Đây là bước không xâm lấn (non-destructive), giúp diên đoán chính xác trước khi thực hiện hành động mạnh hơn như reboot. Theo best practices GCP 2026, serial console hỗ trợ cả interactive access (gõ lệnh trực tiếp) và output logs.

📋 Giải thích tất cả các phương án (đúng/sai)

  • ✅ Enable and check the serial port output.
    🟢 Đúng: Như giải thích trên, đây là bước đầu tiên lý tưởng để thu thập thông tin debug mà không làm mất dữ liệu hoặc downtime không cần thiết. Serial console là tính năng built-in của Compute Engine, hỗ trợ metadata serial port 1-4.

  • ❌ Reboot the machine.
    🔴 Sai: Reboot (qua gcloud compute instances reset) có thể khắc phục tạm thời nếu là soft lockup, nhưng không giúp chẩn đoán nguyên nhân gốc rễ (root cause). Nếu vấn đề là hardware/firmware, reboot sẽ lặp lại lỗi ngay lập tức, và bạn mất cơ hội xem logs từ serial port trước.

  • ❌ Delete the machine and create a new one.
    🔴 Sai: Xóa instance và tạo mới là hành động cực đoan, dẫn đến mất dữ liệu persistent disk (nếu không backup) và downtime lớn. Không phù hợp cho "next step" vì chưa debug, vi phạm nguyên tắc least privilege trong troubleshooting GCP.

  • ❌ Take a snapshot of the disk and attach it to a new machine.
    🔴 Sai: Snapshot disk và attach sang máy mới hữu ích để phục hồi dữ liệu, nhưng là bước sau khi đã chẩn đoán (post-diagnosis). Nó không giải quyết vấn đề ngay lập tức trên instance hiện tại và tốn thời gian (snapshot cần quiesce filesystem), không phải "next" action khi serial port có thể fix nhanh hơn.

📘 Tài liệu tham khảo (GCP cập nhật 2026)

Hy vọng phân tích này giúp bạn ôn thi Professional Cloud Developer hiệu quả! 🚀 Nếu cần ví dụ gcloud cụ thể, hãy hỏi thêm.

Câu 67 Chọn nhiều đáp án
You configured your Compute Engine instance group to scale automatically according to overall CPU usage. However, your application's response latency increases sharply before the cluster has finished adding up instances. You want to provide a more consistent latency experience for your end users by changing the configuration of the instance group autoscaler.
Which two configuration changes should you make? (Choose two.)
  1. A Add the label ג€AUTOSCALEג€ to the instance group template.
  2. B Decrease the cool-down period for instances added to the group.
  3. C Increase the target CPU usage for the instance group autoscaler.
  4. D Decrease the target CPU usage for the instance group autoscaler.
  5. E Remove the health-check for individual VMs in the instance group.
Xem giải thích

🧩 Phân tích nội dung câu hỏi

Câu hỏi mô tả tình huống trong Google Cloud Compute Engine: Bạn đã cấu hình managed instance group (MIG) để tự động scale dựa trên tổng CPU usage của toàn nhóm. Tuy nhiên, latency (độ trễ phản hồi) của ứng dụng tăng vọt trước khi cluster hoàn tất việc thêm instance mới. Mục tiêu là cải thiện trải nghiệm người dùng bằng cách thay đổi cấu hình autoscaler để latency ổn định hơn.
📌 Vấn đề cốt lõi: Autoscaler phản ứng chậm với tải cao → scale-up chưa kịp → latency spike. Cần scale sớm hơn và nhanh hơn.
🛠️ Đây là câu hỏi chọn 2 đáp án đúng từ 5 lựa chọn, tập trung vào config của instance group autoscaler (không phải AWS, mà là GCP Compute Engine).

✅ Đáp án đúng và lý do lựa chọn

Hai đáp án đúng là:

  • Decrease the cool-down period for instances added to the group.
  • Decrease the target CPU usage for the instance group autoscaler.

Lý do chi tiết (dựa trên tài liệu GCP mới nhất 2024-2026):
🧩 Decrease target CPU usage: Giảm ngưỡng CPU mục tiêu (ví dụ từ 80% xuống 60%) → autoscaler kích hoạt scale-up sớm hơn khi CPU chạm ngưỡng thấp, tránh latency tăng cao trước khi thêm instance. Điều này giúp cluster dự phòng tải tốt hơn.
🛠️ Decrease cool-down period: Giảm thời gian "nghỉ" (cool-down, mặc định 60s cho scale-up) sau khi thêm instance → autoscaler có thể scale tiếp nhanh hơn nếu tải vẫn cao, giảm thời gian chờ tổng thể để đạt steady-state.
📘 Nguồn: GCP Autoscaler Best Practices & Autoscaler Reference (cập nhật 2024, không thay đổi cơ bản đến 2026).

📋 Giải thích chi tiết tất cả các phương án

Dưới đây là phân tích từng lựa chọn một, giữ nguyên văn bản gốc bằng tiếng Anh. Mỗi phần giải thích vì sao đúng/sai hoàn toàn bằng tiếng Việt, với emoji nổi bật:

  • ❌ Add the label ג€AUTOSCALEג€ to the instance group template.
    Sai: Label "AUTOSCALE" (ký tự lạ có lẽ là lỗi hiển thị của "AUTOSCALE") chỉ là metadata tùy chọn, không ảnh hưởng đến logic scaling. Nó không thay đổi cool-down, target CPU hay tốc độ scale-up. Thêm label vô ích cho vấn đề latency spike. 🗑️ Không liên quan đến config autoscaler.

  • ✅ Decrease the cool-down period for instances added to the group.
    Đúng: Cool-down period (thời gian chờ sau scale action) mặc định cao → scale chậm. Giảm nó (tối thiểu 0s) cho phép autoscaler phản ứng nhanh hơn, thêm instance liên tục nếu CPU vẫn cao → giảm thời gian latency tăng vọt. Hoàn hảo cho consistent latency. ⚡

  • ❌ Increase the target CPU usage for the instance group autoscaler.
    Sai: Tăng target CPU (ví dụ từ 60% lên 80%) làm autoscaler scale-up MUỘN HÔN, chờ CPU cao hơn mới hành động → latency spike tệ hơn. Ngược hoàn toàn với nhu cầu scale sớm. 🚫

  • ✅ Decrease the target CPU usage for the instance group autoscaler.
    Đúng: Giảm target CPU → scale-up SỚM khi tải vừa tăng (dự phòng tốt hơn). Ví dụ: CPU 70% đã trigger thay vì chờ 90% → instance mới sẵn sàng nhanh, giữ latency ổn định. Lý tưởng cho ứng dụng nhạy cảm latency. 🎯

  • ❌ Remove the health-check for individual VMs in the instance group.
    Sai: Health check đảm bảo VM healthy trước khi route traffic → bắt buộc cho MIG autoscaler (self-healing). Remove nó gây traffic đến VM unhealthy, tăng latency và downtime nhiều hơn. GCP khuyến cáo luôn dùng health check. ⚠️

Tóm tắt takeaway 💡: Để chống latency spike trong autoscaling CPU-based, ưu tiên scale sớm (target thấp) + scale nhanh (cool-down ngắn). Test config qua GCP Console hoặc gcloud CLI để validate! 🚀

Câu 68
You have an application controlled by a managed instance group. When you deploy a new version of the application, costs should be minimized and the number of instances should not increase. You want to ensure that, when each new instance is created, the deployment only continues if the new instance is healthy.
What should you do?
  1. A Perform a rolling-action with maxSurge set to 1, maxUnavailable set to 0.
  2. B Perform a rolling-action with maxSurge set to 0, maxUnavailable set to 1
  3. C Perform a rolling-action with maxHealthy set to 1, maxUnhealthy set to 0.
  4. D Perform a rolling-action with maxHealthy set to 0, maxUnhealthy set to 1.
Xem giải thích

🧩 Phân tích chi tiết nội dung câu hỏi

Câu hỏi xoay quanh việc triển khai cập nhật (deployment) phiên bản mới cho ứng dụng chạy trên Managed Instance Group (MIG) trong Google Cloud Compute Engine. Các yêu cầu chính bao gồm:

  • Giảm thiểu chi phí (minimize costs): Không muốn tăng số lượng instance tạm thời.
  • Số lượng instance không tăng (number of instances should not increase): Tổng số instance phải giữ nguyên trong quá trình cập nhật.
  • Đảm bảo deployment chỉ tiếp tục nếu instance mới healthy: Mỗi khi tạo instance mới, hệ thống phải kiểm tra sức khỏe (health check) trước khi proceed sang instance tiếp theo.

Quá trình này sử dụng rolling update (cập nhật dần dần) để tránh downtime, thay thế instance cũ bằng mới một cách an toàn. MIG hỗ trợ các tham số như maxSurge (số instance mới có thể surge vượt quá kích thước nhóm) và maxUnavailable (số instance cũ có thể bị terminate tạm thời). Kiến thức dựa trên tài liệu GCP cập nhật đến 2026 (không có thay đổi lớn về rolling updates từ 2023-2026).

📘 Tài liệu tham khảo:

✅ Đáp án đúng: Perform a rolling-action with maxSurge set to 0, maxUnavailable set to 1

Lý do lựa chọn:

  • maxSurge=0: Không tạo thêm instance mới vượt quá kích thước nhóm → Tổng số instance giữ nguyên, tránh tăng chi phí (không tốn tiền cho instance thừa).
  • maxUnavailable=1: Cho phép terminate chỉ 1 instance cũ, sau đó tạo 1 instance mới thay thế. MIG sẽ kiểm tra health check của instance mới trước khi terminate instance cũ tiếp theo hoặc hoàn tất deployment → Đảm bảo "deployment chỉ tiếp tục nếu new instance healthy".
  • Kết quả: Rolling update diễn ra an toàn, chi phí thấp nhất, không downtime lớn. Đây là chiến lược fixed/replace tiêu chuẩn cho MIG.

🛠️ Giải thích tất cả các phương án

Dưới đây là phân tích từng lựa chọn một cách chi tiết. Tôi giữ nguyên văn bản gốc bằng tiếng Anh, chỉ giải thích lý do đúng/sai bằng tiếng Việt:

  • ❌ [SAI] Perform a rolling-action with maxSurge set to 1, maxUnavailable set to 0.
    Lý do sai: maxSurge=1 cho phép tạo thêm 1 instance mới trước khi terminate cũ → Tổng số instance tăng tạm thời lên 101% (tăng chi phí và vi phạm "number of instances should not increase"). maxUnavailable=0 không cho terminate instance cũ → Deployment không tiến triển đúng, chỉ surge mà không replace.

  • ✅ [ĐÚNG] Perform a rolling-action with maxSurge set to 0, maxUnavailable set to 1
    (Như giải thích ở phần đáp án đúng ở trên – phù hợp hoàn hảo với tất cả yêu cầu).

  • ❌ [SAI] Perform a rolling-action with maxHealthy set to 1, maxUnhealthy set to 0.
    Lý do sai: MIG không hỗ trợ tham số maxHealthy hoặc maxUnhealthy trong rolling-action (chỉ có maxSurge và maxUnavailable). Đây là tham số không tồn tại trong GCP MIG → Lệnh sẽ lỗi hoặc không thực thi.

  • ❌ [SAI] Perform a rolling-action with maxHealthy set to 0, maxUnhealthy set to 1.
    Lý do sai: Tương tự, maxHealthy và maxUnhealthy không phải là tham số hợp lệ cho rolling updates của MIG. Tham số này có thể nhầm lẫn với autoscaler hoặc health checks khác, nhưng không áp dụng ở đây → Không thể sử dụng, vi phạm quy tắc triển khai.

💡 Lưu ý bổ sung: Để thực hiện, dùng lệnh gcloud compute instance-groups managed rolling-action replace <GROUP_NAME> --max-surge=0 --max-unavailable=1. Kết hợp với health checks (TCP/HTTP) để đảm bảo instance mới "healthy" trước khi proceed!

Câu 69
Your application requires service accounts to be authenticated to GCP products via credentials stored on its host Compute Engine virtual machine instances. You want to distribute these credentials to the host instances as securely as possible.
What should you do?
  1. A Use HTTP signed URLs to securely provide access to the required resources.
  2. B Use the instance's service account Application Default Credentials to authenticate to the required resources.
  3. C Generate a P12 file from the GCP Console after the instance is deployed, and copy the credentials to the host instance before starting the application.
  4. D Commit the credential JSON file into your application's source repository, and have your CI/CD process package it with the software that is deployed to the instance.
Xem giải thích

🧩 Phân tích chi tiết nội dung câu hỏi

Câu hỏi này thuộc chủ đề bảo mật xác thực dịch vụ (Service Accounts) trên Google Cloud Platform (GCP), cụ thể là cách phân phối credentials an toàn nhất cho các ứng dụng chạy trên Compute Engine VM instances.

  • Bối cảnh: Ứng dụng cần sử dụng service accounts để xác thực với các sản phẩm GCP (như Cloud Storage, BigQuery, v.v.). Credentials được lưu trữ trên host VM instances.
  • Yêu cầu chính: Phân phối credentials một cách an toàn nhất có thể (securely as possible), tránh rò rỉ bí mật, giảm thiểu quản lý thủ công và tuân thủ nguyên tắc least privilege và zero-trust security.
  • Thách thức: Không nên lưu credentials tĩnh (như JSON/P12) vì dễ bị đánh cắp, mà cần cơ chế tự động, tạm thời từ metadata server của GCP.
  • Kiến thức cập nhật (đến 2026): GCP khuyến nghị sử dụng Instance Service Account kết hợp Application Default Credentials (ADC) hoặc Workload Identity Federation (từ 2021, được cải tiến liên tục). ADC tự động lấy token từ metadata server của VM mà không cần lưu file credentials. Đây là best practice theo tài liệu chính thức GCP (phiên bản mới nhất 2026 vẫn giữ nguyên).

📘 Tài liệu tham khảo:

✅ Đáp án đúng và lý do lựa chọn

Đáp án đúng: Use the instance's service account Application Default Credentials to authenticate to the required resources.

Lý do 🛠️:

  • Đây là phương pháp an toàn nhất vì không cần lưu trữ credentials tĩnh (JSON/P12) trên VM. Thay vào đó, gắn service account trực tiếp vào instance khi tạo (qua IAM hoặc gcloud), và ứng dụng sử dụng ADC (thư viện client GCP tự động lấy access token từ Metadata Server của instance).
  • Token được tự động rotate (hết hạn 1 giờ, refresh tự động), giảm rủi ro đánh cắp lâu dài.
  • Tuân thủ GCP Security Best Practices (Zero Trust), dễ scale với CI/CD, và hỗ trợ Workload Identity cho container/VM hybrid (cập nhật 2026).
  • Ưu điểm: Không manual copy, không commit repo, tích hợp native với SDK GCP (Python, Java, Node.js...).

❌ Phân tích tất cả các phương án (đúng/sai)

  • ❌ Use HTTP signed URLs to securely provide access to the required resources.
    Giải thích sai: Signed URLs chỉ dùng cho truy cập tạm thời vào Cloud Storage objects (pre-signed URL với expiration), không phải xác thực service account cho toàn bộ GCP products. Không giải quyết auth tổng quát, dễ bị lạm dụng và không scale cho app liên tục.

  • ✅ Use the instance's service account Application Default Credentials to authenticate to the required resources.
    Giải thích đúng: Như trên, đây là best practice của GCP. ADC query metadata server (http://metadata.google.internal) để lấy token mà không expose keys. Hỗ trợ tất cả GCP APIs, an toàn 100% nếu attach SA đúng quyền.

  • ❌ Generate a P12 file from the GCP Console after the instance is deployed, and copy the credentials to the host instance before starting the application.
    Giải thích sai: Tạo P12 file (certificate-based) yêu cầu quyền admin, thủ công, dễ lỗi (copy qua SSH/SCP rủi ro MITM). P12 là legacy, GCP không khuyến khích từ 2020 vì dễ leak private key, không auto-rotate, vi phạm security hygiene.

  • ❌ Commit the credential JSON file into your application's source repository, and have your CI/CD process package it with the software that is deployed to the instance.
    Giải thích sai: Cực kỳ nguy hiểm! Commit JSON key vào repo (GitHub/GitLab) expose secrets công khai nếu repo public/private leak. CI/CD (Cloud Build) sẽ propagate rủi ro. GCP cấm practice này từ 2018, khuyến nghị Secret Manager thay thế nhưng vẫn kém ADC.

🧠 Kết luận nổi bật: Luôn ưu tiên metadata-based auth (ADC/Workload Identity) để tránh "key sprawl". Nếu migrate sang GKE, dùng similar với OIDC! 🚀

Câu 70
Your application is deployed in a Google Kubernetes Engine (GKE) cluster. You want to expose this application publicly behind a Cloud Load Balancing HTTP(S) load balancer.
What should you do?
  1. A Configure a GKE Ingress resource.
  2. B Configure a GKE Service resource.
  3. C Configure a GKE Ingress resource with type: LoadBalancer.
  4. D Configure a GKE Service resource with type: LoadBalancer.
Xem giải thích

🧩 Phân tích chi tiết nội dung câu hỏi

Câu hỏi tập trung vào việc triển khai ứng dụng trên Google Kubernetes Engine (GKE) cluster và mở rộng (expose) ứng dụng ra public thông qua Cloud Load Balancing HTTP(S) load balancer của Google Cloud.

  • Bối cảnh: Ứng dụng đã được deploy trong GKE (một managed Kubernetes service). Yêu cầu là expose nó công khai (publicly), sử dụng HTTP(S) Load Balancer (là Load Balancer Layer 7, hỗ trợ routing dựa trên URL path, hostname, và các tính năng như SSL termination).
  • Mục tiêu chính: Tạo một endpoint public ổn định, scalable, với khả năng xử lý traffic HTTP/HTTPS, không phải TCP/UDP đơn giản.
  • Lưu ý kỹ thuật: Trong GKE, không expose trực tiếp qua NodePort hay ClusterIP vì chúng không public. Phải sử dụng Ingress hoặc Service với type phù hợp để tích hợp với Google Cloud Load Balancing.

📘 Tài liệu tham khảo:

✅ Đáp án đúng: Configure a GKE Ingress resource

Lý do lựa chọn:

  • Ingress resource trong GKE là cách chuẩn và được khuyến nghị để expose ứng dụng HTTP/HTTPS qua Google Cloud HTTP(S) Load Balancer (global hoặc classic).
  • Khi tạo Ingress (thường dùng Ingress controller như GKE Ingress controller dựa trên Google Cloud Load Balancing), nó sẽ tự động provision một HTTP(S) Load Balancer, assign IP public, hỗ trợ TLS, path-based routing, và tích hợp SE (Security Policy).
  • Không cần cấu hình thủ công Load Balancer; GKE Ingress xử lý toàn bộ quy trình. Đây là best practice cho production workloads đến năm 2026.
  • 🛠️ Ví dụ YAML cơ bản:
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-ingress
    spec:
      rules:
      - host: example.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 80
    

📋 Giải thích tất cả các phương án (đúng/sai)

  • ✅ Configure a GKE Ingress resource
    Đúng 🥇: Như giải thích trên, đây là phương án chính xác. Ingress controller trong GKE (dùng annotation kubernetes.io/ingress.class: "gce") sẽ tạo HTTP(S) Load Balancer public ngay lập tức, expose service backend một cách thông minh với L7 features. Hoạt động ổn định từ Kubernetes 1.19+ đến phiên bản GKE 2026.

  • ❌ Configure a GKE Service resource
    Sai 🚫: Service resource mặc định (type: ClusterIP) chỉ expose nội bộ cluster, không tạo Load Balancer public và không hỗ trợ HTTP(S) routing. Không đáp ứng yêu cầu "behind a Cloud Load Balancing HTTP(S) load balancer".

  • ❌ Configure a GKE Ingress resource with type: LoadBalancer
    Sai ❌: Ingress không có field type: LoadBalancer (đây là thuộc tính của Service, không phải Ingress). Nếu thêm, Kubernetes sẽ báo lỗi validation. Ingress luôn dùng controller để tạo HTTP(S) LB, không cần/mở type này.

  • ❌ Configure a GKE Service resource with type: LoadBalancer
    Sai ⚠️: Service type: LoadBalancer tạo TCP/UDP Load Balancer (Network Load Balancer - regional/global), không phải HTTP(S) Load Balancer. Nó expose port trực tiếp (L4), thiếu routing HTTP, SSL offload, và không "behind HTTP(S) LB" như yêu cầu. Chỉ phù hợp cho non-HTTP traffic.

Kết luận 💡: Chọn Ingress để tận dụng đầy đủ sức mạnh Google Cloud Load Balancing cho web apps. Nếu cần multi-cluster, dùng Gateway API (newer, nhưng Ingress vẫn standard đến 2026)!