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

Azure Functions: Triggers, Bindings và Hosting theo cách dễ hiểu

Tìm hiểu Azure Functions là gì, cách chúng kích hoạt ứng dụng serverless hướng sự kiện, và cách triggers, bindings, tùy chọn lưu trữ cùng quy trình làm việc kết nối với nhau.
Đã cập nhật 5 thg 10, 2026  · 7 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Azure Functions là một phần của dịch vụ điện toán serverless của Microsoft. Dịch vụ này cho phép bạn chạy các đoạn mã nhỏ để phản hồi các sự kiện mà không phải tự quản lý máy chủ.

Ví dụ, một function có thể chạy khi có yêu cầu HTTP đến, khi một tệp được tải lên bộ nhớ, hoặc khi đến thời điểm đã lên lịch.

“Serverless” không có nghĩa là không có máy chủ. Nó có nghĩa là Azure quản lý hạ tầng thay cho bạn. Azure xử lý việc cấp phát, mở rộng và bảo trì phía sau hậu trường.

Trong hướng dẫn này, tôi sẽ trình bày các khối xây dựng cốt lõi: triggers, bindings, các tùy chọn lưu trữ (hosting), cùng một ví dụ thực hành để bạn bắt đầu.

Azure Functions là gì?

Azure Function đơn giản là một đoạn mã nhỏ chạy khi được kích hoạt bởi một sự kiện do bạn chọn. Bạn viết logic, còn Azure lo phần còn lại.

Có ba ý tưởng định hình mô hình này.

  1. Cơ chế thực thi hướng sự kiện cho phép mã chỉ chạy khi có điều gì đó xảy ra, không phải liên tục.
  2. Cơ chế tự động mở rộng cho phép Azure thêm hoặc bớt tài nguyên tính toán dựa trên nhu cầu.
  3. Mô hình định giá theo mức tiêu thụ cho phép bạn, trong một số gói lưu trữ, chỉ trả tiền cho thời gian mã thực sự chạy.

Lý tưởng nhất, một function làm một việc, như thay đổi kích thước ảnh hoặc xử lý một thông điệp. Function App là vùng chứa (container) nắm giữ một hoặc nhiều functions. Nó quản lý các thiết lập dùng chung như cấu hình và triển khai cho tất cả functions bên trong.

Cách Azure Functions hoạt động

Vòng đời của một function nhìn chung theo một mẫu đơn giản như sau:

  1. Một sự kiện xảy ra, như tải lên tệp hoặc gọi HTTP.
  2. Trigger phát hiện sự kiện và khởi động function ngay lập tức.
  3. Function chạy đoạn mã của nó.
  4. Bindings kết nối function với các dịch vụ khác để đọc đầu vào hoặc gửi đầu ra cần thiết.
  5. Azure quản lý tài nguyên tính toán cho quá trình này, tất nhiên dựa trên gói lưu trữ bạn đã chọn.

Luồng này về cơ bản giống nhau bất kể ngôn ngữ hay tùy chọn lưu trữ. Chỉ trigger, mã và bindings là thay đổi.

Triggers trong Azure Functions

Mỗi function có đúng một trigger. Trigger xác định chính xác cách function được khởi động. Dưới đây là các loại phổ biến nhất mà bạn nên biết:

  • HTTP Trigger: Chạy function khi nhận được yêu cầu HTTP. Phổ biến khi xây dựng API.
  • Timer Trigger: Chạy function theo lịch, ví dụ mỗi giờ hoặc mỗi ngày một lần.
  • Blob Storage Trigger: Chạy function khi một tệp được thêm hoặc thay đổi trong Azure Blob Storage.
  • Queue Trigger: Đơn giản chạy function khi có thông điệp mới đến một hàng đợi.
  • Event Hub Trigger: Chạy function để phản hồi luồng sự kiện. Rất hữu ích cho lượng dữ liệu lớn.
  • Cosmos DB Trigger: Chạy function khi tài liệu được tạo hoặc cập nhật trong một vùng chứa Cosmos DB, tận dụng Change Feed.
  • Service Bus Trigger: Chạy function để phản hồi các thông điệp từ hàng đợi hoặc chủ đề Azure Service Bus, thường dùng cho nhắn tin doanh nghiệp và tách ghép hệ thống.
  • Durable Functions: Phần mở rộng của Azure Functions cho phép bạn viết các function có trạng thái trong môi trường serverless để điều phối các quy trình nhiều bước phức tạp.

