iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 4
9

接下來進入到我們的重頭戲--Azure Functions(Serverless框架)的介紹及實作,看過前言及本系列的介紹的讀者,應該會知道它佔了30天蠻多的篇章,為什麼它這麼重要呢?因為方便、快速、好用、便宜。

這麼好用的工具,我們不能只把它當作很Fancy很炫的名詞,而是自己用心學,自己動手做,來體會Serverless(無伺服器)框架迷人的魅力吧!

我先來針對Functions做個簡單的介紹

Functions簡介

Functions是Azure上的一款Serverless(無伺服器)運算服務,讓開發人員可以專注在撰寫商務邏輯上,省去管理伺服器的時間成本

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

內心OS:文謅謅的看不懂,簡單來說就是你只要負責寫CODE(程式邏輯),伺服器什麼都不用太管他

用什麼語言寫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以前,你可能要預先租借好對應的服務伺服器,以應付大量的人潮。通常租的還是不夠一樣被網友罵到臭頭。但是Serverless不一樣,如果你的口袋夠深,把Scalability用力地開下去,這些服務平台為了賺你的錢,會讓你在短短的時間內,可以開到對應的可承受附載的運算能力。

而在沒有使用的時候,不用趁廠商大特價提前買伺服器或硬碟起來放。有使用才付錢,沒使用不用錢的計價方式,讓小資新創也能在有限的預算內,把服務上架。

目前比較熱門的Serverless分別有,Amazon Lambda,Azure Functions,Google Cloud Functions,各有優劣,但Serverless核心精神不變

Serverless有什麼好處?

1. 降低開發成本

  • 開發者專注在程式邏輯,不用花很多時間在管理伺服器
  • 更快打造出雛形及產品

2. 降低營運成本

  • 新創不用砸大錢租或購買伺服器,透過Serverless很快就能建置出服務
  • Pay What You Use,有用到才付錢,很多時候公司會先買很多機器,因應未來Scale擴充的需求,但若平時沒用到那麼多,閒置的機器不是很浪費錢嗎

3. 擴展能力

  • 幾個設定就能讓你的應用程式更有彈性,假設是一個交通票訂購網站,平日的時候可能提供普通的Scale,面臨連假返鄉潮,要能應付大量旅客塞入訂票網站,可預先Scale UP承受人潮

Real World Sample 1 - RESTful API

以我自己為例,我的前公司利用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~~~

Real World Sample 2 - Thumbnail Creator

另外很多人用Serverless打造出影片Thumbnail服務,只要有新的影片上傳到儲存空間,就會呼叫Functions,讀取影片並針對某個影格Capture,產出Thumbnail檔案,可以參考此篇文章
Auto-generate thumbnails using an Azure Function and Azure Blob Storage

範例程式在此:Github Demo

Functions vs Function App傻傻分不清楚

如果有自己查過Functions或聽過Function App的讀者,可能跟我有同樣的疑惑,怎麼一下Functions,一下又Function App,兩個有什麼不一樣?

Function App是佈署的一個單位,很多Functions聚在一起被佈署上去到雲端
他們可以擁有同樣的環境變數或是APP設定,然後可以一起被彈性擴展

左邊是單一個產生thumbnail檔案的Funtions
右邊是多個funtions組成的Function App(RESTfuk API)

今天要學習份量比較多,大家消化一下喔!!
我們在下一篇DAY05將帶大家動手建一個自己的Functions囉!


參考及圖片來源


上一篇
[DAY03] Azure實作坊Workshop1~6規劃
下一篇
[DAY05] (實作)Serverless打造工程師交友小工具-Azure Functions⚡(上篇)
系列文
30天手把手帶你趣學Azure☁️-初學者也能動手實作🙌🏻30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

1
卡斯
iT邦研究生 1 級 ‧ 2018-10-19 00:32:33

太強了/images/emoticon/emoticon01.gif

陳小熊 iT邦新手 4 級 ‧ 2018-10-19 00:33:11 檢舉

哈哈!謝謝!後面我會努力的!

卡斯 iT邦研究生 1 級 ‧ 2018-10-19 00:35:17 檢舉

/images/emoticon/emoticon08.gif

1
祐yo
iT邦新手 5 級 ‧ 2018-10-19 00:35:09

好厲害 期待開始開發~~
彩蛋明天有沒有更豐富的XD

陳小熊 iT邦新手 4 級 ‧ 2018-10-19 00:55:13 檢舉

謝謝! 明天寫點日本女大學生特色好了 XDD

我要留言

立即登入留言