Azure Functions可以按需縮放,因此,你不需要針對最大規模的場景構建基礎設施,也不需要為你不使用的資源付費。你還可以設定一個日最大支出上限,防止Function失控。用戶也不必再擔心升級和維護框架、操作系統或基礎設施。Functions會為你處理底層的基礎設施。
Azure Functions可以使用C#和Javascript編寫,包括F#、PowerShell、PHP、Python、CMD、BAT和Bash等在內的其他語言還處于預覽狀態。起初,開發人員在Azure Portal上的一個Web瀏覽器中編寫Azure Functions。但在其正式發布以后,微軟為喜歡在IDE中構建Azure Functions的開發人員提供了另外的工具。該工具尚處于預覽狀態。現在,安裝Visual Studio Tools for Azure Functions之后,開發人員可以在Visual Studio 2015中構建Azure Functions了。
開發人員可以在本地運行Azure Functions,并在Visual Studio中進行調試,然后通過Web Deploy——Publish特性將它們部署到Azure。在部署到Azure之后,開發人員仍然可以將調試器連接到云實例,并通過Visual Studio調式它們。
最近,InfoQ有機會和Azure Functions項目經理Chris Anderson取得了聯系。下面是他向我們介紹的一些內容。
InfoQ:關于無服務器計算的討論很熱烈。您認為這一切是因為什么?
Chris Anderson:我認為,圍繞無服務器計算的討論歸根結底是因為,無服務器計算為開發人員提供了他們從未有過的體驗,讓它們可以更快速、更輕松地構建應用程序。可以更快地做事和構建東西讓他們非常興奮。此外,當使用托管服務及無服務器計算時,他們可以更輕松地操作和管理他們的應用程序,因為這些服務的設計已經盡可能地為你承擔了那種職責。也就是說,當我們采用無服務器計算時,我們可以更快地創新,更輕松地管理和擴展我們正在構建的應用程序。我認為,還有一個原因是,圍繞著無服務器計算的概念,已經形成了一個很棒的社區。這兩個原因一起促成了這種熱烈的討論。
InfoQ:你們的客戶使用Azure Functions做什么?您能向我們介紹一些比較有趣的案例嗎?
Chris Anderson:Plexure.io使用Azure Functions的方式就是一個有趣的案例。這是一個IoT驅動的CRM平臺。該平臺的其中一項功能是幫助客戶消費與顧客互動相關的IoT信息,簡化編排,并對該IoT數據作出回應。當他們了解了Azure Functions,他們覺得可以用它托管他們在工作流(基于Azure Logic Apps,微軟的無服務器工作流集成服務,其中包含一個可視化設計器和超過80個開箱即用的連接器)中用到的部分動作。他們還希望讓他們的客戶可以在Plexure的在線門戶上編寫自定義的Function。這讓他們的客戶可以在他們的門戶上做更多的事,而不必在某個地方搭建一個自定義的API服務用來響應WebHooks。Azure Functions已經成為做那件事的其中一種最好的方式,那樣,他們就避免了中間環節。由于我們的門戶UI是開源的,他們可以重用我們的Angular2組件,快速在自己的在線門戶中獲得這種體驗。
另外一個有趣的案例是我們對Microsoft Bot Framework所做的事情。當Microsoft Bot Framework團隊尋找一種最簡單的方式部署和運行機器人程序時,他們將無服務器計算視為合理的解決方案。Azure Functions作為基本的計算層,托管集成在一起的Azure Bot Service,并提供一些其他的功能,如按需擴展,支持持續集成和交付。
不過,在我看來,最有趣的是,像小規模的數據轉換或擴充這樣的最普通、最基本的場景在規模很大并結合了其他托管服務的情況下是什么樣子。我們看到許多客戶使用Azure Logic Apps執行大量的集成工作負載,在這個過程中,他們可以輕松地為自定義的動作編寫Functions。例如,可以非常快地構建一個應用程序,讀取有關特定主題的所有推特,使用Logic Apps和Azure Functions對它們進行處理,輔以類似Cognitive Services這樣的服務用于情感分析和人臉識別,并輸出到PowerBI。對于IoT也是一樣,當你將類似IoT Hub、Stream Analytics和Azure Functions這樣的服務結合起來,IoT數據分析變得前所未有的簡單。盡管Function并沒有做什么特別有趣的事情,但事實是,它很容易配置和運行,就是說,我已經充分領略到類似IoT Hub和Steam Analytics這樣的托管服務所帶來的好處。
InfoQ:你見過你們的客戶使用Azure Functions實現了什么規模的(事務處理)?
Chris Anderson:大多數客戶都是一天觸發幾個事件。他們使用Functions簡單地擴展他們已有的服務,隨著他們越來越多地采用無服務器模式,并構建越來越多的功能,他們對Functions的使用會逐漸增加。我們最大的用戶每天要執行上億次,每秒成千上萬次。
InfoQ:你們最近發布了Visual Studio工具。為什么提供這種工具對你們的客戶而言特別重要?
Chris Anderson:從我們著手Azure Functions相關工作的第一天開始,我們就把提升開發人員的開發效率和敏捷性作為基本任務。我們希望開發人員可以構建東西,而且我們希望他們可以使用他們已經在使用的工具快速地完成構建。我們經常使用的一個口號是“5秒鐘開始,5分鐘見價值”。當然,只是使用一個文本編輯器也可以快速地構建,但根據我們的經驗,許多人都希望有一個像Visual Studio這樣功能更為強大的東西來提高他們的開發效率。另外,我們還投入資源研究通用的本地工具和VS Code集成,那樣我們就可以在其他操作系統上為客戶提供支持。本地調試就是那種不錯的本地編輯體驗的一部分,如今,我們已經支持在Visual Studio內進行在線調試。我已經逐漸對它形成了依賴,在構建演示程序或者幫助客戶時,它可以幫助我捕捉一些我自己創建的、比較難以發現的Bug。
InfoQ:Azure Functions目前已經支持綁定到類似Azure Event Hubs、Azure Service Bus Queues and Topics和Azure Storage這樣的服務。你們還會尋求在這項服務中增加其他一些事件觸發器嗎?
Chris Anderson:我們提高開發效率的承諾不會變,我們已經提供并且將繼續提供其他的綁定,讓Functions可以更便捷地連接服務和數據。你將會看到,我們會在更多的觸發器上投入資源,如像Document DB和Azure IoT Hub這樣的Azure服務。另外,我們還會更緊密地集成那些也可以和我們通信的服務,如Azure Monitoring以及像Office 365和Dynamics 365這樣的SaaS解決方案。我們還會研究特定于Functions的觸發器,比如,當Function中有錯誤可以有一個觸發;使用Azure Functions更好地管理Azure Functions。
查看英文原文:Azure Functions Reach General Availability