哈囉大家好,我是古古
前幾篇文章有介紹了許多 Google Cloud 中好用的運算服務,那麼這篇文章就會來介紹最後一種常見的運算服務,也就是同樣屬於 FaaS 服務的 Cloud Run
Cloud Run 也是 Google Cloud 中的 FaaS 運算服務,因此在 Google Cloud 中,是有兩種運算服務同為 FaaS 架構的,一個是在之前「Day 8 - 運算服務 - Cloud Functions」提到的 Cloud Functions,另一個就是這篇文章中的 Cloud Run
在前面的文章中有介紹到 Cloud Functions,基本上 Cloud Functions 就是很純的 FaaS 服務,也就是「撰寫輕量化、單一功能的小程式」,因此免除了 Server 架設環境的步驟,所以在部署上就可以更快的完成
不過在 Cloud Functions 的概念中,這些小程式 都不是 Web Server,而只是圖片轉換、或是生成縮圖這種單一性質的功能
所以 Google 就嘗試魔改了 Cloud Functions 的概念,提出 Cloud Run 這個新的運算服務,在 Cloud Run 中,只是將這些「單一功能的小程式」,改成是比較重一點的「Web Server」,但一樣是有前端的 request 來才開啟這個 Web Server 的服務,request 走了就 shutdown 這個 Web Server
因此 Cloud Run 的用途,即是可以「讓我們可以使用 FaaS 的概念,去執行 Web Server 的程式」
Cloud Functions:經典的 FaaS 服務,所有的程式都是「輕量化、單一功能的」
Cloud Run:汲取 Cloud Functions 的 FaaS 服務的概念,只是將單一功能的小程式替換成是 Web Server 而已,不過一樣是有請求來才啟動 Web Server,請求走就 shutodown Web Server
不過也因為 Cloud Functions 和 Cloud Run 都是使用了 FaaS 的概念在設計,所以他們兩個就都是屬於 Serverless 無伺服器運算的一員
為了區分方便,Google 把 Cloud Functions 定義為 Serveless logic,而 Cloud Run 則定義為 Serverless platform,因此在下圖中也可以看到,這兩種運算服務都是屬於 Serverless 系列的分類
由於 Cloud Run 本身仍舊是遵循 FaaS 服務的特性,而 FaaS 的宗旨概念是 Serverless (無伺服器運算),因此 Cloud Run 是不會長期運行一個 Web Server 在那裡傻傻的等請求過來,而是請求來才啟動 Web Server 處理 request,請求走就 shutdown Web Server,達到無伺服器的效果
因此要能夠讓 Cloud Run 運行的重要關鍵,即是 「該程式必須是一個能夠快速啟動的 Web Server」,這樣子當請求來 Cloud Run 要馬上開機來處理的時候,才不會開機太久導致請求卡在那裡
因此大家如果想要使用 Cloud Run 來運行 Web Server 的話,必須要考慮該 Web Server 是否具備快速的啟動速度
補充:以 Java 後端的 Spring Boot 框架為例,Spring Boot 有在研發一個新的 JVM(名字叫做 GraalVM),嘗試加速 Spring Boot 程式的啟動速度,所以目前也是有許多框架已經著手開發,為將來的 FaaS 運算服務佈局
也因為 Cloud Run 的運行邏輯是「當 request 來了才啟動 Web Server 去處理」,因此在計費方式上,在開機和關機的過程中,會有一段時間是 Cloud Run 自己在拉資源來處理,而那一段 Cloud Run 佔用的時間是不計費的
所以大家只要付費 handling request 和 Web Server 開機關機的時數即可
這篇文章先介紹了 Cloud Run 這個 FaaS 運算服務的用途,以及介紹了他和 Cloud Functions 之間的差別,最後也介紹了 Cloud Run 的特性和計費方式
那麼到這邊為止,我們就介紹完了 Google Cloud 中的五種常見的運算服務了,所以下一篇文章,我們就會來總結一下,在這個運算服務的章節裡都介紹了哪些服務,那我們就下一篇文章見啦!