Skip to main content

Azure Functions: Hướng dẫn Toàn diện

1. Giới thiệu

Serverless là gì?

Serverless (Không máy chủ) không có nghĩa là không có máy chủ nào. Nó có nghĩa là bạn không cần quan tâm đến máy chủ.

  • Bạn chỉ viết code (Function).
  • Azure lo việc chạy code đó khi có sự kiện (Event).
  • Bạn chỉ trả tiền cho thời gian code chạy (tính theo giây). Code không chạy -> Không tốn tiền.

Azure Functions là gì?

Là dịch vụ Serverless Compute của Azure. Nó giúp bạn chạy các đoạn code nhỏ (Function) để xử lý các sự kiện cụ thể.


2. Triggers & Bindings (Khái niệm quan trọng)

Sức mạnh của Azure Functions nằm ở khả năng kết nối dễ dàng.

Trigger (Cò súng)

Cái gì làm cho Function chạy?

  • HTTP Trigger: Khi có request gửi vào URL (API).
  • Timer Trigger: Chạy theo lịch (VD: 8h sáng mỗi ngày).
  • Blob Trigger: Khi có file mới được upload lên Storage.
  • Queue Trigger: Khi có tin nhắn mới trong hàng đợi.

Bindings (Kết nối)

Giúp Function đọc/ghi dữ liệu mà không cần viết code kết nối phức tạp.

  • Input Binding: Tự động đọc dữ liệu vào biến đầu vào.
  • Output Binding: Tự động ghi dữ liệu từ biến đầu ra.

Ví dụ: Resize ảnh.

  • Trigger: Blob Trigger (Khi có ảnh mới ở folder input).
  • Input: File ảnh gốc.
  • Code: Thực hiện resize.
  • Output Binding: Blob Output (Lưu ảnh đã resize vào folder output). -> Bạn không cần viết dòng code nào để connect tới Storage, mở file, hay lưu file. Chỉ viết code resize.

3. Các gói dịch vụ (Hosting Plans)

PlanMô tảTính tiềnPhù hợp cho
ConsumptionServerless thuần túy. Tự động scale từ 0 lên hàng nghìn instance.Pay-as-you-go (Số lần chạy + GB-s).Ứng dụng không thường xuyên, sự kiện rời rạc.
PremiumServerless "xịn". Luôn có sẵn instance (không bị Cold Start). Hỗ trợ VNet.Tính theo CPU/RAM đã giữ chỗ.API quan trọng, cần phản hồi nhanh.
App Service PlanChạy trên máy ảo chuyên dụng (như Web App).Tính tiền thuê máy ảo cố định theo tháng.Khi bạn đã có sẵn App Service Plan và muốn tận dụng tài nguyên thừa.

Cold Start là gì?

Với gói Consumption, nếu lâu không có ai gọi, Azure sẽ tắt hoàn toàn Function (về 0). Khi có request mới, Azure phải bật lại Function -> Mất vài giây (Cold Start). User đầu tiên sẽ thấy chậm. -> Nếu không chấp nhận được độ trễ này, hãy dùng gói Premium.


4. Hướng dẫn phát triển (Development)

Đừng viết code trên Portal (trình duyệt). Hãy dùng VS Code.

  1. Cài Azure Functions Core ToolsAzure Functions Extension cho VS Code.
  2. Tạo Project mới (F1 -> Azure Functions: Create New Project).
  3. Chọn ngôn ngữ (C#, Java, JS, Python...).
  4. Chọn Trigger (VD: HTTP Trigger).
  5. Viết code và chạy thử (F5). Bạn có thể debug ngay trên máy local.
  6. Deploy lên Azure (Click chuột phải -> Deploy to Function App).

5. Best Practices

  1. Hàm nhỏ gọn: Một Function chỉ nên làm 1 việc. Thời gian chạy nên ngắn (mặc định timeout là 5 phút).
  2. Stateless: Không lưu biến toàn cục hay file tạm mong chờ lần sau dùng lại. Mỗi lần chạy là một môi trường mới.
  3. Idempotent (Bất biến): Thiết kế sao cho nếu Function lỡ chạy lại 2 lần (do lỗi mạng), kết quả vẫn đúng (không bị trừ tiền 2 lần).