Cấu hình Azure App Service
Khi ứng dụng đã được triển khai, bước tiếp theo là cấu hình các khía cạnh khác nhau của Azure App Service để đảm bảo ứng dụng chạy tối ưu và an toàn. Phần này sẽ đề cập tên miền tùy chỉnh, xác thực và cài đặt ứng dụng.
Cấu hình tên miền tùy chỉnh
Theo mặc định, App Service của bạn truy cập qua URL như your-app-name.azurewebsites.net. Với ứng dụng sản xuất, bạn sẽ muốn dùng tên miền riêng. Cách thiết lập tên miền tùy chỉnh:
- Mua tên miền từ nhà đăng ký nếu bạn chưa có
- Trong App Service, vào "Custom domains" ở thanh bên trái
- Nhấp "Add custom domain"
- Nhập tên miền của bạn (ví dụ,
myapp.example.com) - Làm theo hướng dẫn để xác minh quyền sở hữu tên miền
- Bạn cần thêm bản ghi
TXThoặcCNAMEvào cài đặt DNS

Với tên miền gốc (như example.com không có www), bạn cần tạo bản ghi A trỏ tới địa chỉ IP của App Service. Bạn có thể tìm IP này trong trang cấu hình tên miền tùy chỉnh.
Bạn cũng có thể quản lý tên miền tùy chỉnh bằng Azure CLI:
# Add a custom domain
az webapp config hostname add --webapp-name MyWebApp --resource-group MyResourceGroup --hostname www.example.com
Gắn chứng chỉ SSL
Với ứng dụng cần bảo mật, đặc biệt xử lý dữ liệu nhạy cảm, bật HTTPS là điều thiết yếu. Azure App Service giúp việc này đơn giản nhờ cung cấp chứng chỉ quản lý miễn phí hoặc cho phép bạn tải chứng chỉ riêng lên.
Thêm chứng chỉ SSL:
- Trong App Service, vào "TLS/SSL settings"
- Chọn "Private Key Certificates"
- Chọn một trong các tùy chọn:
- Tạo chứng chỉ do App Service quản lý miễn phí
- Nhập chứng chỉ App Service
- Tải lên chứng chỉ PFX
- Khi đã thêm chứng chỉ, vào "Bindings"
- Thêm binding SSL cho tên miền tùy chỉnh
Với ứng dụng dữ liệu xử lý thông tin nhạy cảm, tôi khuyên bật chế độ chỉ HTTPS để mọi lưu lượng đều được mã hóa:
- Trong "TLS/SSL settings", vào phần "HTTPS Only"
- Gạt công tắc sang "On"
- Nhấp "Save"
Cấu hình xác thực và ủy quyền
Nhiều ứng dụng dữ liệu yêu cầu xác thực người dùng để kiểm soát truy cập dữ liệu hoặc chức năng nhạy cảm. Azure App Service cung cấp các tùy chọn xác thực tích hợp sẵn, giúp bạn không phải tự hiện thực logic xác thực trong code.
Thiết lập xác thực:
- Trong App Service, vào "Authentication" ở thanh bên trái
- Nhấp "Add identity provider"
- Chọn nhà cung cấp danh tính:
- Microsoft (Azure AD)
- GitHub
- OpenID Connect
- Cấu hình cài đặt cho nhà cung cấp
- Thiết lập URL chuyển hướng và cấu hình lưu trữ token

Với ứng dụng dữ liệu doanh nghiệp, Azure Active Directory thường là lựa chọn ưu tiên vì tích hợp với danh tính nội bộ và hỗ trợ tính năng như truy cập có điều kiện và xác thực đa yếu tố.
Bạn cũng có thể cấu hình hạn chế ủy quyền để kiểm soát ai có thể truy cập ứng dụng:
- Trong cài đặt Authentication, chọn "Edit" cạnh nhà cung cấp danh tính của bạn
- Trong "Restrict access", chọn một trong các tùy chọn:
- Cho phép yêu cầu chưa xác thực
- Yêu cầu xác thực
- Cho phép yêu cầu ẩn danh (không thực hiện gì)
- Cấu hình URL chuyển hướng ngoài được phép nếu cần
App settings và chuỗi kết nối
Chúng ta đã điểm qua app settings trước đó, giờ cùng xem kỹ cách dùng chúng để cấu hình hiệu quả ứng dụng dữ liệu.
App settings trong Azure App Service hoạt động như biến môi trường cho ứng dụng. Chúng đặc biệt hữu ích cho:
- Chuỗi kết nối cơ sở dữ liệu
- Khóa API
- Cờ tính năng (feature flags)
- Cấu hình theo môi trường
Thêm hoặc sửa app settings:
- Trong App Service, vào "Configuration" ở thanh bên trái
- Chọn tab "Application settings"
- Nhấp "New application setting" để thêm cặp khóa-giá trị
- Với giá trị nhạy cảm, bạn có thể bật tùy chọn "deployment slot setting" để tránh bị hoán đổi khi swap slot

