Ngân hàng đề — Microsoft Azure Developer

Tìm thấy 409 câu.

Câu 361
Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.

After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.

You are implementing an application by using Azure Event Grid to push near-real-time information to customers.

You have the following requirements:
•You must send events to thousands of customers that include hundreds of various event types.
•The events must be filtered by event type before processing.
•Authentication and authorization must be handled by using Microsoft Entra ID.
•The events must be published to a single endpoint.

You need to implement Azure Event Grid.

Solution: Enable ingress, create a TCP scale rule, and apply the rule to the container app.

Does the solution meet the goal?
  1. A Yes
  2. B No
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 dạng case study (bộ câu hỏi liên quan đến một tình huống cụ thể) trong kỳ thi chứng chỉ Azure, thường gặp ở các exam như AZ-204 hoặc AZ-305. Tình huống mô tả việc triển khai ứng dụng sử dụng Azure Event Grid để đẩy thông tin gần thời gian thực (near-real-time) đến hàng nghìn khách hàng.

Yêu cầu cụ thể (requirements):

  • 📤 Gửi sự kiện (events) đến hàng nghìn khách hàng, với hàng trăm loại sự kiện khác nhau (hundreds of various event types).
  • 🔍 Lọc sự kiện theo loại sự kiện (filtered by event type) trước khi xử lý.
  • 🔐 Xác thực và phân quyền bằng Microsoft Entra ID (trước đây là Azure AD).
  • 🎯 Xuất bản sự kiện đến một endpoint duy nhất (single endpoint).

Giải pháp đề xuất (Solution): "Enable ingress, create a TCP scale rule, and apply the rule to the container app."
🛠️ Giải pháp này tập trung vào việc kích hoạt ingress (cổng vào), tạo quy tắc scale TCP, và áp dụng vào container app (có lẽ ám chỉ Azure Container Apps).

Câu hỏi chính: Giải pháp này có đáp ứng mục tiêu (meet the goal) không?
Đây là câu hỏi Yes/No, yêu cầu đánh giá xem giải pháp có phù hợp với Azure Event Grid và các yêu cầu không. Lưu ý: Sau khi trả lời, không thể quay lại, giống format thi thực tế.

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

Đáp án đúng: No
📘 Lý do: Giải pháp đề xuất không liên quan trực tiếp đến Azure Event Grid và không đáp ứng các yêu cầu cốt lõi. Azure Event Grid là dịch vụ event routing chuyên dụng hỗ trợ fan-out đến nhiều subscribers (hàng nghìn khách hàng), lọc sự kiện advanced (theo event type, subject, data), tích hợp Entra ID cho auth (qua access keys, SAS, hoặc RBAC), và publish đến topic/domain endpoint duy nhất.

Giải pháp này chỉ là cấu hình scaling và networking cho Container Apps (sử dụng KEDA hoặc Dapr scaling với TCP rules), phù hợp cho workload containerized nhưng không xử lý event filtering, pub/sub pattern, hay Entra ID cho events. Nó không giải quyết việc gửi events đến thousands of customers qua single endpoint với filtering. Thay vào đó, cần dùng Event Grid Topics/Domains + Event Subscriptions với filters và Entra ID RBAC (cập nhật đến 2026: Event Grid hỗ trợ schema evolution, partner topics, và hybrid events).

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

  • Yes
    ❌ Phương án SAI. Chọn "Yes" là sai vì giải pháp chỉ enable ingress và TCP scale rule trên container app, đây là tính năng của Azure Container Apps (scale dựa trên TCP connections, ingress modes như external/internal). Nó không hỗ trợ:

    • Fan-out events đến thousands of customers.
    • Filtering hundreds of event types (Event Grid có advanced filters như data-based, SQL-like).
    • Entra ID auth cho events (Container Apps dùng Entra ID cho management, không phải event delivery).
    • Single endpoint pub/sub. Kết quả: Không meet the goal, lãng phí scale rule cho workload không phải container ingress.
  • No
    ✅ Phương án ĐÚNG. Chọn "No" là chính xác vì giải pháp không implement Azure Event Grid đúng cách. Event Grid yêu cầu:

    • Tạo Event Grid Domain (cho hundreds of topics/event types, fan-out to thousands via subscriptions).
    • Áp dụng event filters (type, subject, data).
    • Config Entra ID RBAC (Data Sender/Owner roles).
    • Publish đến domain endpoint duy nhất.
      Giải pháp container app chỉ scale TCP traffic, không phải eventing service → Fail all requirements.

📚 Tài liệu tham khảo (cập nhật mới nhất đến 2026)

  • 🛤️ Azure Event Grid Overview: Event Grid concepts – Giải thích domains, filtering, Entra ID auth (RBAC hỗ trợ từ 2021, enhanced 2025).
  • 🏗️ Event Grid Domains: Scale to millions with Domains – Phù hợp thousands customers, hundreds types.
  • 🚀 Azure Container Apps Scaling: Scale rules & Ingress – Xác nhận TCP scale chỉ cho traffic, không eventing (update 2024: TCP metrics added).
  • 🔐 Entra ID Integration: Authenticate Event Grid – RBAC/SAS cho endpoints.
  • 📊 Best Practices 2026: AWS? (Lưu ý: Câu hỏi là Azure, không AWS; tham khảo Event Grid vs. alternatives).

Hy vọng phân tích giúp bạn ôn thi hiệu quả! 🚀 Nếu cần giải pháp đúng, dùng Event Grid Domain + Subscriptions!

Câu 362 Chọn nhiều đáp án
You have an Azure Queue Storage named queue1.

You plan to develop code that will process messages in queue1.

You need to implement a queue operation to set the visibility timeout value of individual messages in queue1.

Which two operations can you use? Each correct answer presents a complete solution.

