接下來進入到我們的重頭戲--Azure Functions(Serverless框架)的介紹及實作,看過前言及本系列的介紹的讀者,應該會知道它佔了30天蠻多的篇章,為什麼它這麼重要呢?因為方便、快速、好用、便宜。
這麼好用的工具,我們不能只把它當作很Fancy很炫的名詞,而是自己用心學,自己動手做,來體會Serverless(無伺服器)框架迷人的魅力吧!
我先來針對Functions做個簡單的介紹
Functions是Azure上的一款Serverless(無伺服器)運算服務,讓開發人員可以專注在撰寫商務邏輯上,省去管理伺服器的時間成本
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
用什麼語言寫Functions:C#,Javascript,F$,Java,Python,Powershell等等
以Azure Functions為例,如果你現在要做一個簡單的API,只要寫簡單幾行程式碼,就可以Work了耶!
還不用搞一大堆伺服器設定Deploy,連Endpoint都幫你準備好了。
你要做的,就是把程式碼寫好,不用花時間在搞那些機器管理。剩下的時間拿去打遊戲,看直播,不是很開心嗎(誤)?應該換句話說,不用半夜為了機器掛掉,或是機房冷氣又爆了,被ONCALL到抓狂,真的省了很大的心力!(可以少買一點綠乖乖)
Azure Functions幫你生成的長這個樣子:
https://serverless-funcs.azurewebsites.net/api/HttpTriggerCSharp1?code=r9S0AOLhv9VPA/eQRHona49vn8yDc8BMNQGb1v1xOayfoRkDqHIpJw==
↑↑寫幾行LOGIC CODE(還是範本產生的),就可執行了!!!
根據維基百科,終端客戶不需要部署、配置或管理伺服器服務,程式碼運行所需要的伺服器服務皆由雲端平台來提供。開發人員只要負責程式邏輯。
由亞馬遜,微軟,谷歌等大公司代管你的服務,不用煩惱要買幾台冷氣,租借多少機器,只要把程式碼顧好,佈署上去就可以看到你的應用程式跑起來囉!
另外假設你今天負責五月天或是台鐵返鄉票的萬人大搶購(當機),沒有Serverless以前,你可能要預先租借好對應的服務伺服器,以應付大量的人潮。通常租的還是不夠一樣被網友罵到臭頭。但是Serverless不一樣,如果你的口袋夠深,把Scalability用力地開下去,這些服務平台為了賺你的錢,會讓你在短短的時間內,可以開到對應的可承受附載的運算能力。
而在沒有使用的時候,不用趁廠商大特價提前買伺服器或硬碟起來放。有使用才付錢,沒使用不用錢的計價方式,讓小資新創也能在有限的預算內,把服務上架。
目前比較熱門的Serverless分別有,Amazon Lambda,Azure Functions,Google Cloud Functions,各有優劣,但Serverless核心精神不變
以我自己為例,我的前公司利用AWS Lambda + AWS Gateway的Serverless架構打造RESTful API。身為後端工程師的我,只要專心撰寫Python程式邏輯,打造出我們公司的API服務。我不用再去管硬碟壞幾顆,什麼時候要去抽換伺服器硬碟,或是關心機房冷氣壞了,伺服器又當機的問題。
不過這系列主要在講Azure,雖然我前公司使用AWS,但我的新公司用Azure,因此我決定投入他的懷抱,以Azure的Serverless為範例主講喔!
說好用Azure Functions Demo Serverless,我現在示範給大家看看!
看看我只花3秒鐘就佈署好的API(Azure Functions)
https://serverless-funcs.azurewebsites.net/api/restaurant/
看來你不相信我3秒鐘就做好了,只好拍GIF影片給你看了!
來跟著我一起數,1~2~~3~~~
另外很多人用Serverless打造出影片Thumbnail服務,只要有新的影片上傳到儲存空間,就會呼叫Functions,讀取影片並針對某個影格Capture,產出Thumbnail檔案,可以參考此篇文章
Auto-generate thumbnails using an Azure Function and Azure Blob Storage
範例程式在此:Github Demo
如果有自己查過Functions或聽過Function App的讀者,可能跟我有同樣的疑惑,怎麼一下Functions,一下又Function App,兩個有什麼不一樣?
Function App是佈署的一個單位,很多Functions聚在一起被佈署上去到雲端
他們可以擁有同樣的環境變數或是APP設定,然後可以一起被彈性擴展
左邊是單一個產生thumbnail檔案的Funtions
右邊是多個funtions組成的Function App(RESTfuk API)
今天要學習份量比較多,大家消化一下喔!!
我們在下一篇DAY05將帶大家動手建一個自己的Functions囉!