Chuyển đến nội dung chính

Bài đăng

Containerizing Web Apps trên Azure App Service

Trong bài viết này, mình sẽ hướng dẫn các bạn deploy web app trên Azure App Service sử dụng image. Trước tiên, chúng ta cần nhắc lại 1 số khái niệm: image, container, container registry, Azure App Service. Khái niệm Docker image : Một dạng tập hợp các file của ứng dụng, được tạo ra bởi Docker engine. Nội dung của các Docker image sẽ không bị thay đổi khi di chuyển. Docker image được dùng để chạy các Docker container. Do tính chất read-only của chúng, những images này đôi khi được gọi là snapshots. Container : một dạng runtime của các Docker image, dùng để làm môi trường chạy ứng dụng. Container Registry Container Registry là dịch vụ lưu trữ tập trung cho các Docker image. Container Registry giúp bạn dễ dàng quản lý, chia sẻ và triển khai các image container. Giả sử bạn có một ứng dụng web ASP.NET Core đơn giản. Bạn có thể sử dụng Docker để đóng gói ứng dụng này vào một image container. Sau đó, bạn có thể push image này lên Container Registry. Khi bạn muốn triển khai ứng dụng, bạn có th...

Microsoft Defender for Cloud

Trong bài viết này, mình sẽ giới thiệu về Microsoft Defender for Cloud, cách bật tắt và sử dụng Ms Defender cho Blob Storage Giới thiệu Microsoft Defender for Cloud là một nền tảng bảo vệ cloud-native application (CNAPP) được tạo thành từ các biện pháp và biện pháp bảo mật được thiết kế để bảo vệ các ứng dụng dựa trên cloud khỏi nhiều mối đe dọa và lỗ hổng mạng khác nhau Bật Microsoft Defender cho Blob Storage Bạn vào Azure Portal => Your blob Storage => Security + Networking => Microsoft Defender for Cloud => Settings => Bật các option từ Off => On Lưu ý bạn cần có quyền Administrator để thực hiện thay đổi settings này. Ngoài ra, bạn cần tạo Event Grid để nhận kết quả từ Microsoft Defender for Cloud  Tắt Microsoft Defender cho Blob Storage Bạn vào trang Microsoft Defender for Cloud > Environment settings > Your subscription. Switch value Defender for Storage plan thành Off => chọn Save Hướng dẫn nhận kết quả từ Microsoft Defender Chúng ta có các bước: Up...

Tạo Azure Web App bằng Azure CLI

Trên môi trường Azure, bạn mở Bash và gõ 2 câu lệnh sau: az appservice plan create --name <App service plan name> --resource-group <resource group name> az webapp create --resource-group <resource group name> --plan <App service plan name> --name <web app name> Thay đổi <resource group name> với resource group có sẵn. <web app name>: Tên web app duy nhất không trùng trong phạm vi Global

Azure Bicep

Bicep là gì? Azure Bicep là một ngôn ngữ triển khai Infrastructure as Code (IaC) dành cho Azure. Được thiết kế để thay thế cho JSON, Bicep giúp đơn giản hóa quá trình viết và duy trì các file mô tả cấu hình hạ tầng Azure. Nó cung cấp cú pháp đơn giản, đọc hiểu dễ dàng và hỗ trợ tính tái sử dụng mã nguồn. Tại sao phải sử dụng Bicep Bicep được thiết kế để thay thế cho ngôn ngữ ARM template, giúp giảm độ phức tạp của mã nguồn và cung cấp trải nghiệm phát triển tốt hơn.  Tham khảo thêm https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/overview?tabs=bicep#benefits-of-bicep Cú pháp cơ bản Azure Bicep cung cấp cú pháp đơn giản và hiệu quả để triển khai cấu hình hạ tầng trên Azure. Dưới đây là một số điểm quan trọng về cú pháp cơ bản, bao gồm khai báo biến, sử dụng vòng lặp, và ví dụ minh họa. var location = 'East US' var resourceGroupName = 'MyResourceGroup' Vòng lặp param storageAccountNames array = ['storage1', 'storage2', 'storage3...

ARM Template

ARM là gì? Azure Resource Manager (ARM) là một dịch vụ quản lý tài nguyên của Microsoft Azure. Nó là một framework cho phép bạn triển khai và quản lý tài nguyên trong môi trường Azure. ARM cung cấp một cách thức đơn giản và linh hoạt để triển khai và quản lý các tài nguyên của bạn trong Azure, từ máy ảo và dịch vụ lưu trữ đến các tài nguyên mạng và các thành phần khác. Declarative Programming là gì? Declarative programming là mô hình lập trình trong đó lập trình viên chỉ định kết quả mong muốn, thay vì chỉ định các bước cụ thể để đạt được kết quả đó. Mô hình này thường được sử dụng để viết các chương trình có logic đơn giản, hoặc các chương trình cần được tối ưu hóa về hiệu suất. Ví dụ: Với cách viết code thông thường (Imperative programming) let array = [1, 2, 3, 4, 5, 6] var reduced = 0 var filtered = [] for element in array { reduced += element if element % 2 == 1 { filtered.append(element) } } Viết theo kiểu Declarative Progrmming let array = [1, 2, 3, 4, 5, 6] let numb...

Azure Functions: Blob Index tag và metadata

Trong bài viết này, chúng ta sẽ đi qua các khái niệm về container, blobName, metadata và blob index. Từ đó chúng ta sẽ dễ dàng quản lý file trên container Container Container là một thư mục ảo để chứa các blob. Mỗi container phải có một tên duy nhất trong storage account BlobName BlobName là tên của một blob. BlobName phải là duy nhất trong container. Ví dụ khi bạn mở Properties của 1 blob file trên Azure Overview Blob: TEMP/026a9132-16a3-4f14-9186-bfcb0eff4d3e URL: https://abc-xyz.blob.core.windows.net/abc/TEMP/026a9132-16a3-4f14-9186-bfcb0eff4d3e ... Metadata Key Value ... Blob index tags Key Value ... Trong đó: container: abc blobName: TEMP/026a9132-16a3-4f14-9186-bfcb0eff4d3e Chúng ta triển khai hàm upload file như sau: //... var blobServiceClient = new BlobServiceClient(connectionString); _blobContainerClient = blobServiceClient.GetBlobContainerClient(containerName); //... public BlobClient Upload(byte[] data, string blobName, string containerName) { var binaryData ...

Interceptor trong ASP.NET MVC

Interceptor là một trong những khái niệm quan trọng trong lập trình, cho phép chúng ta mở rộng và thay đổi hành vi của các phương thức mà không phải sửa đổi code nguồn gốc. Trong bài viết này, chúng ta sẽ khám phá cách sử dụng Interceptor trong Autofac, một container dependency injection phổ biến trong cộng đồng .NET. Mình minh họa bằng .NET Framework, các bạn dựa theo đó làm cho ví dụ .NET nha Giới thiệu về Interceptor Interceptor là một cơ chế cho phép chúng ta "giữ lại" việc gọi một phương thức và thực hiện các hành động nào đó trước và sau khi phương thức đó được gọi. Điều này thường được sử dụng để thêm logic chung, theo dõi, đo lường hoặc thậm chí thay đổi hành vi của các phương thức. Cài đặt Tạo Project ASP.NET MVC. Sau đó, cài đặt các package sau: Install-Package Autofac.Extensions.DependencyInjection Install-Package Autofac.Mvc5 Autofac.Extras.DynamicProxy Bạn cần có service và 1 interceptor để gắn vào service đó. Thêm IMessageService và MessageService public inte...