Với ứng dụng dữ liệu, các cài đặt phổ biến gồm:
- Chuỗi kết nối cơ sở dữ liệu
- Khóa truy cập tài khoản lưu trữ
- Endpoint mô hình máy học
- Cờ tính năng cho A/B testing
Bạn cũng có thể cấu hình riêng chuỗi kết nối, hữu ích cho kết nối cơ sở dữ liệu:
- Trong trang Configuration, chọn tab "Connection strings"
- Nhấp "New connection string"
- Cung cấp tên, giá trị và loại (SQL Server, MySQL, PostgreSQL, v.v.)
Chuỗi kết nối cũng khả dụng như biến môi trường trong ứng dụng, nhưng có quy ước đặt tên khác nhau tùy ngôn ngữ/framework.
Lấy cài đặt trong ứng dụng Python của bạn:
import os
# Retrieve an application setting
api_key = os.environ.get('API_KEY')
# Retrieve a connection string (Python)
connection_string = os.environ.get('SQLCONNSTR_MyDatabase')
Dùng tham chiếu Key Vault
Với thông tin cực kỳ nhạy cảm như thông tin đăng nhập cơ sở dữ liệu hoặc khóa API, Azure Key Vault cung cấp lớp bảo mật bổ sung. Bạn có thể tham chiếu bí mật Key Vault trực tiếp trong app settings:
- Tạo Azure Key Vault và thêm bí mật của bạn
- Đảm bảo App Service của bạn có managed identity
- Cấp quyền truy cập Key Vault cho identity đó
- Trong app settings, tham chiếu bí mật theo định dạng: @Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)
Cách này tách biệt thông tin nhạy cảm khỏi cấu hình ứng dụng và cung cấp quản lý bí mật tập trung.
Mở rộng và Quản lý Azure App Service
Khi ứng dụng đã được triển khai và cấu hình, hãy tập trung bảo đảm hiệu năng, độ tin cậy và khả năng thích ứng với tải công việc thay đổi.
Quản lý và mở rộng Azure App Service đúng cách đặc biệt quan trọng với ứng dụng dữ liệu, vốn thường có nhu cầu tài nguyên biến động và có thể xử lý thông tin nhạy cảm.
Mở rộng App Service plan
Một ưu điểm lớn của nền tảng đám mây như Azure là khả năng tăng/giảm tài nguyên theo nhu cầu. Với ứng dụng dữ liệu, điều này đặc biệt giá trị vì khối lượng công việc thường biến thiên mạnh, từ giai đoạn xử lý dữ liệu nặng đến khoảng thời gian ít lưu lượng.
Azure App Service cung cấp hai phương pháp mở rộng chính:
Mở rộng theo chiều dọc (Scale up/down)
Scale dọc là thay đổi kích thước App Service plan để cung cấp nhiều/ít CPU, bộ nhớ và dung lượng đĩa hơn. Hữu ích khi hiệu năng ứng dụng bị giới hạn bởi tài nguyên của một phiên bản duy nhất.
Cách scale dọc:
- Trong App Service plan, chọn "Scale up (App Service plan)" ở thanh bên trái
- Chọn bậc giá hoặc kích thước instance khác theo nhu cầu
- Nhấp "Apply"

Với ứng dụng dữ liệu, hãy cân nhắc scale dọc khi:
- Ứng dụng gặp áp lực bộ nhớ do xử lý dữ liệu lớn
- Bạn chạm ngưỡng CPU trong lúc suy luận mô hình
- Bạn cần thêm dung lượng lưu trữ cho cache dữ liệu hoặc tệp tạm
Mở rộng theo chiều ngang (Scale out/in)
Scale ngang là thay đổi số lượng máy ảo chạy ứng dụng của bạn. Cách này lý tưởng để phân phối tải và cải thiện tính sẵn sàng.
Cách scale ngang:
- Trong App Service plan, chọn "Scale out (App Service plan)" ở thanh bên trái
- Thiết lập số lượng instance thủ công hoặc cấu hình quy tắc tự động mở rộng
- Nhấp "Save"
Với scale thủ công, chỉ cần điều chỉnh số lượng instance theo mong muốn. Tuy nhiên, auto-scaling linh hoạt hơn khi tự động điều chỉnh tài nguyên dựa trên chỉ số.
Thiết lập quy tắc tự động mở rộng
Auto-scaling đặc biệt hữu ích cho ứng dụng dữ liệu có tải biến động. Ví dụ, API phục vụ mô hình ML có thể có lưu lượng cao vào giờ hành chính và thấp hơn ban đêm.
Cấu hình auto-scaling:
- Trong phần "Scale out", chọn "Enable autoscale"
- Định nghĩa điều kiện scale với các thành phần:
- Số instance mặc định
- Quy tắc scale-out (khi nào thêm instance)
- Quy tắc scale-in (khi nào bớt instance)
- Quy tắc theo lịch (tùy chọn)

Ví dụ quy tắc auto-scaling phổ biến:
- Scale out: Thêm 1 instance khi CPU > 70% trong 10 phút
- Scale in: Giảm 1 instance khi CPU < 30% trong 10 phút
Bạn cũng có thể tạo quy tắc tinh vi hơn dựa trên:
- Mức sử dụng bộ nhớ
- Độ dài hàng đợi dữ liệu
- Chỉ số tùy chỉnh từ Application Insights
Với workload khoa học dữ liệu, cân nhắc các chiến lược auto-scaling sau:
- Nếu ứng dụng phục vụ mô hình ML, scale dựa trên độ dài hàng đợi yêu cầu để giữ độ trễ dự đoán thấp
- Với quy trình ETL, lên lịch tăng công suất trong khung giờ xử lý đã biết
- Với ứng dụng có người dùng toàn cầu, dùng scale theo lịch để đảm bảo đủ công suất theo múi giờ
Bạn cũng có thể cấu hình auto-scaling bằng Azure CLI:
# Create an autoscale setting with a rule to scale out when CPU > 70%
az monitor autoscale create --resource-group MyResourceGroup --resource MyAppServicePlan --resource-type "Microsoft.Web/serverfarms" --name MyAutoScaleConfig --min-count 2 --max-count 5 --count 2
# Add a scale out rule
az monitor autoscale rule create --resource-group MyResourceGroup --autoscale-name MyAutoScaleConfig --scale out 1 --condition "Percentage CPU > 70 avg 10m"
# Add a scale in rule
az monitor autoscale rule create --resource-group MyResourceGroup --autoscale-name MyAutoScaleConfig --scale in 1 --condition "Percentage CPU < 30 avg 10m"
Giám sát và Chẩn đoán
Giám sát hiệu quả là chìa khóa để duy trì ứng dụng dữ liệu ổn định. Azure cung cấp bộ công cụ giám sát toàn diện cho phép bạn nắm bắt hiệu năng, mẫu sử dụng và vấn đề tiềm ẩn của ứng dụng.
Azure Monitor và Application Insights
Azure Monitor là nền tảng giám sát các dịch vụ Azure, còn Application Insights cung cấp thông tin chuyên sâu ở cấp ứng dụng.
Bật Application Insights cho App Service:
- Trong App Service, chọn "Application Insights" ở thanh bên trái
- Nhấp "Turn on Application Insights"
- Cấu hình tài nguyên Application Insights mới hoặc hiện có
- Nhấp "Apply"