NOTE: Each correct selection is worth one point.
  1. A Peek at a message in the queue.
  2. B Delete a message in the queue.
  3. C Add a message to the queue.
  4. D Update a message in the queue.
  5. E Receive a message from the queue.
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 lĩnh vực Azure Queue Storage (không phải AWS như mô tả ban đầu, có thể là nhầm lẫn), tập trung vào việc xử lý thông điệp (messages) trong một hàng đợi (queue) có tên queue1.

  • Bối cảnh: Bạn đang phát triển code để xử lý thông điệp trong queue1. Nhiệm vụ cụ thể là thực hiện một hoạt động queue để thiết lập giá trị visibility timeout cho từng thông điệp riêng lẻ (individual messages).
    • Visibility timeout là khoảng thời gian mà thông điệp trở nên "ẩn" (invisible) đối với các người nhận khác sau khi được lấy ra, tránh tình trạng xử lý trùng lặp. Nếu không xử lý xong trong thời gian này, thông điệp sẽ lại visible và có thể được lấy bởi người khác.
  • Yêu cầu: Chọn hai hoạt động (operations) có thể sử dụng để đạt được mục tiêu này. Đây là câu hỏi multi-select (mỗi lựa chọn đúng đáng 1 điểm), dựa trên Azure Storage Queues API phiên bản mới nhất (cập nhật đến 2024-2026, theo Azure SDK for .NET/Python/REST API v2024-04-01 và sau).

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

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

Hai hoạt động đúng là:
Update a message in the queue và Receive a message from the queue.

🛠️ Lý do chi tiết:

  • Những hoạt động này cho phép thiết lập hoặc cập nhật visibility timeout trực tiếp cho thông điệp riêng lẻ.
    • Receive: Khi gọi, bạn có thể chỉ định visibilitytimeout (giây) để ẩn thông điệp ngay lập tức.
    • Update: Dùng sau khi Receive/Peek, để cập nhật nội dung và visibility timeout của thông điệp đang được "giữ" (pop receipt), kéo dài thời gian xử lý nếu cần.
      Đây là hai giải pháp hoàn chỉnh theo thiết kế của Azure Queue Storage (không hỗ trợ set visibility trực tiếp mà không qua Receive/Update).

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

Dưới đây là phân tích từng lựa chọn một cách rõ ràng:

  • ❌ Peek at a message in the queue.
    Hoạt động này chỉ đọc nội dung thông điệp mà không thay đổi trạng thái (không set visibility timeout, không pop receipt). Thông điệp vẫn visible cho người khác. Sai vì không hỗ trợ thiết lập timeout cho individual messages.

  • ❌ Delete a message in the queue.
    Hoạt động này xóa vĩnh viễn thông điệp (yêu cầu pop receipt từ Receive trước đó). Không có tham số để set visibility timeout. Sai vì chỉ dùng để hoàn tất xử lý, không thiết lập timeout.

  • ❌ Add a message to the queue.
    Hoạt động này thêm thông điệp mới vào queue, với tùy chọn time-to-live (TTL) nhưng không set visibility timeout (visibility chỉ áp dụng sau Receive). Sai vì dành cho việc chèn mới, không ảnh hưởng individual messages hiện có.

  • ✅ Update a message in the queue.
    Hoạt động này cập nhật nội dung và visibility timeout của thông điệp cụ thể (dùng message ID + pop receipt từ Receive/Peek). Hỗ trợ tham số visibilitytimeoutinseSeconds để set giá trị mới. Đúng – hoàn chỉnh cho việc điều chỉnh timeout riêng lẻ.

  • ✅ Receive a message from the queue.
    Hoạt động này lấy thông điệp và set visibility timeout ngay lập tức (tham số visibilitytimeoutinseSeconds, mặc định 30 giây). Trả về pop receipt để dùng cho Update/Delete sau. Đúng – là bước đầu tiên và cốt lõi để ẩn individual messages.

🧩 Lưu ý bổ sung: Trong code thực tế (ví dụ Azure.Storage.Queues SDK v12+), bạn dùng PeekMessageAsync() cho Peek, ReceiveMessageAsync(visibilityTimeout: TimeSpan) cho Receive, và UpdateMessageAsync() cho Update. Không có thay đổi lớn đến 2026 theo roadmap Azure Storage.

Câu 363
You are developing a Java application to be deployed in Azure. The application stores sensitive data in Azure Cosmos DB.

You need to configure Always Encrypted to encrypt the sensitive data inside the application.

What should you do first?
  1. A Create a new container to include an encryption policy with the JSON properties to be encrypted.
  2. B Create a customer-managed key (CMK) and store the key in a new Azure Key Vault instance.
  3. C Create a data encryption key (DEK) by using the Azure Cosmos DB SDK and store the key in Azure Cosmos DB.
  4. D Create an Azure AD managed identity and assign the identity to a new Azure Key Vault instance.
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 phát triển ứng dụng Java triển khai trên Azure, sử dụng Azure Cosmos DB để lưu trữ dữ liệu nhạy cảm. Nhiệm vụ là cấu hình Always Encrypted (mã hóa luôn luôn được kích hoạt ở phía client) để mã hóa dữ liệu nhạy cảm bên trong ứng dụng (inside the application), nghĩa là mã hóa diễn ra trước khi dữ liệu được gửi đến Cosmos DB.

Always Encrypted trong Azure Cosmos DB (hỗ trợ cho NoSQL API, cập nhật mới nhất đến năm 2026 theo tài liệu Azure) là tính năng mã hóa phía client-side, giúp bảo vệ dữ liệu nhạy cảm như SSN, số thẻ tín dụng... Dữ liệu được mã hóa bằng Column Encryption Key (CEK), và CEK được bảo vệ bởi Column Master Key (CMK) lưu trữ an toàn trong Azure Key Vault. Quy trình thiết lập yêu cầu các bước tuần tự, và câu hỏi hỏi về bước đầu tiên (first) cần thực hiện để kích hoạt tính năng này từ ứng dụng Java (sử dụng Azure Cosmos DB SDK for Java).