Bindings trong Azure Functions

Tôi cho rằng triggers và bindings thường bị nhầm lẫn, nhưng dù trông giống nhau, chúng làm những việc hoàn toàn khác nhau. Trigger khởi động function, còn binding kết nối function với dữ liệu bằng cách đọc hoặc gửi dữ liệu.

Input bindings

Ở đây, bạn cấp dữ liệu cho function mà không cần viết mã tích hợp tùy chỉnh. Ví dụ, một function có thể tự động đọc một bản ghi từ cơ sở dữ liệu chỉ bằng cách khai báo binding.

Output bindings

Điều này cho phép bạn gửi kết quả của function đến nơi khác. Chẳng hạn, bạn có thể dùng output binding để ghi một thông điệp đã xử lý vào hàng đợi.

Ví dụ minh họa: Blob Storage trigger khởi động function khi một ảnh được tải lên. Output binding sau đó lưu ảnh đã thay đổi kích thước vào một vùng chứa lưu trữ khác. Các binding xử lý kết nối lưu trữ, và không cần viết thủ công mã client cho lưu trữ.

Cách tạo Azure Function đầu tiên của bạn

Dưới đây là ví dụ đơn giản về một function kích hoạt bởi HTTP trả về lời chào. Quy trình như sau:

  1. Tạo Function App. Đây là vùng chứa cho function của bạn trên Azure.
  2. Chọn runtime và ngôn ngữ bạn muốn dùng để viết mã.
  3. Thêm một function mới bên trong Function App của bạn.
  4. Chọn HTTP trigger để function phản hồi các yêu cầu web.
  5. Thêm chức năng đơn giản như đọc tên từ yêu cầu và trả về “Xin chào, [name].”
  6. Chạy và kiểm thử function bằng công cụ tích hợp sẵn hoặc đơn giản gửi yêu cầu từ trình duyệt.
  7. Triển khai lên Azure để function hoạt động và có thể truy cập.

Tôi cố tình làm ví dụ thật nhỏ gọn để cho bạn thấy mô hình, còn lại hãy để sự sáng tạo của bạn phát huy.

Các ngôn ngữ được Azure Functions hỗ trợ

Azure Functions hỗ trợ nhiều ngôn ngữ, như:

  • C#
  • JavaScript/TypeScript
  • Python
  • Java
  • PowerShell

Mức hỗ trợ và mô hình phát triển có thể khác nhau theo ngôn ngữ và phiên bản. Vì vậy, tôi khuyến nghị kiểm tra tài liệu Azure hiện tại trước khi bắt đầu dự án mới vì các chi tiết này thay đổi thường xuyên.

Các tùy chọn lưu trữ Azure Functions

Không phải mọi Azure Function đều chạy theo cùng một cách. Azure cung cấp nhiều gói lưu trữ, mỗi gói có các đánh đổi khác nhau. Lựa chọn đúng phụ thuộc vào trường hợp của bạn. Các đánh đổi chính gồm:

  • Mở rộng: Một số gói mở rộng tự động và tức thì, trong khi số khác cần kiểm soát thủ công hơn.
  • Hành vi khởi động: Một số gói giữ function ở trạng thái “ấm”, nghĩa là sẵn sàng chạy ngay; số khác khởi động function theo nhu cầu.
  • Kết nối mạng: Một số gói hỗ trợ tính năng mạng nâng cao như kết nối vào mạng ảo riêng (VNet), số khác thì không.
  • Chi phí: Mô hình định giá rất khác nhau, từ trả theo lượt thực thi đến chi phí cố định hàng tháng.

Mở rộng và hiện tượng khởi động lạnh trong Azure Functions

Hai khái niệm nữa quan trọng khi function chạy ở môi trường production. Đó là:

Tự động mở rộng

Azure theo dõi tải trên function của bạn; khi nhu cầu tăng, Azure thêm các phiên bản tính toán; khi nhu cầu giảm, Azure loại bớt. Bạn không cần quản lý thủ công.

Khởi động lạnh

Nếu một function không chạy gần đây, nó có thể cần một khoảng thời gian ngắn để khởi động trước khi xử lý yêu cầu mới. Độ trễ này gọi là khởi động lạnh (cold start). Một số gói lưu trữ giảm hoặc tránh hiện tượng này bằng cách giữ phiên bản ở trạng thái ấm, như đã đề cập.

