什麼是 Azure Functions?
您將密切關注 Tailspin Space Game Web 小組的討論,了解如何最適切地因應由管理階層所推動的新行銷需求。 該小組必須將某些無伺服器技術 (特別是 Azure Functions) 整合到其 DevOps 流程。
我們來看看小組的討論。
新需求
Irwin:感謝各位臨時抽空參加會議。 情勢逐漸升溫,行銷小組做出了一些承諾,我們大家的工作可能會因此變得更複雜。 他們真的很喜歡我們的網站。 他們認為在最終發表和後續活動中,可利用排行榜來推廣遊戲。 他們想要將其擴增,且遠超出我們原先計劃的規模。
Mara:太棒了,不是嗎? 我們使用 Azure,所以要將服務擴增到多大都行。
Irwin:他們只是想讓任何人都能將排行榜資料整合到自己的應用程式而已。 他們覺得可在多處看到相同的排行榜選項真的很酷:在我們的網站上、在遊戲中、在遊戲評論網站上,甚至是在外部的部落格和個人網站上。 其中一項挑戰是我們從中提取排行榜資料的生產資料庫,目前由遊戲引擎小組所擁有。 他們認為應繼續由他們建置並擁有 API。
Andy:Mara,你有任何想法嗎?
Mara:我確定我們可以想出一些點子。 我記下了一些要點:
- 我們必須快速交付,因此必須找出可使用我們程式碼與技能的適當解決方案。
- 我們需要將一小部分的功能重構為獨立的服務。
- 我們需要將生產環境中的系統管理額外負荷降到最低。
- 我們需要在不做出巨大規模的情況下具備龐大規模。
小組成員點頭同意。
其在我的電腦上可行
會議結束。 隔天早上,Andy 興奮地跑到 Mara 的辦公室聊天。
Andy:我想到了! 我找到一個解決方案,可滿足我們對排行榜 API 的所有需求。 這就是稱為 Azure Functions 的無伺服器供應項目。
Mara:太棒了! 我們需要多少時間才能想出一些點子?
Andy:我已經完成一些工作。我派生了 GitHub 存放庫,並將排行榜程式碼重構為新的 Azure Functions 專案。 現在已可透過簡單的 HTTP GET 要求來公開排行榜資料。 我也更新了網站,在要求排行榜時會使用該端點,而其他人都可執行相同的動作。
Mara:這聽起來就是我們要的。 我可以協助擴充現有的 CI/CD 管線以支援建置和部署,就像我們對主要網站專案所做的一樣。
注意
在此課程模組中,我們不會將焦點放在如何將應用程式連線至 Azure Functions。 您若有興趣,可以檢閱原始程式碼 \(英文\)。 此程式碼使用適用於 C# 的 Azure Functions 執行階段,從 Azure Functions 讀取排行榜資料。
什麼是 Azure Functions?
Azure Functions 是更廣泛的 Azure 無伺服器運算技術範圍內的特定供應項目之一。 它提供簡單的方法,讓開發人員能夠在無狀態、無伺服器的環境中建置簡單的函式。 函式可以使用各種方法觸發,包括 HTTP 要求、儲存體中的資料變更、從佇列接收訊息等等。 您可以在 Azure Functions 觸發程序和繫結概念中深入了解觸發程序繫結。
Tailspin 小組為此案例選取了 Azure Functions,因為這符合他們的所有需求:
- 我們必須快速交付,因此必須找出可使用我們程式碼與技能的適當解決方案。
- 我們可以套用既有的程式碼,將解決方案快速建置為 ASP.NET Core 應用程式。
- 我們需要將一小部分的功能重構為獨立的服務。
- 我們可以提供獨立的函式,而無須擔心其他應用程式介面區。
- 我們需要將生產環境中的系統管理額外負荷降到最低。
- 有了 Azure Functions,就無須再費心處理裝載環境。
- 我們需要在不做出巨大規模的情況下具備龐大規模。
- 無伺服器技術具有幾乎無限制的調整能力,可用優於虛擬機器或應用程式服務的速度自動擴縮。
Azure Functions 和其他無伺服器技術不一定適用於每個解決方案。 稍後我們將討論可在何處找到資源,以協助您為作業選取正確的技術。