Serverless 介紹

  • 539
  • 0

至從上次的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