至從上次的DevOps 雲的萬物論這是第二次聽到微軟的傳教士Eric介紹了,做一下筆記。
[Serverless + 雲馥數位]
-
Iaas就像是給你一個空間你可以建立任何系統,或是軟體
-
Paas就像是給你一個VM,讓你建立你的應用程式,有人幫你管infrastructure
-
Serverless就像是一張床給你用,而且是你有睡到才算價錢
-
多半在使用Paas的時候你已經知道你的目的,你知道你要哪些服務,但是你會需要顧慮系統層,例如有使用StickySession,當網路流量大時才開很多台機器,流量還是會綁在同一台機器上,所以使用Paas還是需要顧慮到server
-
Serverless 意思就是 No Server,他閒置的時候不算錢,有用到她才算,而Paas算是雇用一個機器,他是一直在算的(最高階的版本是preserve的)
-
重點:
-
伺服器抽象化: 你不用管伺服器在哪,你也不知道在哪,沒有機器撐不住的狀況,Azure會auto scale
-
事件驅動: 可以是時間觸發,非同步,擴展容易
-
錙銖必較: 有用到才付錢
-
-
好處:
-
希望維護的是application而不是伺服器
-
減輕上線佈署,降低我本機可以,但是stage不行等狀況
-
快速開發,實現一個功能,快速上線,不需要MVC framework不需要部屬IIS
-
可微服務化
-
-
什麼狀況事件符合使用:
-
類似base on Event事件的,EX: IOT
-
-
-
即時串流處理: 當來源不確定的時候,不知道request會多少的時候很適用透過Queue在使用Functions(他這裡解釋每個Function是獨立一件事,微服務概念),報名網站送email(大量寄信會變成垃圾信,適合此情境),
-
週期性: 定時刪除清理某些資料,獨立單獨功能
-
應用程式後端服務: 假如APP拍照上傳圖片,圖片在blob有新增會觸發function的啟動坐進一步地處理縮圖等等之類的,(autoScale特性完全不需要擔心硬體,如果相對應功能一直擴展)
-
機器人ChatBot: 製作回應訊息,需求來需要時間分析再回應很適合
-
Serverless 有三種
-
-
Functions: 一般基礎的function採用trigger跟blinding方式,例如時間觸發,binding blob更新
-
Logic Apps: 比較偏企業使用,不需要寫程式,可以直接使用內建拖拉功能,有點像Office 365 的flow。可以透過這個功能綁定第三方功能,例如設定每1小時發目前天氣狀況在Facebook上 (WebHook),或是綁定Azure上面的Queue,當有更新就做發信動作(註冊)。
-
Event Grid (2017-9月上市): 可以透過這個機制綁定本機跟雲端的Azure Function
-
開發工具: 圖上左手邊,VS 2017可以建立,佈署,監看透過Application Insight
技術流程:
-
Request Driven Model: 一般functions 的使用
-
Event-Driven Model: Event Grid的使用
-
不限於執行在公有雲
-
可購買Azure Stack (要錢)
-
Azure Functions Runtime (免費)
-
可由npm下載,或是windows Installer
-
-
Azure IoT Edge
Eric建議:
-
多半當你的Functions量很大的時候會不再適合,需要評估跟計算使用量跟價格
-
服務剛起來的時候很適合使用
-
Functions 應該只做一件事(不能rollback)
-
Functions 應該盡快結束,不適合做再要等第三方回應的,時間是金錢
-
沒有儲存體,例如session,(屬於RestFul)
-
不建議使用Java,因為java需要JVM,起來的速度就會稍嫌慢一點
-
然後warm up 會是個問題,要等她一下下是可期待的
Source: Eric的拍照範例GitHub