Các trường hợp sử dụng phổ biến của Azure Functions

Mô hình hướng sự kiện phù hợp với nhiều bài toán hằng ngày mà bạn có thể gặp. Đáng chú ý:

API và webhook

Xử lý các yêu cầu HTTP đến mà không cần vận hành một máy chủ web 24/7.

Xử lý tệp và hình ảnh

Kích hoạt function bất cứ khi nào có tệp vào bộ nhớ, sau đó thay đổi kích thước, chuyển đổi hoặc quét tệp.

Công việc theo lịch

Chạy các tác vụ dọn dẹp, báo cáo hoặc nhắc nhở theo bộ đếm thời gian mà không cần máy chủ luôn bật chuyên dụng.

Chuỗi xử lý dữ liệu

Xử lý thông điệp hoặc sự kiện khi chúng đến, từng bước một.

IoT và xử lý sự kiện

Xử lý lượng lớn dữ liệu cảm biến hoặc thiết bị khi chúng được truyền về.

Tác vụ nền

Tách phần công việc chậm hoặc thỉnh thoảng, như gửi email, để không chặn ứng dụng chính của bạn.

Giám sát và khắc phục sự cố Azure Functions

Khi function đã chạy thực tế, bạn cần khả năng quan sát hiệu năng của nó.

Bạn có thể, chẳng hạn, xem log lưu lại những gì xảy ra trong mỗi lần chạy, rất hữu ích khi gỡ lỗi. Bạn cũng có thể kiểm tra Application Insights trong công cụ Azure, nơi theo dõi hiệu năng, yêu cầu và lỗi ở một nơi tập trung.

Bạn cũng nên theo dõi các lần gọi thất bại để biết khi nào và vì sao một function không hoàn thành. Giám sát hiệu năng còn giúp bạn phát hiện function chậm trước khi chúng trở thành vấn đề, và tất nhiên có thể cấu hình cơ chế thử lại để các lần thực thi thất bại tự động chạy lại.

Kết luận

Azure Functions cho bạn cách chạy mã để phản hồi sự kiện mà không phải quản lý máy chủ bên dưới. Triggers quyết định khi nào function khởi chạy. Bindings, ngược lại, giúp kết nối function đó với các dịch vụ khác mà không cần mã tích hợp bổ sung.

Khi bạn chuyển từ function thử nghiệm đơn giản sang chạy production, các lựa chọn về lưu trữ và mở rộng trở nên quan trọng hơn nhiều. Gói phù hợp ảnh hưởng không chỉ chi phí mà còn cả tốc độ và độ tin cậy.


Iheb Gafsi's photo
Author
Iheb Gafsi
LinkedIn

Tôi làm việc trên các hệ thống AI tăng tốc, cho phép trí tuệ ở biên với các pipeline ML liên kết (federated) trên dữ liệu phi tập trung và khối lượng công việc phân tán.  Công việc của tôi tập trung vào Mô hình Lớn, Xử lý Giọng nói, Thị giác Máy tính, Học tăng cường và các cấu trúc tô-pô ML tiên tiến.

Câu hỏi thường gặp

Azure Functions là gì?

Dịch vụ serverless chạy các đoạn mã nhỏ để phản hồi sự kiện, mà bạn không phải quản lý máy chủ.

Điều gì kích hoạt một Azure Function?

Các sự kiện như yêu cầu HTTP, bộ đếm thời gian, tải lên tệp hoặc thông điệp hàng đợi.

Sự khác nhau giữa trigger và binding là gì?

Trigger khởi động function. Binding kết nối function với dịch vụ khác để nhận đầu vào hoặc gửi đầu ra.

Cold start là gì?

Độ trễ ngắn khi function khởi động sau một thời gian không hoạt động.

Azure Functions hỗ trợ những ngôn ngữ nào?

C#, JavaScript/TypeScript, Python, Java và PowerShell.

Chủ đề
Azure

Học Azure cùng DataCamp

Khóa học

Tìm hiểu Microsoft Azure

3 giờ
50.8K
Tìm hiểu về sức mạnh của Microsoft Azure và phần mềm điện toán đám mây để giúp bạn nâng cao kỹ năng kỹ thuật dữ liệu của mình.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow