iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 16
1
自我挑戰組

谷哥 Google Cloud Platform 勇者的試煉系列 第 16

一定要開機器來放著不能有事件觸發執行才付費嗎?淺談Cloud Functions

目前為止從傳統走向至今,仍然需要高度依賴在後端有資源已經等待著有服務需求來做適時的回應,但無論多與少都是要租用痴痴的等...雖然已經有非常多的監看工具可以配合調整至貼近符合商業服務需求的效能資源,但還是有很多是在等待的時間..成本還是不知不覺的流逝..

我們難道不能跟全聯一樣省了還要更省(有真的用到資源執行才付錢...沒用到不用付的)另外也更不用管理惱人的IaaS / PaaS都能省去這樣的管理工作..只要把核心的事做好剩下全都是雲端的事.
Serverless這一詞就這樣誕生了...其實Serverless(所謂無伺服器)並非指沒有Server,而是不用去擔心維護Server 這件事,而無論是部署或開發,都是以一個個function作為單位,用事件驅動(event driven)方式觸發才進行運算,而有在運算才會產生成本...這就是基本function的忠旨.

這是基本的Cloud Functions流程圖,對外可連結多個API服務透過Cloud Functions將單一功能程式碼附加在雲端服務事件上。當Event觸發時,Cloud Functions會啟動執行動作並回傳結果.
https://ithelp.ithome.com.tw/upload/images/20181016/20025481Q5MMRzlLI0.png

其實如果沒有超過所規定的次數,資料量都是免費的!以下有更詳盡的價格費用
補充價格計算上其中一欄需要你填入執行時會需要多少ms-->這單位是豪秒(1000ms=1sec)記得.
https://cloud.google.com/functions/pricing#invocations
https://ithelp.ithome.com.tw/upload/images/20181016/20025481YGp9BUx2xY.png

我這邊擷取官方對於Cloud Functions使用的效能規格使用建議場景(標準小型函數運算如紅框所視)
https://ithelp.ithome.com.tw/upload/images/20181016/20025481ir1hsiZhUU.png

接下來我們來簡單做個牛刀小試.選到Cloud Functions
https://ithelp.ithome.com.tw/upload/images/20181016/20025481ocrPj3QyFS.png

需要啟用API,就啟用吧!
https://ithelp.ithome.com.tw/upload/images/20181016/20025481Ady9LbKKAf.png

因為都是用程式碼做驅動,來啟用函式
https://ithelp.ithome.com.tw/upload/images/20181016/20025481taeLASVXpo.png

選擇後端執行的規格效能(我選擇小型函式場景256MB)
https://ithelp.ithome.com.tw/upload/images/20181016/20025481szfmR9yG0Y.png

觸發條件非常多種,我先選擇http類型
https://ithelp.ithome.com.tw/upload/images/20181016/200254818BF29vvI5F.png

有分原始碼上版方式以及程式語言(目前僅支援Node.js / Python兩種),我先選擇手動edit以及Node.js 6.x
https://ithelp.ithome.com.tw/upload/images/20181016/20025481XBLB1P9pfj.png

再來是服務執行的地區,我選擇亞洲
https://ithelp.ithome.com.tw/upload/images/20181016/20025481BOXB6H6TiZ.png

逾時終止的時間就依照預設60秒(自行決定調整)完成就建立吧!
https://ithelp.ithome.com.tw/upload/images/20181016/20025481nYhyzU2tqK.png

Cloud Functions建立中
https://ithelp.ithome.com.tw/upload/images/20181016/20025481I2mk3BO8Ad.png

OK,建立完成了!還算快,來簡單測試一下函式
https://ithelp.ithome.com.tw/upload/images/20181016/20025481Ysl8P6gSKL.png

觸發條件經過剛剛設定用http來做觸發產生了一組URL
https://ithelp.ithome.com.tw/upload/images/20181016/200254815VSu5E4Pax.png

來執行一下這組URL沒錯產生顯示Hello World的網頁
https://ithelp.ithome.com.tw/upload/images/20181016/20025481UJLWKAb9cV.png

來簡單執行一下Hello World測試,輸出端立刻就印出結果
https://ithelp.ithome.com.tw/upload/images/20181016/20025481hOP8w81csu.png

我們可以看到執行Functions後都有所謂的狀態紀錄(最多顯示100筆)成功狀態200 OK
https://ithelp.ithome.com.tw/upload/images/20181016/20025481zr6JYEvyjT.png

回頭來看看這筆Functions監看包含有事件呼叫,記憶體用量與執行花費多少時間從趨勢圖來做檢視
https://ithelp.ithome.com.tw/upload/images/20181016/200254812To23U03qD.png

試試用github上的sample指令來做觸發(範例連結如下)
https://github.com/GoogleCloudPlatform/nodejs-docs-samples/tree/master/functions/gcs
https://ithelp.ithome.com.tw/upload/images/20181016/20025481ZU8DbAzTuP.png

用github上的命令用http方式建立一functions
https://ithelp.ithome.com.tw/upload/images/20181016/20025481t24Alae00k.png

可以監看到剛剛所調用的次數時間(wordCount)
https://ithelp.ithome.com.tw/upload/images/20181016/20025481ZRaz7l8BF7.png

不過在最後階段要call sample.txt產生事件驅動卻一直說沒法讀取定義
https://ithelp.ithome.com.tw/upload/images/20181016/200254819FDD4DkD4W.png

Starkdriver上對此錯誤報告來看有不少行的錯誤....這真的要找時間來好好查一下了@@
https://ithelp.ithome.com.tw/upload/images/20181016/20025481qwW6MQdpir.png

這篇今天就到這了!!待小弟查到問題或有另外的OK的範例再來補充,感謝收看....81


上一篇
多雲合體 GCP 與 Azure VPN 打通之旅
下一篇
聽說 GCP CDN 只能自家服務才能快取加速,來一探究竟
系列文
谷哥 Google Cloud Platform 勇者的試煉30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言