Azure App Service: Hướng dẫn Toàn diện
1. Giới thiệu
App Service là gì?
Là dịch vụ PaaS (Platform as a Service) để host các ứng dụng Web, REST API, và Mobile Backends.
- Bạn lo: Code và Dữ liệu.
- Microsoft lo: Server, OS, Patching, Load Balancing, Scaling.
Hỗ trợ: .NET, Java, Node.js, Python, PHP, Ruby, hoặc Docker Container.
2. App Service Plan (Khái niệm cốt lõi)
Bạn không tạo "Web App" trực tiếp trên phần cứng. Bạn tạo nó trong một App Service Plan (ASP).
- Tương tự:
- ASP = Cái máy chủ (Server Farm).
- Web App = Các website chạy trên máy chủ đó (IIS Sites).
- Ý nghĩa:
- Bạn trả tiền cho ASP (thuê máy), không trả tiền cho từng Web App.
- Bạn có thể chạy 10 Web App trên cùng 1 ASP để tiết kiệm tiền (chúng chia sẻ CPU/RAM của ASP).
Các hạng (Tiers)
- Free (F1) / Shared (D1): Dùng chung hạ tầng với người khác. Chỉ để Dev/Test vui vẻ. Không hỗ trợ tên miền riêng (Free).
- Basic (B1, B2...): Máy riêng. Hỗ trợ SSL, Custom Domain. Tốt cho dự án nhỏ.
- Standard (S1, S2...): Chuẩn cho Production. Hỗ trợ Auto-scale, Staging Slots, Backup.
- Premium (P1v2, P1v3...): Hiệu năng cao, SSD nhanh, hỗ trợ VNet Integration.
3. Deployment Slots (Tính năng "Killer")
Làm sao để deploy code mới mà không làm gián đoạn người dùng (Zero Downtime)?
- Cơ chế:
- Bạn có slot Production (đang chạy code cũ, user đang dùng).
- Bạn tạo thêm slot Staging (bản sao của Prod).
- Bạn deploy code mới vào Staging.
- Bạn test kỹ trên Staging.
- Swap: Bạn bấm nút "Swap". Azure sẽ hoán đổi địa chỉ IP của 2 slot.
- Staging -> Production (User dùng code mới ngay lập tức).
- Production -> Staging (Code cũ vẫn còn đó, nếu lỗi thì Swap lại để rollback).
Warm-up
Quá trình Swap đảm bảo Web App mới đã khởi động xong (Warm-up) trước khi nhận traffic. User sẽ không bao giờ gặp lỗi "App is starting...".
4. Scaling (Mở rộng)
Scale Up (Dọc)
- Tăng sức mạnh của ASP (VD: Từ 1 Core lên 4 Core).
- Giới hạn bởi phần cứng tối đa.
Scale Out (Ngang) - Khuyên dùng
- Tăng số lượng máy (Instances) trong ASP (VD: Từ 1 máy lên 5 máy).
- Autoscale: Cấu hình để Azure tự động thêm máy khi CPU > 70% và giảm máy khi CPU < 30%.
5. Bảo mật & Mạng
- Authentication: Bật tính năng "Authentication" để bắt buộc đăng nhập (Google, Facebook, Azure AD) mà không cần sửa code.
- VNet Integration: Cho phép Web App truy cập vào Database nằm trong mạng nội bộ (Private VNet).
- Private Endpoint: Cho phép Web App chỉ truy cập được từ nội bộ, chặn hoàn toàn Internet (Dùng cho Internal App).