🛠️ Lưu ý quan trọng: Always Encrypted không phải mã hóa server-side như Transparent Data Encryption (TDE), mà là client-driven encryption. Ứng dụng phải xử lý metadata mã hóa (như path properties trong JSON) và sử dụng SDK để encrypt/decrypt.

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

Đáp án đúng: Create a customer-managed key (CMK) and store the key in a new Azure Key Vault instance.

Lý do:

  • Đây là bước đầu tiên bắt buộc trong quy trình Always Encrypted cho Cosmos DB. CMK (Customer-Managed Key) là khóa chính (master key) dùng để bảo vệ Column Encryption Key (CEK) – khóa thực tế mã hóa dữ liệu. CMK phải được tạo và lưu trữ trong Azure Key Vault mới (hoặc existing vault với quyền phù hợp) để đảm bảo an toàn và kiểm soát khóa bởi khách hàng.
  • Theo quy trình chính thức (cập nhật 2024-2026): (1) Tạo CMK trong Key Vault → (2) Tạo CEK từ CMK → (3) Định nghĩa encryption policy trong client SDK → (4) Áp dụng cho container/properties.
  • Không có CMK, không thể tiến hành các bước sau, vì SDK Java yêu cầu CMK để generate CEK.

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

  • ❌ SAI - Create a new container to include an encryption policy with the JSON properties to be encrypted.
    Phương án này mô tả việc tạo container với policy mã hóa cho properties JSON cụ thể (như encryptionType: deterministic/randomized). Tuy nhiên, đây KHÔNG phải bước đầu tiên. Encryption policy chỉ được áp dụng SAU khi đã có CMK và CEK (qua client metadata). Container có thể tồn tại trước, và policy được định nghĩa trong ứng dụng SDK, không phải lúc tạo container. Làm bước này trước sẽ thất bại vì thiếu key.

  • ✅ ĐÚNG - Create a customer-managed key (CMK) and store the key in a new Azure Key Vault instance.
    Như đã giải thích ở trên: Bước đầu tiên thiết yếu. CMK trong Key Vault là nền tảng cho toàn bộ hệ thống Always Encrypted. SDK Java sẽ sử dụng CMK này để tạo CEK và mã hóa dữ liệu trước khi insert/update vào Cosmos DB. Đây là best practice để tuân thủ zero-trust model.

  • ❌ SAI - Create a data encryption key (DEK) by using the Azure Cosmos DB SDK and store the key in Azure Cosmos DB.
    DEK (Data Encryption Key, tương đương CEK) có thể được tạo bằng SDK, nhưng KHÔNG lưu trữ trong Cosmos DB vì vi phạm nguyên tắc bảo mật (keys không bao giờ lưu cùng data). DEK phải được tạo từ CMK (bước trước đó), và chỉ metadata của DEK lưu trong Cosmos DB (như clientEncryptionKeyId). Làm trước CMK sẽ lỗi, và lưu DEK trong DB là rủi ro cao.

  • ❌ SAI - Create an Azure AD managed identity and assign the identity to a new Azure Key Vault instance.
    Managed Identity (system/user-assigned) dùng để ứng dụng truy cập Key Vault an toàn (keyless auth), nhưng đây KHÔNG phải bước đầu tiên. Phải tạo CMK TRƯỚC, sau đó mới assign identity với roles như "Key Vault Crypto Officer/User" để SDK đọc CMK. Tạo identity mà thiếu CMK thì vô dụng.

📘 Tài liệu tham khảo (cập nhật mới nhất đến 2026)

Hy vọng phân tích này giúp bạn hiểu rõ! Nếu cần code sample Java, hãy hỏi thêm nhé! 🚀

Câu 364
You develop an ASP. Net Care application by integrating the Application Insights SDK into your solution.

The application sends a very high rate of telemetry in a short time interval. You observe a reduced number of events, traces, and metrics being recorded and increased error rates for telemetry ingestion. Telemetry data must synchronize the client and server information to allow HTTP request and response correlation.

You need to reduce telemetry traffic, data costs, and storage costs while preserving a statistically correct analysis of application telemetry data.

What should you do?
  1. A Set a daily cap on the Log Analytics workspace. Create an Activity log alert rule.
  2. B Modify the pricing tier for the Log Analytics workspace.
  3. C Verify adaptive sampling is enabled. Set the maxTelemetryItemsPerSecond value.
  4. D Set retention and archive policies by table in the Log Analytics workspace. Purge retained data beyond 30 days.
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 ứng dụng ASP.NET Core được tích hợp Application Insights SDK (thuộc Azure Monitor). Ứng dụng đang gửi lượng telemetry (dữ liệu giám sát như events, traces, metrics) rất cao trong khoảng thời gian ngắn, dẫn đến:

  • ✅ Số lượng events, traces, metrics được ghi nhận giảm sút.
  • ❌ Tỷ lệ lỗi ingestion (tiếp nhận dữ liệu) tăng cao.
  • 📡 Dữ liệu telemetry phải đồng bộ thông tin client-server để hỗ trợ correlation giữa HTTP request và response (tức là liên kết dữ liệu giữa phía client và server).

Mục tiêu chính: Giảm lưu lượng telemetry traffic, chi phí dữ liệu và lưu trữ, nhưng vẫn giữ phân tích thống kê chính xác (statistically correct analysis) của dữ liệu ứng dụng. Đây là vấn đề phổ biến khi volume telemetry vượt quá giới hạn ingestion của Azure Monitor/Log Analytics (theo tài liệu mới nhất Azure 2024-2026, giới hạn mặc định khoảng 6MB/32MB mỗi phút tùy tier, và có throttling khi vượt ngưỡng).

