需求是我在 GCP 用 Spring Boot 部署了一台 Cloud Run,同時也 Cloud Run 申請了一台 PostgreSQL,我希望能從這台 Cloud Run 使用 JDBC 連線到 Cloud SQL,原本認為應該很容易,意外的卻卡關有點久,整理了一下筆記,至少下次有同樣的需求時不會忘掉
筆記開始前
- 在 Cloud SQL 申請 PostgreSQL,這個部份不在這篇筆記討論的範圍,不過很簡單,一直按下一步就差不多了,要稍微注意的是 GCP 預設申請的是「4 個 vCPU 和 26 GB」的機器,價格有點貴,有預算考量的人記得申請時選等級差一點的機器
- 將 Spring Boot 包成 docker image 檔上傳到 GCP 的 Artifact Registry,這個部份也不在這篇筆記討論的範圍,晚點有空的時候再來整理一下這裏的筆記
什麼是 Cloud Run
Cloud Run 是 GCP 的一個 serverless 服務,和 AWS 的 Lambda 不同的是,Cloud Run 使用 docker container 來部署,也就是說只要能把程式包成 docker image 檔上傳到 GCP 的 Artifact Registry 或 Container Registry,程式就可以跑,不限制使用什麼語言,測試過 Python Flask 和 Java Spring Boot 都能正常執行
然後 Cloud Run 提供了「只在要求處理期間分配 CPU」和「隨時分配 CPU」兩種選項,實測如果選擇「只在要求處理期間分配 CPU」在很久沒有執行後,再次執行大概要等個 10 秒,如果某個服務不需要 24 小時執行(ex:排程執行的服務),這個選擇可以省下不少費用