Sau khi bật, Application Insights thu thập nhiều dữ liệu về ứng dụng, bao gồm:
- Tốc độ yêu cầu, thời gian phản hồi và tỷ lệ lỗi
- Các lệnh gọi phụ thuộc (cơ sở dữ liệu, API ngoài)
- Hiệu năng lượt xem trang
- Log ngoại lệ
- Sự kiện tùy chỉnh bạn định nghĩa trong code
Với ứng dụng Python, bạn cần cài SDK Application Insights:
pip install opencensus-ext-azure
Sau đó thêm mã đo đạc vào ứng dụng:
from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer
# Configure the Azure exporter
azure_exporter = AzureExporter(
connection_string='InstrumentationKey=00000000-0000-0000-0000-000000000000'
)
# Create a tracer
tracer = Tracer(exporter=azure_exporter, sampler=ProbabilitySampler(1.0))
# Use the tracer in your application
with tracer.span(name="main_function"):
# Your code here
pass
Xem log và thiết lập cảnh báo
Azure App Service tự động thu thập log giúp bạn chẩn đoán vấn đề:
- Trong App Service, chọn "Log stream" để xem log thời gian thực
- Để phân tích chi tiết hơn, vào "Diagnostic logs" và bật application logging
- Cấu hình mức log (Error, Warning, Information, Verbose)

Với ứng dụng dữ liệu, chú ý đặc biệt đến:
- Ngoại lệ hết bộ nhớ (thường gặp khi xử lý tập dữ liệu lớn)
- Timeout kết nối tới nguồn dữ liệu
- Nút thắt cổ chai hiệu năng trong thao tác biến đổi dữ liệu
Thiết lập cảnh báo đảm bảo bạn được thông báo trước khi sự cố ảnh hưởng người dùng:
- Trong Azure Monitor, chọn "Alerts"
- Nhấp "New alert rule"
- Chọn App Service của bạn làm tài nguyên
- Định nghĩa điều kiện kích hoạt cảnh báo
- Cấu hình action groups để xác định ai và bằng cách nào sẽ được thông báo
- Đặt tên cảnh báo và lưu
Các cảnh báo phổ biến cho ứng dụng dữ liệu gồm:
- Mức sử dụng bộ nhớ cao (>80%)
- Lỗi máy chủ (phản hồi 5xx)
- Thời gian xử lý dài cho thao tác quan trọng
- Kết nối dữ liệu thất bại
Giám sát tùy chỉnh cho ứng dụng dữ liệu
Với nhu cầu giám sát đặc thù dữ liệu, hãy theo dõi các chỉ số tùy chỉnh sau:
- Thông lượng xử lý dữ liệu (bản ghi/phút)
- Độ trễ suy luận mô hình
- Thời gian tính toán đặc trưng (feature)
- Tỷ lệ cache hit/miss
Bạn có thể gửi chỉ số tùy chỉnh tới Application Insights bằng SDK:
from opencensus.ext.azure import metrics_exporter
from opencensus.stats import aggregation, measure, stats, view
# Create a metrics exporter
exporter = metrics_exporter.new_metrics_exporter(
connection_string='InstrumentationKey=00000000-0000-0000-0000-000000000000')
# Create and record custom metrics
prediction_time = measure.MeasureFloat(
"prediction_time", "Time taken for model inference", "ms")
prediction_time_view = view.View(
"prediction_time_view", "Model inference time", [], prediction_time, aggregation.LastValueAggregation())
# Register the view
stats.stats.view_manager.register_view(prediction_time_view)
# Record metrics
mmap = stats.stats.stats_recorder.new_measurement_map()
mmap.measure_float_put(prediction_time, 175.5) # Record 175.5ms inference time
mmap.record()
# Force metrics to be sent immediately
exporter.export_metrics([])
Sao lưu và Khôi phục
Ứng dụng dữ liệu thường quản lý thông tin giá trị, nên khả năng sao lưu và khôi phục là thiết yếu. Azure App Service cung cấp tính năng sao lưu tích hợp để ghi nhận tệp ứng dụng, cấu hình và cơ sở dữ liệu được kết nối.
Thiết lập sao lưu tự động
Cấu hình sao lưu:
- Trong App Service, chọn "Backups" ở thanh bên trái
- Nhấp "Configure"
- Đặt lịch sao lưu (hàng ngày, hàng tuần, hoặc tùy chỉnh)
- Chỉ định tài khoản lưu trữ cho tệp sao lưu
- Tùy chọn bao gồm cơ sở dữ liệu trong sao lưu
- Nhấp "Save"

Với ứng dụng dữ liệu, cân nhắc các thông lệ tốt cho sao lưu:
- Lên lịch sao lưu vào thời điểm ít hoạt động
- Đảm bảo tài khoản lưu trữ cùng vùng với App Service để sao lưu nhanh hơn
- Với ứng dụng có dữ liệu thay đổi thường xuyên, thiết lập sao lưu thường xuyên hơn
- Lưu ý cơ sở dữ liệu lớn có thể vượt giới hạn kích thước sao lưu; hãy cân nhắc chiến lược sao lưu riêng cho cơ sở dữ liệu
Khôi phục từ bản sao lưu
Nếu cần khôi phục ứng dụng:
- Trong phần Backups, chọn điểm sao lưu muốn khôi phục
- Nhấp "Restore"
- Chọn khôi phục nội dung app, cấu hình và cơ sở dữ liệu được kết nối hay không
- Chỉ định App Service đích (có thể là app hiện tại hoặc app khác)
- Nhấp "OK" để bắt đầu quá trình khôi phục
Với ứng dụng dữ liệu quan trọng, tôi khuyên định kỳ kiểm thử quy trình khôi phục để đảm bảo chiến lược phục hồi hoạt động như mong đợi.
Chiến lược sao lưu riêng cho cơ sở dữ liệu
Dù App Service backup có thể bao gồm cơ sở dữ liệu kết nối, ứng dụng dữ liệu chuyên sâu thường hưởng lợi từ chiến lược sao lưu riêng cho cơ sở dữ liệu:
- Với Azure SQL, cấu hình sao lưu tự động với khôi phục theo thời điểm
- Với Cosmos DB, dùng chế độ sao lưu liên tục
- Với bộ dữ liệu lớn lưu trên Azure Storage, cân nhắc sao chép và phiên bản hóa tài khoản lưu trữ
Bảo mật và Tuân thủ trong Azure App Service
Bảo mật là tối quan trọng với ứng dụng dữ liệu, đặc biệt khi xử lý thông tin nhạy cảm hoặc chịu quy định. Azure App Service cung cấp nhiều tính năng bảo mật để bảo vệ ứng dụng của bạn.
Kiểm soát truy cập dựa trên vai trò (RBAC)
RBAC cho phép bạn kiểm soát ai có thể quản lý tài nguyên App Service:
- Trong Azure Portal, điều hướng đến App Service của bạn
- Chọn "Access control (IAM)" ở thanh bên trái
- Nhấp "Add" rồi "Add role assignment"
- Chọn vai trò phù hợp:
- Contributor: Có thể quản lý App Service nhưng không cấp quyền cho người khác
- Reader: Chỉ xem, không thể thay đổi
- Website Contributor: Quản lý website nhưng không quản lý App Service plan
- Chọn người dùng, nhóm, hoặc service principal để gán vai trò
- Nhấp "Save"