Ngữ cảnh kỹ thuật 🛠️: Application Insights sử dụng sampling (lấy mẫu) để xử lý vấn đề này một cách thông minh, thay vì drop data thô (gây mất mát thống kê). Vấn đề cần giải quyết ở phía client-side (SDK) để giảm traffic gửi đi, đồng thời đảm bảo correlation (qua operation ID).

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

Đáp án đúng: Verify adaptive sampling is enabled. Set the maxTelemetryItemsPerSecond value.

Lý do 📘:

  • Adaptive sampling (lấy mẫu thích ứng) là tính năng mặc định và mạnh mẽ nhất của Application Insights SDK (TelemetryConfiguration), tự động điều chỉnh tỷ lệ sampling dựa trên volume dữ liệu thời gian thực. Nó bảo toàn phân tích thống kê đúng bằng cách giữ tỷ lệ representative (ví dụ: nếu 1% traffic spike, sampling rate giảm tương ứng mà không bias dữ liệu).
  • maxTelemetryItemsPerSecond (mặc định 20 items/giây) là giới hạn throughput ở SDK client-side, giúp throttle traffic ngay từ nguồn, giảm lỗi ingestion và chi phí mà không làm mất correlation (vì sampling processor giữ operation context).
  • Theo docs Azure mới nhất (2026): Đây là cách tối ưu nhất cho high-volume scenarios, hỗ trợ cả fixed-rate và adaptive sampling. Kích hoạt/điều chỉnh qua code: TelemetryConfiguration.Active.DefaultTelemetrySink.TelemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 500);.

Nguồn tham khảo:

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

  • ❌ Set a daily cap on the Log Analytics workspace. Create an Activity log alert rule.
    Sai vì: Daily cap chỉ giới hạn tổng data ingestion hàng ngày ở server-side (Log Analytics workspace), dẫn đến drop data thô khi vượt ngưỡng, không giảm traffic từ client và không bảo toàn thống kê (dữ liệu bị mất ngẫu nhiên, bias phân tích). Activity log alert chỉ cảnh báo, không giải quyết gốc rễ. Không hỗ trợ correlation client-server.

  • ❌ Modify the pricing tier for the Log Analytics workspace.
    Sai vì: Thay đổi tier (ví dụ: từ Pay-As-You-Go sang Capacity Reservation) chỉ tăng giới hạn ingestion (từ 500MB/ngày lên cao hơn), nhưng không giảm traffic cao đột ngột, vẫn gây throttling/error và tăng chi phí dài hạn. Không xử lý sampling hay correlation ở SDK level.

  • ✅ Verify adaptive sampling is enabled. Set the maxTelemetryItemsPerSecond value.
    Đúng vì: Như giải thích trên, đây là giải pháp client-side trực tiếp, adaptive sampling thông minh giảm volume tự động, maxTelemetryItemsPerSecond throttle chính xác, giảm traffic/chi phí/lưu trữ mà giữ statistically correct (representative sampling) và correlation đầy đủ (qua TelemetryInitializer).

  • ❌ Set retention and archive policies by table in the Log Analytics workspace. Purge retained data beyond 30 days.
    Sai vì: Retention/archive chỉ quản lý lưu trữ sau ingestion (ví dụ: giữ 30 ngày rồi purge), không giảm traffic ban đầu hay lỗi ingestion. Vẫn tốn chi phí ingest cao, và purge sau không bảo toàn thống kê thời gian thực. Không liên quan đến SDK hay correlation.

Kết luận 🚀: Sử dụng adaptive sampling + throttling SDK là best practice Azure cho high-telemetry apps, giúp scale hiệu quả mà không hy sinh insights! Nếu implement, test ở dev env trước.

Câu 365
Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.

After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.

You deploy an Azure Container Apps app and disable ingress on the container app.

Users report that they are unable to access the container app. You investigate and observe that the app has scaled to 0 instances.

You need to resolve the issue with the container app.

Solution: Enable ingress, create an HTTP scale rule, and apply the rule to the container app.

Does the solution meet the goal?
  1. A Yes
  2. B No
Xem giải thích

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

Câu hỏi thuộc dạng case study (series questions) trong kỳ thi chứng chỉ Microsoft Azure (có thể từ AZ-204 hoặc tương tự), nơi mỗi câu đưa ra một giải pháp độc lập để giải quyết tình huống chung. Tình huống mô tả:

  • Bạn triển khai một ứng dụng Azure Container Apps và tắt ingress (ingress disabled) trên ứng dụng container.
  • Người dùng báo lỗi không thể truy cập ứng dụng.
  • Khi kiểm tra, phát hiện ứng dụng đã scale xuống 0 instances (scale to zero).
  • Mục tiêu: Khắc phục vấn đề để người dùng có thể truy cập ứng dụng một cách ổn định.

Nguyên nhân gốc rễ 📉:

  • Ingress disabled: Không có lưu lượng truy cập HTTP vào ứng dụng (external/internal traffic bị chặn).
  • Không có traffic → Không có metrics kích hoạt scaling → Ứng dụng scale to zero (mặc định minReplicas = 0 trong Azure Container Apps).
  • Kết quả: Không có instance chạy → Người dùng không truy cập được (thường nhận lỗi 503/502 Bad Gateway).

Giải pháp đề xuất 🛠️: Bật ingress, tạo quy tắc scale HTTP (HTTP scale rule), và áp dụng quy tắc này lên ứng dụng container.
Câu hỏi: Giải pháp này có đạt mục tiêu không? (Yes/No)

Kiến thức cập nhật (Azure Container Apps preview GA từ 2022, stable đến 2026): Scaling dùng KEDA scalers, hỗ trợ scale-to-zero mặc định. HTTP scale rule (type: "http", concurrency-based) chỉ kích hoạt scale-up khi có concurrent HTTP requests, nhưng không ngăn scale-back to zero khi idle. Cold start latency ~10-30s có thể gây gián đoạn truy cập đầu tiên sau idle.

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

✅ Đáp án đúng: No

Lý do lựa chọn ❌🧐:
Giải pháp KHÔNG đạt mục tiêu vì:

  • Bật ingress + HTTP scale rule chỉ cho phép scale-up on-demand dựa trên HTTP concurrent requests (scale từ 0 khi có traffic).
  • Tuy nhiên, ứng dụng vẫn scale-back to 0 khi không có traffic (idle), dẫn đến cold start delay (chờ scale-up 10-30s) → Người dùng vẫn gặp lỗi truy cập lần đầu sau idle (timeout/502).
  • Mục tiêu là khắc phục triệt để "users unable to access" và tình trạng scale to 0 → Cần giải pháp luôn có instance sẵn sàng như set minReplicas >=1 (kết hợp enable ingress) để tránh scale-to-zero hoàn toàn.
    Giải pháp này chỉ phù hợp serverless thuần, nhưng không "resolve issue" ổn định lâu dài trong scenario exam.

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

  • Yes ❌:
    SAI vì giải pháp không đảm bảo ứng dụng luôn sẵn sàng truy cập. HTTP scale rule chỉ xử lý scale-up tạm thời khi có request, nhưng cho phép scale to 0 khi idle → Vẫn tái phát vấn đề (không "meet the goal" triệt để). Trong series questions, đây không phải unique correct solution.

  • No ✅:
    ĐÚNG vì như phân tích trên, giải pháp thiếu yếu tố prevent scale-to-zero (như minReplicas=1). Giải pháp đúng thường là: Enable ingress + update scale settings với minReplicas: 1 để luôn có ít nhất 1 instance chạy, đảm bảo truy cập ngay lập tức mà không cold start. Điều này phù hợp best practices cho production apps cần low-latency.

Câu 366
Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.

After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.

You are implementing an application by using Azure Event Grid to push near-real-time information to customers.

You have the following requirements:
•You must send events to thousands of customers that include hundreds of various event types.
•The events must be filtered by event type before processing.
•Authentication and authorization must be handled by using Microsoft Entra ID.
•The events must be published to a single endpoint.

You need to implement Azure Event Grid.

Solution: Publish events to a partner topic. Create an event subscription for each customer.

Does the solution meet the goal?
  1. A Yes
  2. B No
Xem giải thích

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

Câu hỏi thuộc dạng bài thi Microsoft (kiểu case study), nơi bạn đang triển khai một ứng dụng sử dụng Azure Event Grid để đẩy thông tin gần thời gian thực (near-real-time) đến hàng nghìn khách hàng (customers). Các yêu cầu cụ thể bao gồm:

  • Gửi sự kiện (events) đến hàng nghìn khách hàng, với hàng trăm loại sự kiện khác nhau (hundreds of various event types).
  • Lọc sự kiện theo loại sự kiện (filter by event type) trước khi xử lý.
  • Xác thực và phân quyền (authentication and authorization) sử dụng Microsoft Entra ID (trước đây là Azure AD).
  • Tất cả sự kiện phải được xuất bản đến một điểm cuối duy nhất (published to a single endpoint).

Giải pháp đề xuất:

  • Xuất bản sự kiện đến một partner topic.
  • Tạo một event subscription cho mỗi khách hàng.

Câu hỏi yêu cầu đánh giá: Giải pháp này có đáp ứng mục tiêu không? (Does the solution meet the goal?). Đây là phần của series câu hỏi, mỗi câu có giải pháp riêng, và bạn không thể quay lại sau khi trả lời.

✅ Đáp án đúng: No

Lý do lựa chọn đáp án đúng: Giải pháp KHÔNG đáp ứng đầy đủ các yêu cầu vì:

  • Partner topic cho phép xuất bản sự kiện đến một điểm cuối duy nhất ✅ (đáp ứng yêu cầu single endpoint), hỗ trợ lọc theo loại sự kiện qua subscription filters ✅, và xác thực bằng Microsoft Entra ID (qua managed identity hoặc AAD tokens) ✅.
  • Tuy nhiên, phần "Create an event subscription for each customer" là KHÔNG khả thi. Với partner topic, bạn (nhà xuất bản) chỉ tạo partner topic trong subscription của mình. Khách hàng (customers ở các subscription/tenant khác) PHẢI TỰ TẠO partner namespace và partner configuration trong subscription của họ để liên kết với partner topic của bạn – điều này giống như một dạng "subscription" gián tiếp. Bạn KHÔNG THỂ tạo event subscription trực tiếp cho endpoint của khách hàng, vì event subscription phải được tạo bởi chủ sở hữu subscription chứa endpoint đó. Việc tạo hàng nghìn subscription thủ công cho từng khách hàng sẽ không scale và vi phạm mô hình partner topic (dành cho khách hàng tự subscribe). 🛠️

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

  • Yes ❌
    Sai vì: Giải pháp không hoàn chỉnh. Mặc dù partner topic phù hợp cho fan-out đến nhiều khách hàng đa tenant và hỗ trợ các yêu cầu khác (lọc event type, Entra ID, single endpoint), nhưng bạn không thể tự tạo event subscription cho từng khách hàng. Khách hàng phải tự thiết lập partner namespace/configuration. Điều này không đáp ứng yêu cầu "send events to thousands of customers" một cách bạn kiểm soát trực tiếp. Nếu dùng partner topic đúng cách, khách hàng tự subscribe – không phải bạn tạo hộ.

  • No ✅
    Đúng vì: Như giải thích trên, giải pháp vi phạm quy trình của partner topic. Giải pháp đúng hơn có thể là sử dụng Event Grid Domain (cho custom topics với fan-out scale lớn, subscriptions per customer), hoặc Event Grid Namespace (phiên bản mới từ 2023-2026, hỗ trợ multi-tenant tốt hơn với topics và domains trong namespace, dễ quản lý subscriptions hàng nghìn). Partner topic chỉ dành cho channel cross-tenant tự subscribe, không cho bạn tạo subscription hộ khách hàng.

📘 Tài liệu tham khảo (cập nhật mới nhất đến 2026)

Câu 367
Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.

After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.

You deploy an Azure Container Apps app and disable ingress on the container app.

Users report that they are unable to access the container app. You investigate and observe that the app has scaled to 0 instances.

You need to resolve the issue with the container app.

Solution: Enable ingress, create a custom scale rule, and apply the rule to the container app.

Does the solution meet the goal?
  1. A Yes
  2. B No
Xem giải thích

🧩 Phân tích chi tiết câu hỏi trắc nghiệm về Azure Container Apps

📖 Nội dung câu hỏi được giải thích rõ ràng:
Câu hỏi thuộc dạng "Does the solution meet the goal?" trong kỳ thi chứng chỉ Azure (có thể là AZ-204 hoặc tương tự), là phần của một series câu hỏi cùng scenario. Scenario mô tả:

  • Bạn đã triển khai một ứng dụng Azure Container Apps và tắt ingress (không cho phép truy cập HTTP/HTTPS từ bên ngoài).
  • Người dùng báo lỗi không truy cập được ứng dụng.
  • Khi kiểm tra, ứng dụng đã scale xuống 0 instances (scale to zero) vì không có traffic vào.
  • Mục tiêu (goal): Giải quyết vấn đề để người dùng có thể truy cập ứng dụng.

🛠️ Giải pháp đề xuất (Solution):
"Enable ingress, create a custom scale rule, and apply the rule to the container app."
(Dịch ý: Bật ingress, tạo một quy tắc scale tùy chỉnh, và áp dụng quy tắc đó cho container app.)

Câu hỏi kiểm tra xem giải pháp này có đạt mục tiêu không. Lưu ý: Azure Container Apps sử dụng KEDA (Kubernetes Event-Driven Autoscaling) để scale dựa trên các rules như HTTP concurrent requests. Khi ingress bị tắt, không có traffic HTTP → ứng dụng scale to zero (mặc định sau thời gian idle). Để truy cập được, cần bật ingress (để expose endpoint) VÀ đảm bảo có ít nhất 1 instance luôn chạy (tránh scale to zero khi chưa có traffic ban đầu).

✅ Đáp án đúng: No
Lý do chọn đáp án đúng (bằng tiếng Việt):
Giải pháp không đạt mục tiêu vì:

  • Bật ingress chỉ expose ứng dụng qua HTTP/HTTPS (giúp traffic vào được), nhưng không ngăn chặn scale to zero nếu không có request thực tế ngay lập tức. Ứng dụng vẫn có thể scale xuống 0 sau timeout (mặc định 5-10 phút idle với HTTP scaler).
  • Tạo custom scale rule (quy tắc scale tùy chỉnh) là ý tưởng tốt, nhưng câu giải pháp không chỉ rõ quy tắc đó như thế nào (ví dụ: dựa trên cron job, queue, hoặc TCP để giữ min replicas). Nếu custom rule vẫn dựa trên HTTP mà không set minReplicas: 1, vấn đề scale to zero vẫn tồn tại → người dùng vẫn không truy cập được khi app "ngủ".
  • Giải pháp đúng phải bao gồm set minReplicas >=1 (hoặc scale rule không scale to zero) kết hợp bật ingress. Theo tài liệu Azure cập nhật 2024-2026, scale to zero chỉ bị vô hiệu hóa khi dùng scaler như "memory" hoặc manual minReplicas.
    (🔍 Nguồn tham khảo: Azure Container Apps scaling docs - Phần "Scale to zero" và "Scale rules"; Ingress overview - Cập nhật KEDA v2.14+ đến 2026).

📋 Giải thích tất cả các phương án (giữ nguyên text gốc bằng tiếng Anh):

  • Yes ❌ SAI
    Phương án này sai vì giả định giải pháp hoàn chỉnh đạt mục tiêu, nhưng thực tế không giải quyết triệt để scale to zero. Bật ingress + custom scale rule chỉ là bước đầu, thiếu cơ chế giữ instances (như minReplicas=1). Nếu áp dụng, app vẫn "ngủ" khi không traffic → users vẫn lỗi. Trong exam Azure, các solution phải chính xác 100%, không mơ hồ.

  • No ✅ ĐÚNG
    Phương án này đúng vì giải pháp đề xuất chỉ khắc phục một phần (expose ingress), nhưng bỏ qua nguyên nhân gốc rễ là scale rules mặc định cho phép scale to zero. Custom rule cần cụ thể (ví dụ: scale trên "kubernetes-job" hoặc "azure-servicebusqueue" với min=1) mới hiệu quả. Giải pháp lý tưởng: az containerapp update --min-replicas 1 --ingress enabled.

💡 Lời khuyên từ Azure Developer:

  • Để fix thực tế: Sử dụng CLI az containerapp ingress enable + az containerapp update --min-replicas 1.
  • Test scale: Deploy app với image đơn giản như nginx, monitor qua Azure Portal > Scale tab.
  • Cập nhật 2026: Azure hỗ trợ AI-driven scaling preview, nhưng core logic scale to zero vẫn như cũ.
    (📘 Tài liệu bổ sung: KEDA scalers for Container Apps, Troubleshoot scale to zero).
Câu 368
Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.

After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.

You are implementing an application by using Azure Event Grid to push near-real-time information to customers.

You have the following requirements:
•You must send events to thousands of customers that include hundreds of various event types.
•The events must be filtered by event type before processing.
•Authentication and authorization must be handled by using Microsoft Entra ID.
•The events must be published to a single endpoint.

You need to implement Azure Event Grid.

Solution: Publish events to a system topic. Create an event subscription for each customer.

Does the solution meet the goal?
  1. A Yes
  2. B No
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 thuộc dạng "series of questions" trong kỳ thi chứng chỉ (có thể là AZ-204 hoặc tương tự), nơi mỗi câu đưa ra một giải pháp cụ thể cho cùng kịch bản và hỏi liệu giải pháp đó có đáp ứng mục tiêu không. Bạn đang triển khai một ứng dụng sử dụng Azure Event Grid để đẩy thông tin gần thời gian thực (near-real-time) đến hàng nghìn khách hàng.

Yêu cầu chính (requirements) bao gồm:

  • Gửi sự kiện (events) đến hàng nghìn khách hàng, với hàng trăm loại sự kiện khác nhau (hundreds of various event types).
  • Lọc sự kiện theo loại (filtered by event type) trước khi xử lý.
  • Xác thực và phân quyền sử dụng Microsoft Entra ID (trước đây là Azure AD).
  • Xuất bản sự kiện đến một endpoint duy nhất (published to a single endpoint), sau đó phân phối fan-out.

Giải pháp đề xuất (Solution):
"Publish events to a system topic. Create an event subscription for each customer."
(Nghĩa là: Xuất bản sự kiện đến một system topic, và tạo một event subscription riêng cho từng khách hàng.)

Câu hỏi: Giải pháp này có đáp ứng mục tiêu không? (Does the solution meet the goal?)

✅ Đáp án đúng: No
Lý do lựa chọn (bằng tiếng Việt):
Giải pháp này KHÔNG đáp ứng mục tiêu vì system topic trong Azure Event Grid chỉ dùng để nhận sự kiện tự động từ các dịch vụ Azure sẵn có (như Azure Storage, Azure VMs, hoặc các resource khác), chứ KHÔNG hỗ trợ xuất bản sự kiện tùy chỉnh (custom events) từ ứng dụng của bạn. Ứng dụng ở đây cần đẩy sự kiện tùy chỉnh (near-real-time info), nên phải dùng custom topic hoặc partner topic để publish đến một endpoint duy nhất. Việc tạo subscription riêng cho từng khách hàng (hàng nghìn cái) cũng không scale tốt, vì Event Grid giới hạn số subscription per topic (tối đa 500 theo docs mới nhất 2025), và không tận dụng lọc event type hiệu quả tại nguồn. Auth Entra ID có hỗ trợ nhưng không cứu vãn được vấn đề cốt lõi. Giải pháp đúng nên là custom topic với event filtering và delivery to multiple subscribers qua Azure-managed identities hoặc Entra ID.

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

  • Yes ❌ SAI
    Phương án này sai vì giải pháp đề xuất không phù hợp: System topic không cho phép publish custom events từ ứng dụng (chỉ nhận events từ Azure services). Tạo hàng nghìn subscription per customer sẽ vượt giới hạn scale (max 500 subs/topic theo Azure Event Grid limits 2025), không hỗ trợ single endpoint publish hiệu quả cho custom events, và lọc event type chưa được đảm bảo tối ưu.

  • No ✅ ĐÚNG
    Phương án này đúng vì lý do trên: System topic không dành cho custom publishing từ app. Thay vào đó, dùng custom topic để publish đến single endpoint, sau đó tạo subscriptions với advanced filtering (subject/type filters), và auth qua Entra ID access policies hoặc private endpoints. Điều này đáp ứng đầy đủ: scale cho thousands customers, filter trước processing, và single publish point.

📚 Tài liệu tham khảo (cập nhật đến 2025-2026)

Hy vọng phân tích này giúp bạn ôn thi hiệu quả! 🚀

Câu 369
You create an Azure subscription named Sub1. In Sub1, you create a custom Azure Event Grid topic named Topic1. Next, you create an Event Grid event subscription named EventSub1. EventSub1 uses Topic1 as the event source and a Web Hook as the endpoint.

You plan to enable dead-lettering in EventSub1.

You need to ensure that you can enable dead-lettering in EventSub1.

What should you do first?
  1. A Configure delivery properties of EventSub1.
  2. B Create an Azure Blob Storage container in Sub1.
  3. C Create an Azure Storage queue in Sub1.
  4. D Configure the retry policy of EventSub1.
Xem giải thích

🧩 Giải thích nội dung câu hỏi

Câu hỏi này tập trung vào Azure Event Grid – một dịch vụ quản lý sự kiện serverless của Microsoft Azure. Cụ thể:

  • Bạn đã tạo một Azure subscription tên Sub1.
  • Trong Sub1, tạo custom Event Grid topic tên Topic1 (đây là nguồn sự kiện tùy chỉnh).
  • Tạo Event Grid event subscription tên EventSub1, sử dụng Topic1 làm nguồn và Web Hook làm endpoint (điểm nhận sự kiện).
  • Kế hoạch: Enable dead-lettering cho EventSub1 – tính năng lưu trữ các sự kiện không thể giao thành công (dead-letter events) sau khi hết số lần thử lại (retry), giúp debug và xử lý sau.
  • Yêu cầu chính: Làm gì trước tiên (first) để có thể enable dead-lettering?

📘 Lưu ý quan trọng: Dead-lettering trong Azure Event Grid bắt buộc phải có một Azure Storage Account với Blob container làm nơi lưu dead-letter events. Không có container này, bạn không thể kích hoạt tính năng. Kiến thức dựa trên tài liệu Azure Event Grid cập nhật đến năm 2026 (phiên bản mới nhất: Event Grid Schema v2023-06-01 và sau, không thay đổi yêu cầu dead-letter storage).
Nguồn tham khảo:

✅ Đáp án đúng: Create an Azure Blob Storage container in Sub1

Lý do lựa chọn:
Để enable dead-lettering, bước đầu tiên và bắt buộc là tạo Azure Blob Storage container trong cùng subscription (Sub1). Event Grid sẽ lưu dead-letter events dưới dạng JSON blobs vào container này. Nếu không có container, tùy chọn dead-letter sẽ bị disabled trong portal/CLI/PowerShell/ARM template. Sau khi tạo, bạn mới có thể cấu hình deadLetterEndpoint (URL của container) trong EventSub1.
🛠️ Ví dụ quy trình: Tạo Storage Account → Tạo container (ví dụ: eventgrid-deadletter) → Update EventSub1 với dead-letter endpoint.

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

  • Configure delivery properties of EventSub1 ❌ SAI
    Delivery properties (như maxDeliveryAttempts, eventTimeToLiveInMinutes) chỉ dùng để cấu hình giao hàng sự kiện (retry policy, TTL), không liên quan đến dead-lettering. Bạn có thể config chúng mà không cần dead-letter, và chúng không enable được dead-letter. Dead-letter chỉ kích hoạt sau khi config storage container.

  • Create an Azure Blob Storage container in Sub1 ✅ ĐÚNG
    Như đã giải thích ở trên: Bước đầu tiên bắt buộc. Blob container là nơi lưu trữ dead-letter events. Phải ở cùng Sub1 để tránh cross-subscription issues. Sau bước này, mới enable dead-letter trong EventSub1.

  • Create an Azure Storage queue in Sub1 ❌ SAI
    Azure Storage queue dùng cho Queue Storage (FIFO messaging), không hỗ trợ dead-lettering của Event Grid. Event Grid chỉ chấp nhận Blob Storage container cho dead-letter (lưu file JSON). Queue dùng cho các tính năng khác như Event Grid Trigger in Azure Functions.

  • Configure the retry policy of EventSub1 ❌ SAI
    Retry policy (số lần thử lại, interval) là phần của delivery configuration, giúp giảm dead-letter events bằng cách thử lại tự động. Nhưng không enable dead-lettering – bạn vẫn cần Blob container trước. Retry chỉ quyết định khi nào event thành dead-letter, không phải lưu ở đâu.

Câu 370
Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.

After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.

You deploy an Azure Container Apps app and disable ingress on the container app.

Users report that they are unable to access the container app. You investigate and observe that the app has scaled to 0 instances.

You need to resolve the issue with the container app.

Solution: Enable ingress and configure the minimum replicas to 1 for the container app.

Does the solution meet the goal?
  1. A Yes
  2. B No
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 dạng series questions trong kỳ thi chứng chỉ (có thể là AZ-204 hoặc tương tự về Azure Developer), nơi mỗi câu hỏi trình bày một tình huống giống nhau nhưng giải pháp khác biệt. Sau khi trả lời, không thể quay lại, và không hiển thị trong màn hình review.

Tình huống cụ thể:

  • Bạn đã triển khai một ứng dụng Azure Container Apps và tắt ingress (không cho phép traffic từ bên ngoài vào app).
  • Người dùng báo lỗi không truy cập được ứng dụng.
  • Khi kiểm tra, ứng dụng đã scale xuống 0 instances (không có instance nào đang chạy).
  • Mục tiêu (goal): Khắc phục vấn đề để người dùng có thể truy cập ứng dụng.

Giải pháp đề xuất (Solution): Bật ingress và cấu hình minimum replicas = 1 cho container app.

Câu hỏi yêu cầu đánh giá: Giải pháp này có đạt được mục tiêu không? (Does the solution meet the goal?).

Bối cảnh kỹ thuật (dựa trên Azure Container Apps phiên bản mới nhất 2024-2026):
Azure Container Apps là dịch vụ serverless cho container, sử dụng KEDA (Kubernetes Event-Driven Autoscaling) để scale.

  • Ingress: Cổng vào cho traffic HTTP/HTTPS. Nếu tắt, app không nhận request từ ngoài → scaler HTTP không kích hoạt → app scale to zero (tiết kiệm chi phí).
  • Replicas: Số instance tối thiểu (min) và tối đa (max). Mặc định min=0, cho phép scale to zero nếu không có workload.
    Vấn đề gốc: Tắt ingress → không traffic → scale to 0 → không truy cập được.

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

✅ Đáp án đúng: Yes

Lý do lựa chọn:
Giải pháp hoàn toàn phù hợp và đạt mục tiêu! 🛠️

  • Bật ingress: Cho phép traffic từ người dùng vào app, kích hoạt HTTP scaler (KEDA) để scale up khi có request.
  • Cấu hình min replicas = 1: Đảm bảo luôn có ít nhất 1 instance sẵn sàng, tránh tình trạng scale to zero ngay cả khi traffic thấp. Kết hợp cả hai bước giải quyết triệt để vấn đề (không traffic + scale 0).
    Kết quả: Người dùng truy cập được ngay lập tức, app scale linh hoạt nhưng không "chết" ở 0 instances.

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

  • Yes ✅
    Đúng vì: Như phân tích trên, giải pháp trực tiếp khắc phục hai nguyên nhân gốc rễ: thiếu ingress (không nhận traffic) và min replicas=0 (dễ scale to zero). Theo docs Azure, đây là cách chuẩn để giữ app luôn "warm" (sẵn sàng) cho serverless container. Không có side-effect tiêu cực, phù hợp production.

  • No ❌
    Sai vì: Giải pháp rõ ràng hiệu quả, không phải "không đạt goal". Nếu chọn No, bạn đang bỏ qua cơ chế scaling KEDA của Azure Container Apps. Chỉ enable ingress thôi chưa đủ (vẫn có thể scale to zero nếu traffic thấp), nhưng kết hợp min=1 thì hoàn hảo. Không có lý do nào từ docs Azure để bác bỏ (không conflict policy hay limit quota).

Kết luận 🎯: Đây là giải pháp tối ưu cho Azure Container Apps! Nếu áp dụng thực tế, dùng Azure CLI: az containerapp ingress enable --min-replicas 1.