前言
原文
What is Azure Functions
Azure Functions 是 Azure 提供的一種 serverless solution
Azure Functions 會為你管理程序的運行環境 (e.g. 操作系統、Node.js)
例如保持你的運行環境總是在使用最新的版本
提供一些方便的 deploy 方式
提供相應的運算資源(e.g. CPU, memory) 等等
所以在使用 Azure Functions 時
你可以撰寫較少的程式碼、維護較少的基礎結構,並節省成本
也不需要擔心部署和維護伺服器
Azure Functions 支援 trigger(觸發) 和 binding(繫結)
Trigger 就是你啟動你的程序的方式 (e.g. 定時、HTTP request)
Binding 就是設定你的 function 的 input(輸入) 來源和 output(輸出) 目的地 (e.g. 從 message queue 中取得資料作輸入然後把結果輸出到 database)
Compare Azure Functions and Azure Logic Apps
Azure Functions 和 Azure Logic 都是 Azure 的 serverless 的服務
但它們的定位有一點不同
Azure Functions 是 serverless computing service
而 Azure Logic Apps 就是 serverless workflow integration platform
兩者都可以被用作建立複雜的協調流程(orchestrations)
什麼是協調流程?
說實話我也不太明白
我猜大概就是可以把各種各樣的 Azure 服務整合到你的工作流程中
如果大家知道些什麼的話也非常歡迎在下面留言交流
我之後若是知道些什麼的話也會在這樣更新的
它們主要的區別是
Azure Functions 的主要運行邏輯是通過編程(coding) 並使用 Durable Functions extension 完成的
而 Azure Logic Apps 則是主要通過 GUI 完成的
下表是它們的一些區別
Topic | Azure Functions | Logic Apps |
---|---|---|
Development | Code-first (imperative) | Designer-first (declarative) |
Connectivity | About a dozen built-in binding types, write code for custom bindings | Large collection of connectors, Enterprise Integration Pack for B2B scenarios, build custom connectors |
Actions | Each activity is an Azure function; write code for activity functions | Large collection of ready-made actions |
Monitoring | Azure Application Insights | Azure portal, Azure Monitor logs |
Management | REST API, Visual Studio | Azure portal, REST API, PowerShell, Visual Studio |
Execution context | Runs in Azure, or locally | Runs in Azure, locally, or on premises |
Compare Functions and WebJobs
Azure Functions 和 Azure App Service WebJobs 都是針對開發員的 Code First (以編程為主) 的整合服務
兩者都是建立在 Azure App Service 之上
也支援 source control integration, authentication, and monitoring with Application Insights integration 等功能
Azure Functions 是建立於 WebJobs SDK 之上的
所以它們會有很多相同的 event triggers (事件觸發程序)
以及跟其他 Azure services 的連接方式
在選擇使用那個服務時請考慮下列的因素
Factor | Functions | WebJobs with WebJobs SDK |
---|---|---|
Serverless app model with automatic scaling | Yes | No |
Develop and test in browser | Yes | No |
Pay-per-use pricing | Yes | No |
Integration with Logic Apps | Yes | No |
Trigger events | Timer Azure Storage queues and blobs Azure Service Bus queues and topics Azure Cosmos DB Azure Event Hubs HTTP/WebHook (GitHub Slack) Azure Event Grid | Timer Azure Storage queues and blobs Azure Service Bus queues and topics Azure Cosmos DB Azure Event Hubs File system |
一般而言,Azure Functions 都是更好的選擇
但在下列兩個情況
WebJobs 可能是更好的選擇
- 你想要更充分的掌控
JobHost
object (listens for events 的程式碼)
Azure Function 只能通過host.json
來自訂JobHost
的行為
有些行為是不能通過這程方式設定的
例如只有 WebJobs SDK 可讓您為 Azure Storage 設定自訂的 retry policy - 有要運行程式碼的 App Service app 並想要在相同的 Azure DevOps 環境中一起管理
發佈留言