Ngân hàng đề — Google Cloud Professional Cloud Developer
Tìm thấy 358 câu.
- A Store the carts in a separate Memorystore for Redis instance, and configure each user's IP address as the key.
- B Store the carts in a separate Firestore document, and configure each user ID as the document's key.
- C Insert the carts in a separate Spanner table, and configure each user's encrypted password as the primary key.
- D Create and store the carts in the shopping-cart HTTP cookie.
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ủ đề thiết kế dịch vụ giỏ hàng (shopping cart) nhất quán toàn cầu trên Google Cloud Platform (GCP), dành cho một công ty thương mại điện tử. Bạn là lập trình viên cần phát triển giỏ hàng nhất quán toàn cầu (globally consistent) cho người dùng đã đăng nhập (logged-in users), hoạt động đồng bộ trên cả client di động (mobile) và desktop.
🛠️ Yêu cầu chính: Cấu hình cách lưu trữ các mặt hàng được thêm vào giỏ hàng của người dùng. Các tiêu chí quan trọng bao gồm:
- Nhất quán toàn cầu: Dữ liệu phải đồng bộ ngay lập tức trên mọi vùng (regions) để tránh tình trạng giỏ hàng khác nhau giữa các thiết bị/client.
- Dựa trên người dùng đăng nhập: Sử dụng định danh người dùng đáng tin cậy (như user ID).
- Hiệu suất cao: Phù hợp với quy mô lớn, đọc/ghi nhanh, và khả năng scale tự động.
- Bảo mật và bền vững: Không phụ thuộc vào IP tạm thời hoặc cookie dễ mất.
Câu hỏi tập trung vào việc chọn dịch vụ lưu trữ phù hợp từ GCP, đảm bảo tính strong consistency và global replication (theo tài liệu GCP cập nhật đến 2024-2026, Firestore hỗ trợ multi-region với strong consistency cho documents).
📘 Tài liệu tham khảo:
- Firestore Documentation: Global Distribution
- Cloud Spanner: Global Consistency
- Memorystore for Redis: Use Cases
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Store the carts in a separate Firestore document, and configure each user ID as the document's key.
Lý do 🏆:
- Firestore là NoSQL document database với strong consistency (đọc/ghi atomic), hỗ trợ multi-region replication tự động, đảm bảo giỏ hàng nhất quán toàn cầu ngay lập tức trên mobile/desktop.
- Sử dụng user ID làm document key là lý tưởng vì nó unique, bền vững cho người dùng đăng nhập, dễ truy vấn và scale (Firestore tự động shards theo key).
- Phù hợp quy mô ecommerce: Hàng triệu users, low-latency reads/writes, và tích hợp dễ với client SDK (iOS/Android/Web).
🔍 Giải thích tất cả các phương án (đúng/sai)
-
❌ Phương án SAI: Store the carts in a separate Memorystore for Redis instance, and configure each user's IP address as the key.
Lý do sai 🚫: Memorystore for Redis là in-memory cache nhanh nhưng không đảm bảo global consistency (single-region hoặc multi-zone, không strong consistency toàn cầu như Firestore). Sử dụng IP address làm key là sai lầm lớn vì IP thay đổi thường xuyên (mobile network, VPN), không liên kết đúng với user đăng nhập, dẫn đến mất dữ liệu hoặc conflict giữa clients. -
✅ Phương án ĐÚNG: Store the carts in a separate Firestore document, and configure each user ID as the document's key.
Lý do đúng 🎯: Như đã giải thích ở trên, Firestore cung cấp document-level strong consistency và global distribution (multi-region mode), lý tưởng cho user-specific data như giỏ hàng. User ID làm key đảm bảo idempotent writes và dễ query (ví dụ:db.collection('carts').doc(userId)). Hỗ trợ real-time sync qua listeners, hoàn hảo cho ecommerce cross-device. -
❌ Phương án SAI: Insert the carts in a separate Spanner table, and configure each user's encrypted password as the primary key.
Lý do sai 🚫: Cloud Spanner là relational DB với strong global consistency (true-time), nhưng encrypted password làm primary key là không an toàn và không phù hợp – password không phải unique identifier (có thể trùng hash), vi phạm best practices bảo mật (không dùng credential làm key), và phức tạp hóa schema. Spanner overkill cho simple cart data (quá đắt, schema rigid). -
❌ Phương án SAI: Create and store the carts in the shopping-cart HTTP cookie.
Lý do sai 🚫: HTTP cookie chỉ lưu client-side, không persistent (mất khi clear browser, hết hạn, hoặc chuyển device), không globally consistent (khác nhau giữa mobile/desktop), giới hạn kích thước (~4KB), và dễ bị tamper/manipulate. Không phù hợp cho logged-in users cần server-side storage bền vững.
🧠 Kết luận: Lựa chọn Firestore là optimal theo best practices GCP cho user-centric, real-time data (Certification Guide for Professional Cloud Developer, cập nhật 2024). Nếu triển khai, dùng Firestore Security Rules để bảo vệ theo user ID!
You notice that the Cloud Build pipeline runs are taking longer than expected to complete. How should you optimize the Docker image build process?
- A Add the --squash parameter to the Docker build steps to combine newly built layers into a single layer.
- B Configure Cloud Build to use a private pool in your VPC for pipeline executions.
- C Specify the cached image by adding the --cache-from argument in your build config file with the image as a cache source.
- D Store container artifacts on Cloud Storage. Configure Cloud CDN on the Cloud Storage bucket to enable caching on edge locations.
Xem giải thích
🧩 Phân tích chi tiết câu hỏi trắc nghiệm
✅ Nội dung câu hỏi được giải thích rõ ràng:
Câu hỏi mô tả tình huống bạn đang triển khai một ứng dụng container hóa lên GKE (Google Kubernetes Engine). Quy trình build pipeline được thiết lập bằng Cloud Build, bao gồm việc build ứng dụng Java và push image container lên Artifact Registry. Pipeline này chạy nhiều bước tuần tự (sequential steps), và các bước này tham chiếu đến các Docker container images có cùng các layers (lớp).
Vấn đề: Pipeline Cloud Build chạy lâu hơn mong đợi (taking longer than expected).
Mục tiêu: Tối ưu hóa quá trình build Docker image để giảm thời gian thực thi.
🛠️ Nguyên nhân gốc rễ: Các bước build lặp lại việc tải và xây dựng lại các layers giống nhau (shared layers), dẫn đến lãng phí thời gian vì Docker không tự động cache hiệu quả giữa các steps hoặc images khác nhau. Giải pháp cần tập trung vào cơ chế caching layers để tái sử dụng layers đã build trước đó.
🟢 Đáp án đúng:
Specify the cached image by adding the --cache-from argument in your build config file with the image as a cache source.
Lý do lựa chọn (chi tiết):
🚀 Phương án này trực tiếp giải quyết vấn đề bằng cách sử dụng flag --cache-from trong lệnh docker build (hoặc docker push trong Cloud Build config YAML). Flag này chỉ định một image nguồn làm cache, cho phép Docker tái sử dụng layers giống nhau từ image đó thay vì build lại từ đầu. Điều này đặc biệt hiệu quả với các steps sequential có shared layers, giảm đáng kể thời gian build (có thể lên đến 50-80% tùy quy mô).
Theo tài liệu Cloud Build mới nhất (2024-2026), đây là best practice cho multi-stage builds hoặc pipelines với layers trùng lặp. Ví dụ config:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'image', '--cache-from', 'gcr.io/project/cache-image', '.']
📋 Giải thích tất cả các phương án (đúng/sai)
-
❌ [SAI] Add the --squash parameter to the Docker build steps to combine newly built layers into a single layer.
🧨 Lý do sai: Flag--squashkhông phải là tính năng chuẩn của Docker build (chỉ là experimental trong Docker 1.13 và đã bị loại bỏ từ lâu). Nó không tồn tại trong Cloud Build hoặc Docker hiện đại (2024+). Thêm nữa, squash chỉ hợp nhất layers mới build thành một layer, không giải quyết vấn đề cache shared layers giữa các steps/images khác nhau, nên không tối ưu thời gian pipeline. -
❌ [SAI] Configure Cloud Build to use a private pool in your VPC for pipeline executions.
🔒 Lý do sai: Private pool (Worker Pools) giúp tăng bảo mật và kiểm soát mạng (chạy build trong VPC của bạn), nhưng không ảnh hưởng đến tốc độ build image. Thời gian chậm do cache layers, không phải do public pool. Private pool có thể còn chậm hơn nếu network latency cao, và đây không phải cách optimize Docker build process. -
✅ [ĐÚNG] Specify the cached image by adding the --cache-from argument in your build config file with the image as a cache source.
(Đã giải thích chi tiết ở phần đáp án đúng ở trên – đây là giải pháp chính xác và hiệu quả nhất! 🎯) -
❌ [SAI] Store container artifacts on Cloud Storage. Configure Cloud CDN on the Cloud Storage bucket to enable caching on edge locations.
🌐 Lý do sai: Cloud Storage + CDN tối ưu phân phối và cache artifacts sau khi build (pull image nhanh hơn lúc deploy), nhưng không ảnh hưởng đến thời gian build pipeline. Vấn đề là build chậm do layers trùng lặp trong quá trình build, không phải storage/pull sau build. Artifact Registry đã là optimal cho push/pull images, không cần chuyển sang GS + CDN.
📘 Tài liệu tham khảo (cập nhật mới nhất đến 2026)
- Cloud Build Docker caching: Optimize container image builds (Google Cloud Docs, 2025).
- Docker Build Cache: Advanced Docker Build Features (Docker Docs, v27+, 2026).
- Best Practices GKE/Cloud Build: Container-Optimized Builds (Google Cloud Blog, 2024).
- Artifact Registry Caching: Không liên quan trực tiếp, nhưng xem Artifact Registry Docs.
Hy vọng phân tích này giúp bạn nắm vững! Nếu cần ví dụ config YAML cụ thể, hãy hỏi thêm nhé! 🚀
- A Update Memorystore for Redis to the latest version.
- B Configure Memorystore to use read replicas.
- C Use Private Service Access to enable low-latency network throughput.
- D Set up Serverless VPC Access to avoid receiving traffic over the internet.
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ả tình huống phát triển một bảng điều khiển (dashboard) tổng hợp dữ liệu nhiệt độ từ hàng nghìn thiết bị IoT theo dõi nhiệt độ môi trường của thành phố. Dự kiến có lưu lượng xem lớn dẫn đến lượng dữ liệu egress (dữ liệu đi ra) cao khi dashboard hoạt động. Dữ liệu hiển thị nhiệt độ không cần real-time, chấp nhận độ trễ vài giây. Bạn chọn Memorystore for Redis (dịch vụ Redis quản lý của Google Cloud) làm backend lưu trữ. Mục tiêu chính là đảm bảo dashboard có tính sẵn sàng cao (highly available). Câu hỏi yêu cầu cách cấu hình dịch vụ Memorystore for Redis để đạt được điều này.
🛠️ Bối cảnh kỹ thuật cập nhật đến 2026: Memorystore for Redis (phiên bản mới nhất hỗ trợ Redis 7.x) có hai tier chính: Basic (single-zone, không HA) và Standard (regional HA với primary + read replicas). Với lưu lượng đọc cao từ dashboard và nhu cầu HA, cần cấu hình để hỗ trợ failover tự động và scale reads, giảm tải primary instance. (Nguồn: 📘 Google Cloud Memorystore Redis HA docs và Redis configurations, cập nhật 2025-2026).
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Configure Memorystore to use read replicas.
Lý do:
- Memorystore Standard tier với read replicas (lên đến 5 replicas) cung cấp high availability (HA) thực sự bằng cách phân tán dữ liệu qua nhiều zones trong region, hỗ trợ failover tự động nếu primary instance lỗi (RPO < 60s, RTO vài phút).
- Phù hợp với dashboard có lưu lượng đọc cao (viewing traffic), read replicas offload reads từ primary, giảm độ trễ và tăng throughput. Dữ liệu IoT có thể cache với TTL để chấp nhận lag vài giây.
- Không dùng Basic tier vì chỉ single instance, không HA. Đây là cách cấu hình chuẩn cho HA theo best practices GCP mới nhất (2026). (Nguồn: 📘 Memorystore Redis read replicas).
❌ Phân tích tất cả các phương án
Dưới đây là giải thích từng phương án một cách chi tiết, giữ nguyên văn bản gốc bằng tiếng Anh. Tôi đánh dấu ✅ (đúng) hoặc ❌ (sai) kèm lý do cụ thể dựa trên kiến thức GCP Memorystore Redis cập nhật 2026.
-
Update Memorystore for Redis to the latest version.
❌ Sai: Việc cập nhật phiên bản Redis (ví dụ từ 6.x lên 7.x) chỉ cải thiện hiệu suất, bảo mật và tính năng mới (như RedisJSON, ACL), không trực tiếp đảm bảo HA. HA phụ thuộc vào tier (Standard) và replicas, không phải version. Cập nhật có thể gián đoạn service nếu không maintenance window đúng. -
Configure Memorystore to use read replicas.
✅ Đúng: Như giải thích trên, đây là cấu hình cốt lõi cho regional HA với replication async, failover tự động và scale reads. Hoàn hảo cho workload đọc cao từ dashboard, tránh single point of failure. GCP khuyến nghị cho production HA. -
Use Private Service Access to enable low-latency network throughput.
❌ Sai: Private Service Access (PSC) cho phép kết nối private từ VPC đến Memorystore qua allocated IP range, giảm latency và bảo mật. Tuy nhiên, nó chỉ về networking, không ảnh hưởng đến HA của Redis instance (vẫn cần Standard tier + replicas). Không giải quyết egress cao hoặc availability. -
Set up Serverless VPC Access to avoid receiving traffic over the internet.
❌ Sai: Serverless VPC Access (nay gọi Private Service Connect cho serverless) giúp connector private từ serverless services (như Cloud Run) đến VPC/Memorystore, tránh public internet. Nó tập trung vào connectivity an toàn, không cấu hình HA cho Redis (không tạo replicas hay failover). Phù hợp egress cao nhưng không phải giải pháp cho "highly available".
🧩 Kết luận: Chọn read replicas là optimal cho HA + scale reads, phù hợp workload IoT dashboard. Nếu deploy, dùng Terraform/Console chọn Standard tier với replicas ≥1. (Nguồn bổ sung: 📘 GCP Best Practices Redis HA 2026).
- A Create a Private Service Connect endpoint on your network. Create a Serverless VPC Access connector on your project. Use Cloud SQL Language Connectors to create an internal connection.
- B Configure VPC Network Peering between both networks. In Cloud Run, create a Cloud SQL connection that uses the internal IP. Use Cloud SQL Language Connectors to interact with the database.
- C Configure private services access on your project. In Cloud Run, create a Cloud SQL connection. Use Cloud SQL Language Connectors to interact with the database.
- D Create a subnet on your VPC. Create a Serverless VPC Access connector on your project using the new subnet. In Cloud Run, create a Cloud SQL connection. Use Cloud SQL Language Connectors to interact with the database.
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 phát triển ứng dụng ecommerce chạy trên Cloud Run (một dịch vụ serverless của Google Cloud). Ứng dụng cần kết nối đến cơ sở dữ liệu Cloud SQL nằm ở project khác, thuộc mạng VPC riêng biệt (isolated network) dành cho nhiều database, và không có public IP.
📌 Thách thức chính:
- Cloud Run là serverless, không thể kết nối trực tiếp đến mạng nội bộ (private IP).
- Database ở project riêng, mạng isolated → cần cơ chế kết nối private cross-project mà không dùng public IP.
- Giải pháp phải đảm bảo an toàn, sử dụng các tính năng như Serverless VPC Access (để Cloud Run attach vào VPC), Cloud SQL connection (kết nối được quản lý qua instance connection name), và Cloud SQL Language Connectors (thư viện kết nối ngôn ngữ như Python, Java, Go... sử dụng proxy tự động).
Mục tiêu: Chọn bước thực hiện đúng để ứng dụng trên Cloud Run truy cập được database private cross-project. (Dựa trên docs Google Cloud cập nhật 2024-2026, hỗ trợ PSC, Serverless VPC Access v2, và Language Connectors đầy đủ).
✅ Đáp án đúng
Đáp án đúng là phương án cuối cùng:
"Create a subnet on your VPC. Create a Serverless VPC Access connector on your project using the new subnet. In Cloud Run, create a Cloud SQL connection. Use Cloud SQL Language Connectors to interact with the database."
🛠️ Lý do chọn đáp án này:
- Tạo subnet mới trên VPC của project Cloud Run: Serverless VPC Access yêu cầu subnet riêng (/28) để connector hoạt động.
- Tạo Serverless VPC Access connector sử dụng subnet đó: Cho phép Cloud Run "attach" vào VPC nội bộ, truy cập private IP của Cloud SQL (cross-project qua private services access/peering đã thiết lập).
- Tạo Cloud SQL connection trong Cloud Run: Sử dụng instance connection name (dạng project:region:instance), tự động quản lý proxy qua connector.
- Sử dụng Cloud SQL Language Connectors: Thư viện client-side (hỗ trợ nhiều ngôn ngữ) kết nối an toàn qua connection name, không cần proxy thủ công.
Đây là quy trình chuẩn cho serverless → private Cloud SQL cross-project (giả định mạng đã có private services access/peering). Không cần public IP, an toàn cao.
📘 Tài liệu tham khảo:
- Cloud Run connect to VPC (Serverless VPC Access v2, cập nhật 2025).
- Cloud SQL connect from Cloud Run (cross-project private IP).
- Cloud SQL Language Connectors (ra mắt 2023, cập nhật 2026 hỗ trợ tất cả ngôn ngữ chính).
📋 Phân tí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. Tôi giữ nguyên văn bản gốc tiếng Anh, đánh dấu ✅/❌, và giải thích bằng tiếng Việt:
-
❌ [SAI] Create a Private Service Connect endpoint on your network. Create a Serverless VPC Access connector on your project. Use Cloud SQL Language Connectors to create an internal connection.
🧩 Lý do sai: Private Service Connect (PSC) endpoint phù hợp cho load balancer hoặc published services, không hỗ trợ trực tiếp cho Cloud SQL database connection (chưa available cho client-to-DB đến 2026). Tạo PSC endpoint trên network của project Cloud Run không giải quyết private IP cross-project. Phần "create an internal connection" với Language Connectors là sai cú pháp – connectors dùng connection name, không tạo internal connection thủ công. Connector thừa nhưng PSC sai mục đích → không kết nối được. -
❌ [SAI] Configure VPC Network Peering between both networks. In Cloud Run, create a Cloud SQL connection that uses the internal IP. Use Cloud SQL Language Connectors to interact with the database.
🧩 Lý do sai: VPC Network Peering (hoặc private services access peering) đúng để kết nối hai mạng cross-project, cho phép reach private IP. Tuy nhiên, thiếu Serverless VPC Access connector → Cloud Run serverless không thể attach vào VPC đã peer, không truy cập internal IP được. "Uses the internal IP" trực tiếp không khả thi mà không có connector. -
❌ [SAI] Configure private services access on your project. In Cloud Run, create a Cloud SQL connection. Use Cloud SQL Language Connectors to interact with the database.
🧩 Lý do sai: Private services access (authorized networks cho services range) thường cấu hình ở project producer (DB project), không phải "your project" (Cloud Run project). Thiếu subnet + Serverless VPC Access connector → Cloud Run không vào được VPC để dùng private IP. Chỉ tạo Cloud SQL connection không đủ cho serverless cross-project isolated network. -
✅ [ĐÚNG] Create a subnet on your VPC. Create a Serverless VPC Access connector on your project using the new subnet. In Cloud Run, create a Cloud SQL connection. Use Cloud SQL Language Connectors to interact with the database.
(Giải thích chi tiết như phần ✅ ở trên – hoàn hảo cho kịch bản serverless private cross-project).
🔍 Lưu ý chung: Để cross-project hoàn chỉnh, DB project cần authorize service project qua private services access (không bắt buộc đề cập ở đây vì câu hỏi tập trung vào phía Cloud Run). Quy trình này scale tốt, chi phí thấp với Serverless VPC Access v2 (2025+).
- A Apply Pod tolerations to request GKE to avoid scheduling Pods on nodes that do not have Arm-based CPUs.
- B Apply node taints on node pools to tell GKE to only schedule your workloads on Arm-based CPU nodes.
- C Deploy a new cluster in GKE Standard mode, and set up a node pool with Arm-based CPU nodes. Use nodeSelector in your manifest to ensure that Pods are scheduled in this node pool.
- D Request the Scale-out compute class and the arm64 architecture in your manifest.
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 các workload mới (Pods) trên GKE Autopilot mode cluster (Google Kubernetes Engine ở chế độ Autopilot). Mục tiêu là đảm bảo Pods chỉ được lên lịch (scheduled) trên các node sử dụng CPU kiến trúc Arm (Arm-based CPUs). Hiện tại, cluster không có node Arm nào. Yêu cầu quan trọng là tối thiểu hóa các hoạt động quản lý cluster (minimize cluster operations), nghĩa là tránh các thay đổi thủ công lớn như thêm node pool mới hoặc tạo cluster khác.
🔍 Bối cảnh kỹ thuật (dựa trên phiên bản GKE mới nhất đến 2026):
- GKE Autopilot là chế độ "hands-off" nơi Google quản lý toàn bộ lifecycle của nodes (tự động scale, provision). Người dùng không thể trực tiếp quản lý node pools như ở Standard mode.
- Để chỉ định kiến trúc CPU (như arm64), Autopilot hỗ trợ Compute Classes (từ năm 2023, cập nhật đến 2026 với Scale-out compute class hỗ trợ Arm64 tối ưu). Bạn declare requirements trực tiếp trong Pod manifest (YAML), GKE sẽ tự động provision nodes phù hợp mà không cần can thiệp thủ công.
- Điều này giúp tối ưu chi phí và operations, vì cluster tự scale nodes Arm khi cần.
📘 Tài liệu tham khảo:
- GKE Autopilot Compute Classes (Google Cloud Docs, cập nhật 2026).
- Node Auto-Provisioning in Autopilot.
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Request the Scale-out compute class and the arm64 architecture in your manifest.
Lý do:
🛠️ Trong GKE Autopilot, cách tối ưu và ít operations nhất là khai báo Scale-out compute class (hỗ trợ workloads ngắn hạn, scale nhanh) kết hợp arm64 architecture trực tiếp trong Pod spec (resources.limits hoặc requests). Ví dụ YAML:
resources:
limits:
cloud.google.com/compute-class: SCALE_OUT
kubernetes.io/arch: arm64
GKE sẽ tự động provision node pool Arm64 mà không cần tạo cluster mới hay chỉnh sửa node thủ công. Điều này phù hợp hoàn hảo với yêu cầu "minimize cluster operations" vì Autopilot xử lý hết! ✅
📋 Giải thích tất cả các phương án (đúng/sai)
-
❌ [SAI] Apply Pod tolerations to request GKE to avoid scheduling Pods on nodes that do not have Arm-based CPUs.
Phân tích: Pod tolerations dùng để cho phép Pods chấp nhận taints trên nodes (ví dụ: tránh nodes "không mong muốn"). Nhưng tolerations không request hoặc force GKE tạo nodes Arm mới – nó chỉ "tránh" nodes hiện có (nhưng cluster chưa có Arm). Kết quả: Pods có thể pending mãi vì không node phù hợp, không giải quyết vấn đề gốc. Không minimize operations vì vẫn cần taints riêng (không khả thi trực tiếp ở Autopilot). -
❌ [SAI] Apply node taints on node pools to tell GKE to only schedule your workloads on Arm-based CPU nodes.
Phân tích: Node taints dùng để repel Pods khỏi nodes không mong muốn, nhưng ở Autopilot, người dùng không thể apply taints trực tiếp (GKE quản lý nodes). Cluster hiện không có node Arm, nên taints vô nghĩa và không trigger tạo nodes mới. Cách này yêu cầu operations thủ công cao, vi phạm yêu cầu minimize. -
❌ [SAI] Deploy a new cluster in GKE Standard mode, and set up a node pool with Arm-based CPU nodes. Use nodeSelector in your manifest to ensure that Pods are scheduled in this node pool.
Phân tích: Cách này hoàn toàn không minimize operations – phải tạo cluster mới (Standard mode), setup node pool Arm thủ công (chọn machine type như Tau T2A), rồi dùng nodeSelector (nodeSelector: kubernetes.io/arch: arm64). Rất tốn kém thời gian, chi phí, và migrate workload. Autopilot đã hỗ trợ Arm mà không cần switch mode! -
✅ [ĐÚNG] Request the Scale-out compute class and the arm64 architecture in your manifest.
(Giải thích chi tiết như phần đáp án đúng ở trên – cách duy nhất tự động, hiệu quả ở Autopilot).
🏆 Kết luận: Phương án đúng tận dụng tính năng native của GKE Autopilot để tự động scale, giúp deploy nhanh chóng mà không đụng tay vào infra! 🚀
- A Store the service code as a zip file in a Cloud Storage bucket. Deploy your application by using the gcloud run deploy --source command, and test the integration by pointing Apigee to Cloud Run.
- B Use the Cloud Run emulator to test your application locally. Test the integration by pointing Apigee to your local Cloud Run emulator.
- C Build a container image locally, and push the image to Artifact Registry. Deploy the Image to Cloud Run, and test the integration by pointing Apigee to Cloud Run.
- D Deploy your application directly from the current directory by using the gcloud run deploy --source command, and test the integration by pointing Apigee to Cloud Run.
Xem giải thích
🧩 Phân tích câu hỏi trắc nghiệm
📖 Giải thích nội dung câu hỏi:
Câu hỏi mô tả tình huống bạn đang phát triển một API bằng Python 3 cần triển khai lên Cloud Run (dịch vụ serverless container trên Google Cloud). Dịch vụ Cloud Run này nằm sau một Apigee proxy đã được triển khai sẵn. Mục tiêu là đảm bảo Cloud Run hoạt động tích hợp tốt với Apigee proxy hiện tại, và bạn muốn thực hiện kiểm tra (testing) nhanh nhất có thể.
🛠️ Yếu tố chính cần chú ý:
- Tập trung vào tốc độ: Tránh các bước phức tạp như build thủ công, upload file, hoặc sử dụng emulator.
- Cloud Run hỗ trợ deploy trực tiếp từ source code qua
gcloudCLI, sử dụng Cloud Build để tự động build container image mà không cần can thiệp thủ công. - Sau deploy, chỉ cần cấu hình Apigee proxy trỏ đến URL của Cloud Run để test integration.
(Kiến thức cập nhật đến 2026: Cloud Run hỗ trợ deploy source code trực tiếp từ thư mục hiện tại quagcloud run deploy --source ., tích hợp Cloud Build v2 cho build nhanh hơn - theo docs GCP mới nhất).
✅ Đáp án đúng:
Deploy your application directly from the current directory by using the gcloud run deploy --source command, and test the integration by pointing Apigee to Cloud Run.
🧩 Lý do chọn đáp án này (chi tiết):
- Đây là cách nhanh nhất để deploy và test: Từ thư mục hiện tại (current directory), lệnh
gcloud run deploy --source .sẽ tự động build Dockerfile/source code bằng Cloud Build (không cần build local), push image lên Artifact Registry, và deploy lên Cloud Run chỉ trong vài phút. - Sau deploy, lấy URL Cloud Run và cấu hình Apigee proxy target để test ngay lập tức.
- Tiết kiệm thời gian so với các bước trung gian như zip/upload hoặc build thủ công.
- Phù hợp với best practice của Google Cloud cho developer workflow nhanh (source-based deployment).
🔍 Giải thích chi tiết tất cả các phương án
-
Store the service code as a zip file in a Cloud Storage bucket. Deploy your application by using the gcloud run deploy --source command, and test the integration by pointing Apigee to Cloud Run.
❌ Sai vì: Phương án này thêm bước upload zip file lên Cloud Storage bucket trước khi deploy, làm chậm quy trình (phải zip code, upload, rồi mới dùng--source gs://bucket/path.zip). Không cần thiết và mất thời gian hơn deploy trực tiếp từ current directory. Cloud Run hỗ trợ source từ local dir nhanh hơn zip từ GCS. -
Use the Cloud Run emulator to test your application locally. Test the integration by pointing Apigee to your local Cloud Run emulator.
❌ Sai vì: Cloud Run không có emulator chính thức (khác với Cloud Functions hoặc LocalStack cho AWS). Không thể dễ dàng point Apigee (cloud-based proxy) đến local emulator (nhưcloud-run-emulatorkhông tồn tại ổn định hoặc hỗ trợ full). Cách này không thực tế, không nhanh, và không đảm bảo integration giống production. -
Build a container image locally, and push the image to Artifact Registry. Deploy the Image to Cloud Run, and test the integration by pointing Apigee to Cloud Run.
❌ Sai vì: Yêu cầu build image local (docker build), push thủ công lên Artifact Registry, rồi deploy - tổng cộng 3-4 bước, tốn thời gian (đặc biệt nếu máy local yếu hoặc network chậm). Không phải cách "nhanh nhất"; Cloud Build xử lý build tốt hơn và nhanh hơn cho source code.
📘 Tài liệu tham khảo (cập nhật mới nhất 2026):
- Cloud Run: Deploying from source code ✅ (Chính thức khuyến nghị
--source .cho tốc độ cao). - gcloud run deploy reference 🛠️ (Hỗ trợ
--sourcetừ local/zip/GCS). - Apigee integration with Cloud Run (Cấu hình target nhanh sau deploy).
(Nguồn: Google Cloud Documentation, phiên bản latest tại thời điểm 2026).
- A Configure Cloud Armor to block traffic on the Cloud Run service URL and allow reroutes from only the custom domain URL pattern.
- B Set up an HAProxy on Compute Engine, and add routing rules for a custom domain to the Cloud Run service URL.
- C Add a global external Application Load Balancer in front of the service, and configure a DNS record that points to the load balancer’s IP address.
- D Create a CNAME record that points to the Cloud Run service URL.
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Câu hỏi xoay quanh việc cấu hình truy cập cho dịch vụ Cloud Run trên Google Cloud Platform (GCP) một cách chuyên nghiệp, theo best practices được Google khuyến nghị.
- Bối cảnh: Công ty tổ chức sự kiện toàn cầu, triển khai portal đăng ký sự kiện bằng Cloud Run (dịch vụ serverless chạy container). URL mặc định của Cloud Run (ví dụ:
https://service-xxx.a.run.app) không được marketing team muốn quảng bá. - Yêu cầu: Muốn truy cập qua custom domain cá nhân hóa, như
<service>.example.com(subdomain hoặc path trong domain tùy chỉnh). - Mục tiêu: Đảm bảo global accessibility (phủ sóng toàn cầu), bảo mật cao, và tuân thủ Google-recommended practices (cập nhật đến 2026: sử dụng Load Balancing cho custom domains trên Cloud Run).
- Thách thức chính: Cloud Run không hỗ trợ CNAME trực tiếp hoặc mapping domain đơn giản do yêu cầu ownership verification và SSL management. Cần giải pháp scalable, managed, hỗ trợ multi-region và traffic management.
📘 Tài liệu tham khảo chính:
- Cloud Run: Mapping custom domains (cập nhật 2024-2026: Khuyến nghị dùng External Application Load Balancer với Serverless NEG).
- Load Balancing for Cloud Run.
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Add a global external Application Load Balancer in front of the service, and configure a DNS record that points to the load balancer’s IP address.
Lý do 🛠️:
- Đây là phương pháp chính thức được Google khuyến nghị cho custom domains trên Cloud Run (từ 2021 và vẫn áp dụng đến 2026).
- Global External Application Load Balancer (HTTP(S) Load Balancer) hỗ trợ Serverless Network Endpoint Group (NEG) để proxy traffic đến Cloud Run một cách serverless, auto-scaling.
- Cấu hình: Tạo NEG chỉ đến Cloud Run service → Attach vào backend service → Frontend với static IP → Map DNS (A record cho apex domain hoặc CNAME cho subdomain) trỏ đến IP của LB.
- Lợi ích: Toàn cầu (Anycast IP), tích hợp Cloud Armor (WAF), SSL managed, path-based routing, và zero-downtime deployment. Phù hợp sự kiện lớn cần high availability (HA).
📋 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, đánh dấu ✅/❌, và giải thích hoàn toàn bằng tiếng Việt dựa trên docs GCP mới nhất (2026).
-
Configure Cloud Armor to block traffic on the Cloud Run service URL and allow reroutes from only the custom domain URL pattern.
❌ Sai vì: Cloud Armor là WAF (Web Application Firewall) để bảo vệ chống DDoS/attack, không phải công cụ routing hay domain mapping. Nó chỉ filter traffic sau khi đã đến Load Balancer, không block/reroute URL gốc của Cloud Run. Sử dụng cách này vi phạm best practices, không scalable, và không giải quyết custom domain (thiếu verification/SSL). -
Set up an HAProxy on Compute Engine, and add routing rules for a custom domain to the Cloud Run service URL.
❌ Sai vì: HAProxy trên VM Compute Engine là giải pháp self-managed, không serverless, tốn chi phí vận hành (patching, scaling, HA setup). Google không khuyến nghị vì Cloud Run đã serverless – dùng VM làm proxy là overkill, kém hiệu quả so với managed Load Balancer. Không hỗ trợ global traffic tốt, dễ single point of failure. -
Add a global external Application Load Balancer in front of the service, and configure a DNS record that points to the load balancer’s IP address.
✅ Đúng (như đã giải thích ở trên). Đây là standard pattern cho production workloads trên Cloud Run, hỗ trợ custom domains/subpaths, multi-region, và tích hợp đầy đủ GCP services. -
Create a CNAME record that points to the Cloud Run service URL.
❌ Sai vì: Cloud Run không hỗ trợ CNAME trực tiếp cho custom domains (do yêu cầu domain ownership verification qua TXT record và managed SSL). CNAME chỉ work cho subdomain nhưng thất bại với apex domains (naked domain) và không bypass được URL gốc. Google docs rõ ràng không recommend, dễ gây lỗi 404/SSL mismatch.
🏆 Kết luận & Best Practices bổ sung
✅ Tóm tắt: Sử dụng Global External App LB + Serverless NEG + DNS A/CNAME là cách optimal, secure, scalable cho custom domain trên Cloud Run.
🛠️ Tips triển khai nhanh:
- Sử dụng Terraform/Console để setup LB.
- Kích hoạt Cloud CDN cho cache global event traffic.
- Test với VPC Flow Logs để monitor.
Nếu cần code sample hoặc diagram, hãy cho tôi biết! 🚀
- A Create a Pub/Sub topic, and subscribe the Cloud Run job to the topic.
- B Configure an Eventarc trigger to invoke the Cloud Run job, and include the trigger in a step of the Workflow.
- C Use the Cloud Run Admin API connector to execute the Cloud Run job within the Workflow.
- D Determine the entry point of the Cloud Run job, and send an HTTP request from the Workflow.
Xem giải thích
🧩 Giải thích nội dung câu hỏi
Câu hỏi yêu cầu xây dựng một Workflow (nay là Cloud Workflows) để xử lý phân tích dữ liệu phức tạp cho ứng dụng. Bạn cần thực thi một Cloud Run job (một công việc batch chạy trên Cloud Run) theo thực hành tốt nhất được Google khuyến nghị.
Cloud Workflows là dịch vụ orchestration serverless cho phép định nghĩa workflow dưới dạng YAML, kết nối các dịch vụ Google Cloud mà không cần quản lý hạ tầng. Cloud Run job là tính năng batch processing trên Cloud Run, cho phép chạy container một lần hoặc theo lịch mà không cần HTTP endpoint như Cloud Run service.
Mục tiêu là thực thi Cloud Run job từ một bước trong Workflow một cách trực tiếp, đáng tin cậy và tuân thủ best practices (như sử dụng connector tích hợp thay vì workaround gián tiếp). Kiến thức dựa trên phiên bản mới nhất Cloud Workflows v2 và Cloud Run Jobs API (cập nhật đến 2026, hỗ trợ connector native).
✅ Đáp án đúng
Use the Cloud Run Admin API connector to execute the Cloud Run job within the Workflow.
Lý do chọn đáp án này:
Đây là cách Google khuyến nghị chính thức để thực thi Cloud Run job từ Workflow. Cloud Workflows cung cấp built-in connector cho Cloud Run Jobs API (qua hàm cloudrun_jobs.runJob), cho phép gọi trực tiếp API admin của Cloud Run để tạo và chạy job execution mà không cần middleware. Điều này đảm bảo:
- Tích hợp native: Không phụ thuộc event hay HTTP.
- Quản lý lifecycle đầy đủ: Theo dõi trạng thái job, retry tự động.
- Best practices: Giảm độ trễ, chi phí thấp, bảo mật IAM tích hợp (Workflow service account cần quyền
run.jobs.run).
📘 Tài liệu tham khảo: Cloud Workflows stdlib - cloudrun_jobs connector và Cloud Run Jobs docs.
🛠️ Phân tí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. Tôi giữ nguyên nội dung văn bản gốc bằng tiếng Anh, chỉ giải thích đúng/sai bằng tiếng Việt. Mỗi phương án được đánh giá dựa trên best practices Google Cloud (không khuyến khích workaround phức tạp).
-
❌ [SAI] Create a Pub/Sub topic, and subscribe the Cloud Run job to the topic.
Phương án này sai vì Cloud Run job không hỗ trợ subscribe Pub/Sub topic. Cloud Run jobs là batch job (chạy một lần, không event-driven), không có cơ chế listener như Cloud Run service. Sử dụng Pub/Sub sẽ tạo kiến trúc gián tiếp phức tạp, tăng độ trễ và chi phí, vi phạm best practices (không dùng pub/sub cho internal orchestration). Thay vào đó, dùng trực tiếp connector. -
❌ [SAI] Configure an Eventarc trigger to invoke the Cloud Run job, and include the trigger in a step of the Workflow.
Phương án này sai vì Eventarc trigger không được thiết kế để "include trong step của Workflow". Eventarc dùng cho event-driven architecture (như audit log trigger), không phải để gọi synchronous từ Workflow step. Workflow không thể "chứa" trigger như một bước; nó sẽ tạo loop phức tạp, khó debug và không scalable. Best practice là dùng API connector trực tiếp thay vì event routing. -
✅ [ĐÚNG] Use the Cloud Run Admin API connector to execute the Cloud Run job within the Workflow.
(Đã giải thích chi tiết ở phần đáp án đúng ở trên). Đây là lựa chọn tối ưu, native và được Google docs khuyến nghị cho Workflow + Cloud Run Jobs integration. -
❌ [SAI] Determine the entry point of the Cloud Run job, and send an HTTP request from the Workflow.
Phương án này sai vì Cloud Run job không có HTTP endpoint để gửi request. Jobs chỉ expose qua Admin API (gcloud run jobs execute hoặc API call), không chạy HTTP server như Cloud Run service. Gửi HTTP sẽ fail (404 hoặc timeout), và "entry point" chỉ dùng lúc deploy job, không phải runtime invoke. Điều này dẫn đến lỗi và không tuân thủ best practices (Workflow có connector HTTP nhưng không áp dụng ở đây).
Tóm tắt khuyến nghị 🏆: Luôn ưu tiên connectors stdlib của Cloud Workflows cho các dịch vụ GCP để đảm bảo reliability và simplicity! Nếu cần code sample, xem YAML ví dụ trong docs liên kết.
- A Run the Cloud SQL Auth Proxy as a background service.
- B Add the --private-ip option when starting the Cloud SQL Auth Proxy.
- C Set up VPC Network Peering between your VPC and the VPC where the Cloud SQL instance is deployed.
- D Grant yourself the IAM role that provides access to the Cloud SQL instance.
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 phát triển ứng dụng cần kết nối đến cơ sở dữ liệu Cloud SQL for PostgreSQL thông qua Cloud SQL Auth Proxy. Proxy này được host trên một VPC network khác so với nơi ứng dụng đang chạy. Instance Cloud SQL có cả public IP và private IP, và yêu cầu bảo mật bắt buộc phải sử dụng private IP. Khi test kết nối:
- ✅ Kết nối qua public IP thành công.
- ❌ Kết nối qua private IP thất bại.
Vấn đề cốt lõi 🛠️: Proxy không thể reach đến private IP của Cloud SQL instance vì chúng nằm ở hai VPC network khác nhau. Private IP chỉ có thể truy cập nội bộ trong cùng VPC hoặc qua các cơ chế kết nối mạng như VPC Peering. Public IP hoạt động vì nó expose ra internet (với auth proxy hỗ trợ). Giải pháp cần khắc phục vấn đề network connectivity giữa các VPC để proxy sử dụng private IP an toàn.
(Kiến thức cập nhật đến 2024-2026: Theo tài liệu Google Cloud mới nhất, Cloud SQL private IP yêu cầu Shared VPC hoặc VPC Peering để cross-VPC access qua Auth Proxy. Xem docs: Cloud SQL Auth Proxy và VPC Network Peering).
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Set up VPC Network Peering between your VPC and the VPC where the Cloud SQL instance is deployed.
Lý do 📘:
- Private IP của Cloud SQL chỉ accessible từ cùng VPC hoặc qua VPC Network Peering (hoặc VPC Sharing). Proxy ở VPC khác không route được đến private IP của instance → peering tạo kết nối private giữa hai VPC, cho phép proxy connect trực tiếp đến private IP mà không qua public internet.
- Đây là giải pháp chuẩn theo best practice bảo mật của Google Cloud, tránh expose public IP.
- Sau peering, khởi động proxy với flag
--ip-address-types=PRIVATE(nếu cần chỉ định) để ưu tiên private IP.
🔍 Giải thích tất cả các phương án (đúng/sai)
-
[SAI] Run the Cloud SQL Auth Proxy as a background service.
❌ Sai vì: Chạy proxy dưới dạng background service (như systemd) chỉ ảnh hưởng đến cách quản lý process, không giải quyết vấn đề network routing giữa các VPC. Kết nối public vẫn OK, nhưng private IP vẫn fail do thiếu peering. Không liên quan đến connectivity. -
[SAI] Add the --private-ip option when starting the Cloud SQL Auth Proxy.
❌ Sai vì: Không tồn tại flag--private-ipchính thức trong Cloud SQL Auth Proxy (cập nhật 2024-2026). Flag đúng là--ip-address-types=PRIVATEđể ưu tiên private IP, nhưng ngay cả khi dùng flag này, proxy vẫn không reach được private IP nếu hai VPC không peering. Vấn đề là cross-VPC access, không phải config flag. -
[ĐÚNG] Set up VPC Network Peering between your VPC and the VPC where the Cloud SQL instance is deployed.
✅ Đúng vì: Như giải thích trên, peering thiết lập route private giữa hai VPC, cho phép proxy ở VPC khác truy cập private IP của Cloud SQL. Đây là yêu cầu bắt buộc cho multi-VPC setup (docs: Troubleshoot private IP). Sau peering, test kết nối private IP sẽ thành công. -
[SAI] Grant yourself the IAM role that provides access to the Cloud SQL instance.
❌ Sai vì: IAM role (như Cloud SQL Client) chỉ kiểm soát auth và permission, không ảnh hưởng đến network layer. Kết nối public đã OK chứng tỏ IAM đã đủ quyền → vấn đề thuần túy là private IP không reachable do VPC isolation.
Tài liệu tham khảo chính 📚:
- Cloud SQL Connect with Auth Proxy (Private IP)
- VPC Peering for Cloud SQL
- Troubleshooting Cloud SQL Proxy
Hy vọng phân tích này giúp bạn nắm vững! 🚀 Nếu cần ví dụ config peering, hãy hỏi thêm nhé!
- A Set up an organization-level Cloud Storage log sink with a filter to capture the audit log events for Compute Engine. Configure an Eventarc trigger that executes when the Cloud Storage bucket is updated and sends these events to the application to update the cache.
- B Set up a Cloud Asset Inventory real-time feed of insert and delete events with the asset types filter set to compute.googleapis.com/Instance. Configure an Eventarc trigger that sends these events to the application to update the cache.
- C Set up an organization-level Pub/Sub log sink with a filter to capture the audit log events for Compute Engine. Configure an Eventarc trigger that sends these events to the application to update the cache.
- D Set up an organization-level BigQuery log sink. Configure the application to query this BigQuery table every minute to retrieve the last minute’s events and update the cache.
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 việc phát triển một custom job scheduler trên Google Cloud Platform (GCP) cần duy trì một persistent cache chứa danh sách tất cả các Compute Engine VMs đang ở trạng thái running (không bị deleted, stopped hoặc suspended). Job scheduler sẽ kiểm tra cache này và chỉ gửi job đến các VM available trong cache. Yêu cầu chính: Đảm bảo cache không bị stale (luôn cập nhật real-time khi có thay đổi trạng thái VM).
🛠️ Vấn đề cốt lõi: Cần một cơ chế real-time notification về các sự kiện insert (tạo mới) và delete (xóa) của Compute Engine instances để cập nhật cache kịp thời, tránh tình trạng cache lỗi thời dẫn đến gửi job sai VM.
📘 Đây là câu hỏi kiểm tra kiến thức về Cloud Asset Inventory (CAI) và Eventarc trên GCP (cập nhật đến 2026, theo docs chính thức GCP).
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Set up a Cloud Asset Inventory real-time feed of insert and delete events with the asset types filter set to compute.googleapis.com/Instance. Configure an Eventarc trigger that sends these events to the application to update the cache.
Lý do:
- Cloud Asset Inventory (CAI) hỗ trợ real-time feeds (từ năm 2022, cập nhật ổn định đến 2026) để theo dõi thay đổi tài nguyên GCP theo thời gian thực, đặc biệt với filter
compute.googleapis.com/Instancecho các sự kiện insert/delete của VM. - Kết hợp Eventarc trigger để push events trực tiếp đến ứng dụng, đảm bảo cache cập nhật ngay lập tức mà không polling, tránh stale data.
- Đây là giải pháp chuẩn GCP cho asset changes real-time, hiệu quả cao về chi phí và độ tin cậy.
🛠️ Nguồn tham khảo: GCP Docs - Cloud Asset Inventory Real-time Feeds, Eventarc Triggers.
📋 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 theo thứ tự, với ✅ đúng hoặc ❌ sai, giữ nguyên văn bản gốc bằng tiếng Anh:
-
❌ Sai: Set up an organization-level Cloud Storage log sink with a filter to capture the audit log events for Compute Engine. Configure an Eventarc trigger that executes when the Cloud Storage bucket is updated and sends these events to the application to update the cache.
Giải thích: Cloud Storage log sink lưu audit logs vào bucket, nhưng không phải real-time (có độ trễ vài phút). Filter audit logs cho Compute Engine chỉ capture user actions, không bao quát đầy đủ insert/delete (như auto-scaling). Eventarc trigger trên bucket update vẫn chậm và không chính xác cho trạng thái VM running. Dẫn đến cache dễ stale.
🛠️ Nguồn: GCP Logging Sinks. -
✅ Đúng (đã giải thích ở trên): Set up a Cloud Asset Inventory real-time feed of insert and delete events with the asset types filter set to compute.googleapis.com/Instance. Configure an Eventarc trigger that sends these events to the application to update the cache.
Giải thích bổ sung: Feed real-time của CAI push events sub-second latency, filter chính xác asset type VM, lý tưởng cho cache persistent. Hoàn hảo cho use case này. -
❌ Sai: Set up an organization-level Pub/Sub log sink with a filter to capture the audit log events for Compute Engine. Configure an Eventarc trigger that sends these events to the application to update the cache.
Giải thích: Pub/Sub log sink tương tự Cloud Storage, nhưng audit logs không real-time (độ trễ 1-2 phút), chỉ capture API calls, bỏ sót các thay đổi hệ thống (như maintenance). Eventarc trên Pub/Sub vẫn không đảm bảo cache tươi mới, dễ miss events. Không phải best practice cho asset monitoring.
🛠️ Nguồn: GCP Logging to Pub/Sub. -
❌ Sai: Set up an organization-level BigQuery log sink. Configure the application to query this BigQuery table every minute to retrieve the last minute’s events and update the cache.
Giải thích: BigQuery sink lưu logs để query, nhưng phải polling every minute → không real-time, cache stale ít nhất 1 phút (có thể lâu hơn do query latency). Chi phí cao (query BigQuery), không scalable cho real-time use case. Không dùng Eventarc push.
🛠️ Nguồn: GCP Logging to BigQuery.
Tóm tắt takeaway 🎯: Sử dụng CAI real-time feeds + Eventarc là cách tối ưu nhất cho real-time asset tracking trên GCP, tránh các giải pháp log-based chậm chạp hoặc polling.