Với các nhóm dữ liệu, hãy cân nhắc tạo vai trò tùy chỉnh giới hạn quyền theo trách nhiệm công việc.
Giới hạn IP và kết nối mạng
Giới hạn IP cho phép bạn kiểm soát địa chỉ IP nào có thể truy cập App Service:
- Trong App Service, chọn "Networking" ở thanh bên trái
- Vào "Access Restrictions"
- Nhấp "Add rule"
- Chỉ định dải địa chỉ IP, hành động (Allow/Deny), độ ưu tiên và tên
- Nhấp "Add rule"
Với ứng dụng dữ liệu kết nối tài nguyên nội bộ, hãy cân nhắc:
- VNet Integration: Kết nối App Service vào mạng ảo của bạn
- Service Endpoints: Bảo mật kết nối tới dịch vụ Azure như SQL và Storage
- Private Endpoints: Tạo liên kết riêng tới App Service từ mạng ảo
Thiết lập VNet Integration:
- Trong phần Networking, chọn "VNet Integration"
- Nhấp "Add VNet"
- Chọn hoặc tạo mạng ảo và subnet
- Nhấp "OK"
Tích hợp này đặc biệt hữu ích để kết nối an toàn tới cơ sở dữ liệu hoặc nguồn dữ liệu trong mạng của bạn.
Khắc phục Sự cố Thường gặp với Azure App Service
Dù lập kế hoạch cẩn thận, sự cố vẫn có thể xảy ra với App Service. Dưới đây là các vấn đề thường gặp và cách giải quyết, tập trung vào bối cảnh ứng dụng dữ liệu.
Chẩn đoán ứng dụng bị sập
Nếu ứng dụng bị sập hoặc không phản hồi:
- Kiểm tra log App Service:
- Vào "Log stream" để xem log thời gian thực
- Xem "Diagnostic logs" cho dữ liệu lịch sử
- Dùng Application Insights để xác định ngoại lệ
- Chạy công cụ chẩn đoán Kudu:
- Đi tới
https://<your-app-name>.scm.azurewebsites.net/DebugConsole - Dùng console để kiểm tra tệp và tiến trình
Nguyên nhân phổ biến khiến ứng dụng dữ liệu sập gồm:
- Giới hạn bộ nhớ: Xử lý tập dữ liệu lớn vượt quá bộ nhớ sẵn có
- Vấn đề phụ thuộc: Thiếu hoặc gói không tương thích
- Lỗi cấu hình: Chuỗi kết nối hoặc biến môi trường không đúng
Với thao tác ngốn bộ nhớ, hãy cân nhắc:
- Scale lên bậc cao hơn có nhiều bộ nhớ hơn
- Triển khai xử lý theo lô nhỏ (chunking)
- Dùng thuật toán hoặc cấu trúc dữ liệu hiệu quả hơn
Gỡ lỗi vấn đề hiệu năng
Nếu ứng dụng chạy chậm:
- Dùng giám sát hiệu năng của Application Insights:
- Kiểm tra bảng Performance để xác định yêu cầu chậm
- Tìm các lệnh gọi phụ thuộc có thể gây nút thắt
- Xem chỉ số máy chủ trong Azure Monitor:
- CPU và bộ nhớ sử dụng
- Độ dài hàng đợi HTTP
- Kiểm tra hiệu năng truy vấn cơ sở dữ liệu cho thao tác nặng dữ liệu
Cải thiện hiệu năng:
- Triển khai cache cho truy vấn lặp lại
- Tối ưu chỉ mục cơ sở dữ liệu
- Cân nhắc scale lên hoặc scale ngang
- Dùng xử lý bất đồng bộ cho tác vụ chạy lâu
Xem lại log và thông báo lỗi
Azure App Service cung cấp nhiều tùy chọn logging:
- Application logs: Log của chính ứng dụng bạn
- Web server logs: Log yêu cầu HTTP và lỗi
- Deployment logs: Thông tin về quá trình triển khai
- Detailed error logging: Thông tin chi tiết hơn về lỗi HTTP
Cấu hình logging chi tiết hơn:
- Trong App Service, vào "Diagnostic logs"
- Bật các loại log phù hợp
- Đặt mức phù hợp (Error, Warning, Information, Verbose)
- Chọn lưu log trong hệ thống tệp hoặc blob storage
Với ứng dụng Python, bạn có thể tăng cường logging bằng:
import logging
import sys
# Configure logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.StreamHandler(sys.stdout)
]
)
# Use logging in your application
logger = logging.getLogger(__name__)
logger.info("Processing data batch")
logger.error("Failed to connect to database", exc_info=True)
Quản lý Chi phí với Azure App Service
Ứng dụng dữ liệu thường tiêu thụ đáng kể tài nguyên, nên hiểu và tối ưu chi phí đặc biệt quan trọng. Phần cuối này sẽ phân tích mô hình giá Azure App Service và chiến lược quản lý chi phí hiệu quả.
Tìm hiểu giá Azure App Service
Giá Azure App Service chủ yếu dựa trên App Service plan bạn chọn. Hãy phân tách các yếu tố chi phí cần cân nhắc:
Các bậc App Service plan
Như đã đề cập, Azure cung cấp nhiều bậc giá, mỗi bậc có khả năng và chi phí khác nhau:
|
Tier |
Monthly cost range (USD) |
Features |
Best for |
|
Free |
$0 |
1GB storage, shared infrastructure, 60 minutes/day compute |
Development, learning |
|
Shared (D1) |
$10-15 |
1GB storage, 240 minutes/day compute |
Low-traffic sites, testing |
|
Basic (B1-B3) |
$55-220 |
Dedicated VMs, manual scale, custom domains |
Production workloads, low to medium traffic |
|
Standard (S1-S3) |
$70-400 |
Auto-scaling, staging slots, daily backups |
Production apps with variable traffic |
|
Premium (P1V2-P3V2) |
$80-500 |
Enhanced performance, more scaling options |
High-performance needs, large applications |
|
Isolated |
$300-1000+ |
Dedicated network/compute isolation |
Applications with strict compliance requirements |
Lưu ý: Giá mang tính ước lượng và có thể thay đổi theo vùng hoặc khi Azure điều chỉnh. Để có thông tin mới nhất, xem trang giá chính thức.
Yếu tố chi phí bổ sung
Ngoài App Service plan cơ bản, cân nhắc thêm các chi phí sau:
- Truyền dữ liệu đi: Sau 5GB đầu tiên mỗi tháng (miễn phí), truyền dữ liệu đi sẽ bị tính phí. Với ứng dụng dữ liệu phục vụ bộ dữ liệu lớn cho người dùng, chi phí này có thể đáng kể.
- Chứng chỉ SSL: Dù Azure cung cấp chứng chỉ miễn phí, chứng chỉ tùy chỉnh sẽ có chi phí kèm theo.
- Tên miền tùy chỉnh: Tên miền tùy chỉnh đầu tiên miễn phí, nhưng các tên miền bổ sung có thể tính phí.
- Lưu trữ: Dung lượng bổ sung ngoài phần bao gồm trong bậc của bạn sẽ tính phí thêm.
- Add-on và dịch vụ kết nối: Cơ sở dữ liệu, dịch vụ cache và tài nguyên Azure khác kết nối với App Service sẽ có chi phí riêng.
Giám sát chi phí
Azure cung cấp công cụ để theo dõi và dự báo chi tiêu:
- Azure cost management: Truy cập trong Azure Portal để xem chi phí theo tài nguyên, đặt ngân sách và tạo cảnh báo.
- Pricing calculator: Dùng Azure Pricing Calculator để ước tính chi phí trước khi triển khai.
- Khuyến nghị từ Advisor: Azure Advisor cung cấp đề xuất tối ưu chi phí dựa trên mẫu sử dụng của bạn.
> Để quản lý hiệu quả chi phí, bảo mật và hiệu năng trên các dịch vụ Azure, khóa học Azure Management and Governance này rất đáng khuyến nghị.
Chiến lược tối ưu chi phí
Sau khi hiểu mô hình giá, hãy xem các chiến lược tối ưu chi phí cho ứng dụng dữ liệu trên Azure App Service.
Chọn kích thước App Service plan phù hợp
Cách hiệu quả nhất để kiểm soát chi phí là đảm bảo bạn dùng App Service plan phù hợp:
- Bắt đầu với mức nền hợp lý: Thay vì mặc định chọn bậc cao, hãy bắt đầu với bậc trung bình và chỉ scale lên khi cần.
- Theo dõi sử dụng tài nguyên: Dùng Azure Monitor theo dõi CPU, bộ nhớ, đĩa. Nếu liên tục dưới 50% sử dụng, cân nhắc giảm kích thước.
- Phù hợp bậc với tải công việc: Với ứng dụng dữ liệu có tải ổn định, có thể dùng bậc Basic hoặc Standard. Dành bậc Premium cho nhu cầu hiệu năng khắt khe.
Với ứng dụng khoa học dữ liệu, cân nhắc khuyến nghị sau:
- API phục vụ mô hình yêu cầu độ trễ thấp nhưng lưu lượng vừa phải thường phù hợp với bậc Standard có auto-scaling.
- Pipeline xử lý dữ liệu chạy theo lịch có thể dùng bậc Basic nếu thời gian xử lý không quá quan trọng.
- Bảng điều khiển tương tác với nhiều người dùng đồng thời thường cần bậc Standard hoặc Premium để giữ độ phản hồi.
Dùng auto-scaling hiệu quả
Auto-scaling không chỉ để xử lý đột biến lưu lượng—nó còn là công cụ tối ưu chi phí mạnh mẽ:
- Scale về 0 khi có thể: Với môi trường không quan trọng hoặc phát triển, cân nhắc giảm về tối thiểu 0 instance trong giờ thấp điểm.
- Đặt ngưỡng scale phù hợp: Đừng scale out quá mạnh. Bắt đầu với ngưỡng thận trọng (như 70% CPU) và điều chỉnh dựa trên quan sát hiệu năng.
- Triển khai scale theo lịch: Với tải dự đoán được, dùng quy tắc theo lịch thay vì auto-scaling theo chỉ số. Ví dụ, scale lên giờ hành chính và giảm vào ban đêm/cuối tuần.
# Example: Create a scheduled autoscale rule to scale down at night
az monitor autoscale rule create --resource-group MyResourceGroup --autoscale-name MyAutoScaleConfig --scale to 1 --condition "Current time is between 22:00 and 06:00 recurring"
Tối ưu môi trường phát triển và kiểm thử
Môi trường phát triển và kiểm thử mang lại cơ hội tiết kiệm chi phí lớn:
- Dùng bậc Free hoặc Shared cho môi trường phát triển khi có thể.
- Bật tự động tắt cho môi trường không sản xuất trong giờ thấp điểm. Dù App Service không có tính năng tắt sẵn, bạn có thể dùng Azure Automation hoặc Logic Apps để dừng/chạy app theo lịch.
- Tận dụng deployment slot hiệu quả: Thay vì duy trì môi trường staging riêng, dùng deployment slots trong một App Service sản xuất. Cách này cho phép hoán đổi môi trường mà không nhân đôi chi phí.
# Create a staging slot
az webapp deployment slot create --name MyWebApp --resource-group MyResourceGroup --slot staging
# Swap staging to production
az webapp deployment slot swap --name MyWebApp --resource-group MyResourceGroup --slot staging --target-slot production
Tối ưu chi phí đặc thù dữ liệu
Với ứng dụng dữ liệu, cân nhắc các hướng tiết kiệm chuyên biệt:
- Chuyển khối xử lý nặng ra ngoài: Thay vì xử lý dữ liệu nặng trong App Service, cân nhắc dùng Azure Functions (xử lý serverless) hoặc Azure Data Factory (ETL).
- Triển khai cache: Với dữ liệu ít thay đổi, triển khai cache để giảm truy vấn DB và tính toán. Azure Cache for Redis tích hợp tốt với App Service.
- Tối ưu chi phí cơ sở dữ liệu: Thường DB kết nối với App Service tốn nhiều hơn App Service. Cân nhắc:
- Dùng elastic pool cho SQL
- Triển khai chỉ mục phù hợp
- Dùng lưu trữ phân tầng cho dữ liệu ít truy cập
- Nén phản hồi: Với ứng dụng phục vụ tập dữ liệu lớn cho người dùng, bật nén để giảm chi phí truyền dữ liệu ra:
# Example for Flask applications
from flask import Flask
from flask_compress import Compress
app = Flask(__name__)
Compress(app)
Kỹ thuật Nâng cao cho Ứng dụng Dữ liệu
Ngoài tối ưu chi phí, có nhiều kỹ thuật nâng cao để tăng hiệu năng và khả năng của ứng dụng dữ liệu trên Azure App Service.
Đóng gói container cho ứng dụng dữ liệu
Container mang lại tính nhất quán giữa các môi trường và đơn giản hóa quản lý phụ thuộc—thách thức phổ biến với ứng dụng dữ liệu phức tạp:
- Trong Azure Portal, tạo Web App mới
- Chọn "Docker Container" thay vì "Code" ở tùy chọn publish
- Chọn Single Container và chỉ định ảnh Docker của bạn
Với ứng dụng khoa học dữ liệu, hãy duy trì ảnh container nền với các thư viện thường dùng như NumPy, pandas, scikit-learn để tăng tốc triển khai.
Triển khai CI/CD cho quy trình dữ liệu
Vượt lên CI/CD cơ bản, hãy triển khai kiểm thử tự động dành riêng cho ứng dụng dữ liệu:
- Kiểm thử xác thực dữ liệu: Xác minh xử lý dữ liệu cho kết quả như mong đợi
- Kiểm thử hiệu năng mô hình: Đảm bảo mô hình ML đạt ngưỡng chính xác và hiệu năng
- Kiểm thử tải: Xác thực ứng dụng xử lý được khối lượng dữ liệu kỳ vọng
Ví dụ workflow GitHub Actions cho ứng dụng dữ liệu:
name: Data App CI/CD
on:
push:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.8'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pytest pytest-cov
- name: Test with pytest
run: |
pytest tests/data_validation_tests.py
pytest tests/model_performance_tests.py
deploy:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Deploy to Azure
uses: azure/webapps-deploy@v2
with:
app-name: 'my-data-app'
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
Dùng WebJobs cho xử lý nền
Với ứng dụng dữ liệu cần xử lý nền, Azure WebJobs cho phép chạy script/chương trình trong cùng ngữ cảnh với App Service:
- Trong App Service, vào "WebJobs" ở thanh bên trái
- Nhấp "Add"
- Tải tệp script (ví dụ, script Python xử lý dữ liệu)
- Chọn kiểu kích hoạt (thủ công, theo lịch, hoặc liên tục)
- Nhấp "OK"
WebJobs đặc biệt hữu ích cho:
- Dọn dẹp dữ liệu theo lịch
- Tạo báo cáo định kỳ
- Huấn luyện lại mô hình định kỳ
- Đồng bộ dữ liệu giữa các hệ thống
Kết nối lai cho dữ liệu on-premises
Nhiều tổ chức có dữ liệu vẫn ở on-premises. Azure App Service có thể kết nối tới dữ liệu này bằng:
- VNet integration: Kết nối App Service tới mạng ảo có kết nối đến mạng on-premises qua ExpressRoute hoặc VPN.
- Hybrid connections: Phương án đơn giản hơn không cần VPN, cho phép App Service truy cập máy chủ on-premises cụ thể theo hostname và cổng.
Thiết lập Hybrid Connections:
- Trong App Service, chọn "Networking" ở thanh bên trái
- Vào "Hybrid Connections"
- Nhấp "Add hybrid connection"
- Tạo mới hoặc dùng kết nối hiện có
- Chỉ định hostname và cổng endpoint
- Cài Hybrid Connection Manager trên máy chủ on-premises
Triển khai feature flag cho ứng dụng dữ liệu
Feature flag cho phép bật/tắt có chọn lọc chức năng, hữu ích cho A/B testing tính năng dữ liệu hoặc triển khai dần mô hình mới:
{
"FeatureFlags": {
"NewRecommendationModel": false,
"AdvancedDataFiltering": true
}
}
Đọc các cờ này trong code của bạn:
import os
import json
feature_flags = json.loads(os.environ.get('FeatureFlags', '{}'))
use_new_model = feature_flags.get('NewRecommendationModel', False)
if use_new_model:
# Use new recommendation model
else:
# Use existing model
Cách này giúp bạn thử nghiệm tính năng mới với một phần người dùng hoặc nhanh chóng tắt tính năng gặp vấn đề mà không cần triển khai lại.
> Để tìm hiểu sâu hơn về tự động hóa triển khai mô hình ML, hãy xem khóa học CI/CD cho Machine Learning.
Kết luận
Xuyên suốt hướng dẫn này, chúng ta đã khám phá cách thiết lập, triển khai, cấu hình, mở rộng và tối ưu Azure App Service cho ứng dụng dữ liệu. Từ việc tạo App Service đầu tiên đến triển khai tính năng nâng cao như auto-scaling và kết nối lai, bạn đã có kiến thức để tận dụng nền tảng Azure cho workload dữ liệu của mình.
Điểm mấu chốt
- Azure App Service cung cấp nền tảng được quản lý toàn diện giúp người làm dữ liệu tập trung vào logic ứng dụng thay vì quản trị hạ tầng.
- Nhiều tùy chọn triển khai cho phép tích hợp mượt mà với quy trình phát triển hiện tại, dù bạn dùng GitHub, Azure DevOps hay Git cục bộ.
- Khả năng mở rộng đảm bảo ứng dụng xử lý được tải công việc thay đổi, từ kiểm thử phát triển đến lưu lượng sản xuất tăng đột biến.
- Công cụ giám sát và chẩn đoán tích hợp giúp duy trì độ tin cậy và hiệu năng, với chỉ số chuyên biệt cho ứng dụng dữ liệu.
- Chiến lược tối ưu chi phí giúp tối đa giá trị và giảm chi tiêu, đặc biệt quan trọng với workload dữ liệu ngốn tài nguyên.
Bước tiếp theo
Để tiếp tục với Azure App Service, hãy khám phá:
- Tích hợp với Azure ML: Triển khai mô hình huấn luyện trong Azure Machine Learning lên App Service để suy luận.
- Azure Functions: Tính toán serverless theo sự kiện, bổ trợ cho ứng dụng App Service.
- Azure API Management: Bảo mật và quản lý các API cung cấp dịch vụ dữ liệu của bạn.
- Azure Logic Apps: Tự động hóa luồng công việc giữa App Service và nguồn dữ liệu khác.
- Tracks Microsoft Azure Fundamentals cũng là nguồn tuyệt vời nếu bạn chuẩn bị chứng chỉ hoặc muốn học theo lộ trình.
Hãy nhớ bối cảnh đám mây thay đổi rất nhanh, vì vậy hãy theo dõi trang cập nhật Azure để nắm các tính năng và dịch vụ mới có thể nâng cao ứng dụng dữ liệu của bạn!

Nền tảng kỹ thuật rộng, bao gồm máy học, khoa học dữ liệu, mô hình định lượng, kỹ thuật phần mềm, DevOps và điện toán đám mây.
Triển khai ứng dụng hiệu quả ngày càng quan trọng không kém gì khâu phát triển. Là một người làm dữ liệu, tôi nhận thấy chúng ta thường đầu tư rất nhiều thời gian để hoàn thiện mô hình và ứng dụng, nhưng quy trình triển khai đôi khi lại bị xem nhẹ. Đó là lúc Azure App Service phát huy tác dụng—nền tảng giúp đơn giản hóa quá trình triển khai đồng thời cung cấp các tính năng mạnh mẽ về khả năng mở rộng, bảo mật và giám sát.
Trong hướng dẫn toàn diện này, tôi sẽ dẫn bạn thiết lập, triển khai và mở rộng ứng dụng trên Azure App Service.
Dù bạn là người mới đang tìm cách triển khai ứng dụng đầu tiên hay là chuyên gia dày dạn muốn tối ưu hạ tầng đám mây, tài liệu này sẽ cung cấp các bước thực tiễn và thông lệ tốt nhất.
Azure App Service là gì?
Azure App Service là dịch vụ Nền tảng như một Dịch vụ (PaaS) của Microsoft, cho phép bạn xây dựng và lưu trữ ứng dụng web mà không cần quản lý hạ tầng cơ bản. Dịch vụ hỗ trợ nhiều ngôn ngữ và framework, bao gồm Python, Java, Node.js, .NET, và nhiều hơn nữa.
Trước khi đi vào thiết lập, hãy xem vì sao Azure App Service đặc biệt hữu ích cho người làm dữ liệu:
Với vai trò nhà khoa học hoặc kỹ sư dữ liệu, bạn có thể thắc mắc App Service khác gì so với các dịch vụ Azure khác như Azure Functions hoặc Azure Kubernetes Service. Điểm khác biệt chính là App Service là lựa chọn trung dung hoàn hảo—linh hoạt hơn serverless nhưng ít phức tạp hơn các nền tảng điều phối container.
> Để có cái nhìn nền tảng về hệ sinh thái và dịch vụ của Azure, hãy khám phá khóa học nhập môn về Microsoft Azure.
Thiết lập Azure App Service
Giờ đây khi đã hiểu Azure App Service là gì, hãy bắt tay thiết lập App Service đầu tiên. Quy trình gồm hai bước chính: tạo gói App Service (App Service plan) và sau đó tạo web app trong gói đó.
Tạo gói Azure App Service
App Service plan xác định tài nguyên tính toán, khu vực và bậc giá cho ứng dụng của bạn. Hãy coi đó như cụm máy chủ nơi ứng dụng chạy. Nhiều app có thể dùng chung một App Service plan, giúp tiết kiệm chi phí khi chạy nhiều ứng dụng nhỏ.
Cách tạo App Service plan:
Nói về bậc giá, Azure App Service cung cấp nhiều tùy chọn:
Tier
Features
Best for
Free
1GB storage, shared infrastructure, 60 minutes/day compute
Development and testing
Shared
1GB storage, 240 minutes/day compute
Low-traffic apps, development
Basic
10GB storage, dedicated VMs, custom domains
Production workloads with moderate traffic
Standard
50GB storage, auto-scaling, staging slots
Production apps with higher traffic
Premium
250GB storage, enhanced performance, more scaling options
Enterprise applications, high-performance needs
Với ứng dụng dữ liệu, tôi thường khuyên bắt đầu với tối thiểu bậc Basic trên môi trường sản xuất, vì xử lý dữ liệu thường cần nhiều tài nguyên hơn so với phục vụ web đơn thuần. Nếu bạn phục vụ mô hình máy học cần tính toán đáng kể, hãy cân nhắc bậc Standard nhờ khả năng tự động mở rộng.
Bạn cũng có thể tạo App Service plan bằng Azure CLI:
Tạo web app trên App Service
Khi đã có App Service plan, bạn có thể tạo web app trong đó. Web app là phiên bản ứng dụng thực thi code của bạn.
Thực hiện các bước sau để tạo web app:
myapp.azurewebsites.net)Nếu dùng Azure CLI, bạn có thể tạo web app chỉ với một lệnh:
Sau khi tạo web app, Azure sẽ cấp phát tài nguyên cần thiết. Khi hoàn tất, bạn có thể điều hướng tới web app mới bằng cách nhấp "Go to resource" hoặc tìm trong resource group.
Thời điểm này, khi truy cập URL của ứng dụng (
https://your-app-name.azurewebsites.net), bạn sẽ thấy trang mặc định. Điều này xác nhận ứng dụng đang chạy, dù chưa có code của bạn—chúng ta sẽ triển khai ở phần tiếp theo.Cấu hình cài đặt cơ bản cho app
Trước khi triển khai, hãy thiết lập một số cấu hình cơ bản. Với ứng dụng dữ liệu, bạn có thể cần biến môi trường cho kết nối cơ sở dữ liệu hoặc khóa API.
Để cấu hình app settings:
Bạn cũng có thể thiết lập bằng Azure CLI:
Các cài đặt này sẽ có sẵn dưới dạng biến môi trường cho ứng dụng—một cách an toàn để lưu cấu hình mà không hardcode trong mã nguồn.
Triển khai Ứng dụng Đầu tiên
Sau khi đã thiết lập hạ tầng Azure App Service, giờ là lúc triển khai ứng dụng. Azure App Service cung cấp nhiều phương thức triển khai, linh hoạt theo quy trình làm việc và sở thích của bạn. Phần này sẽ hướng dẫn triển khai bằng kiểm soát nguồn (GitHub hoặc Azure Repos), FTP và kho Git cục bộ.
Với người làm dữ liệu, bước này rất quan trọng vì nó bắc cầu giữa môi trường phát triển cục bộ và ứng dụng sẵn sàng sản xuất có thể phục vụ mô hình hoặc pipeline xử lý dữ liệu của bạn.
> Nếu mới làm quen nguyên lý triển khai, khóa học DevOps này cung cấp phần giới thiệu rõ ràng về các khái niệm và công cụ cốt lõi.
Triển khai từ GitHub hoặc Azure Repos
Một trong những tính năng mạnh nhất của Azure App Service là khả năng triển khai liên tục (CD) tích hợp sẵn. Bằng cách kết nối App Service với kho GitHub hoặc Azure DevOps, bạn có thể tự động triển khai mỗi khi có code được đẩy lên nhánh cụ thể.
Cách tiếp cận này đặc biệt hữu ích cho các nhóm dữ liệu làm việc cộng tác vì nó:
> Nếu bạn mới với quản lý phiên bản, lộ trình GitHub Foundations sẽ giúp bạn nắm vững cơ bản. Bạn cũng có thể khám phá Azure DevOps như một lựa chọn mạnh mẽ để quản lý pipeline triển khai và kiểm soát phiên bản.
Cách thiết lập triển khai liên tục từ GitHub:
Azure sẽ tạo một tệp workflow GitHub trong kho của bạn để tự động build và triển khai ứng dụng mỗi khi có thay đổi được đẩy lên nhánh đã chọn. Workflow này dùng GitHub Actions để xử lý quy trình CI/CD.
> Để tự động hóa nhiều hơn, hãy cân nhắc kết hợp Makefile với GitHub Actions cho luồng CI/CD gọn nhẹ.
Với ứng dụng Python, workflow thường bao gồm các bước:
requirements.txtBạn cũng có thể thiết lập triển khai liên tục bằng Azure CLI:
Cấu hình cài đặt triển khai
Để tinh chỉnh triển khai, bạn có thể cấu hình thêm trong tệp workflow GitHub hoặc Azure Portal:
Với ứng dụng khoa học dữ liệu, bạn có thể cần thêm các bước build tùy chỉnh để cài đặt thư viện khoa học hoặc chạy script huấn luyện mô hình. Có thể thêm trực tiếp vào tệp workflow trong kho của bạn.
Triển khai bằng FTP hoặc Git cục bộ
Dù triển khai liên tục từ GitHub hoặc Azure Repos được khuyến nghị cho môi trường nhóm, đôi khi bạn cần cách triển khai trực tiếp hơn. Azure App Service hỗ trợ cả FTP và Git cục bộ cho các trường hợp này.
Triển khai qua FTP
Triển khai FTP là cách trực tiếp để tải tệp ứng dụng lên Azure App Service. Phương thức này hữu ích cho cập nhật nhanh hoặc ứng dụng không yêu cầu quy trình build phức tạp.
Cách triển khai qua FTP:
/site/wwwroot/Với ứng dụng Python, đảm bảo bao gồm tệp
requirements.txtkhi tải lên. Azure App Service sẽ tự động cài đặt các gói cần thiết.Triển khai Git cục bộ
Triển khai Git cục bộ cho phép bạn đẩy code từ kho Git trên máy trực tiếp lên Azure. Cách này cho bạn nhiều kiểm soát hơn đối với quy trình triển khai, đồng thời tận dụng khả năng quản lý phiên bản của Git.
Thiết lập triển khai Git cục bộ:
Khi bạn đẩy code lên remote Azure, nền tảng sẽ tự động build và triển khai ứng dụng.
Giám sát trạng thái triển khai
Dù bạn dùng phương thức nào, việc giám sát quá trình triển khai để phát hiện sớm vấn đề là quan trọng. Azure cung cấp nhiều cách theo dõi trạng thái triển khai:
Nếu triển khai thất bại, log sẽ cho biết nguyên nhân. Các lỗi thường gặp gồm:
requirements.txtĐể khắc phục sự cố triển khai:
requirements.txtVới ứng dụng khoa học dữ liệu, lỗi triển khai thường do cài đặt gói lớn hoặc thao tác ngốn bộ nhớ khi khởi động. Nếu gặp vấn đề này, hãy cân nhắc: