前面幾個章節有介紹了 Google Cloud 中常見的幾個 Compute Service 運算服務,分別是: Compute Engine、Cloud Functions、Cloud Run、Google Kubernetes Engine :
這邊也補充介紹 App Engine,它也是屬於 GCP 運算服務,只要上傳滿足該平台規範的 Code 格式就可以開始運作,會自動做負載平衡且並不需要管理任何硬體機器,聽說當年很紅的遊戲 Angry Birds 就是使用 App Engine 來作為服務平台。以上這五種運算服務應該在什麼情況下選擇呢? 選擇正確的基礎架構服務來運行 APP 是很重要的,故以下對其做一些廣義的整理和筆記。
Google Kubernetes Engine 簡稱是 GKE ,是一個由 Google 管理的 Kubernetes 開源容器編排平台的實現。因為 Kubernetes 的前身 Borg 本來就是 Google 內部的產品,憑藉著這樣的背景 GKE 號稱對於 Kubernetes 的支援跟擴展性跟其它雲端比起來會是最好的。對應其他的雲端服務是 :
- Amazon Web Services (AWS) : EKS
- Microsoft Azure : AKS
雲端化的 Kubernetes 簡單的說就是把可在地端原生的 Kubernetes 放到雲端上運行,由雲供應商幫助我們大幅簡化集群的設置管理與維運。由於只是讓雲供應商託管 Kubernetes ,最終差異也只是看雲供應商如何「預設」和「整合自己平台其他服務」至 Kubernetes 罷了,本質上 EKS、AKS、GKE 差異並不大,故基本上不推薦隨意更換 Kubernetes 服務的雲供應商或使用多雲,會考慮 GKE 的公司,大多都是只是思考怎樣更方便的整合 Kubernetes 和 GCP 的各種服務而已。
Cloud Run 是一套基於 Knative 的全代管無伺服器(serverless)容器平台,也屬於 Google Cloud 中的 FaaS 服務,功能是可在 GCP 託管的環境中運行 Container 且已經具有高擴展性基礎架構。若從「無基礎建設的容器化平台(Containers without infrastructure)」的角度來說,對應其他的雲端服務是 :
- Amazon Web Services (AWS) : AWS App Runner、Fargate
- Microsoft Azure : Azure Container Apps、Azure Container Instances
Cloud Run 一個蠻大的好處是 : 如果已經把程式打包成 Container Image 鏡象檔,那就可以使用任何程式語言來部署,但其實 Container Image 化是可選的,如果使用的是 Go、Node.js、Python、Java 等等常用的語言,也可以直接使用 Source Code 的方式來部署,讓我們可以使用 FaaS 的概念去執行如 Web Server 比較大型一點的程式。
Cloud Functions 是一個無伺服器的雲端執行環境 (serverless execution environment),會把寫出來的 code 完全託管給 GCP 並且無需配置任何 Infra 也不用管理任何 Servers 就可以執行了,對於程式設計師來說只需要專注在自己的程式邏輯即可,基本完全省去管理硬體的煩惱,為最標準的 FaaS 類型服務。對應其他的雲端服務是 :
- Amazon Web Services (AWS) : AWS Lamda
- Microsoft Azure : Azure Functions
Cloud Functions 可以用 Java、Python、Node.js、Go 等常用 coding language 來撰寫,適用於部署單一化用途的程式,或用於連接擴展其他的 GCP 雲端服務,以 Events and triggers 為其核心設計思想。
Cloud NAT 全稱是 Cloud Network Address Translation,是 Google Cloud 代管的 IP 轉譯服務,可在不公開 IP 位址的情況下,讓 GCP VM 或 GKE 內的 Pod 可以高效的連接上「外部網路 Internet」,而外部資源無法直接存取 Cloud NAT gateway 後方的資源,維持獨立性與安全性。對應其他的雲端服務是 :
- Amazon Web Services (AWS) : NAT gateways
- Microsoft Azure : Azure NAT Gateway
Cloud NAT 是以 Software-defined Networking 服務,中間不存在 proxy instance ,故性能方面比傳統 NAT 好上不少。除了 VM、GKE 之外,也可使用在 Cloud Run、Cloud Functions、App Engine 等服務。
Cloud DNS 是 Google 提供的代管式的全球 Domain Name System(網域名稱系統服務),為一個分布式的分層資料庫(hierarchical distributed database) 用於存儲 IP addresses 和 Domain Name 的對應關係,還可以建立 DNS Zone 並在其下管理和創建 Record 。對應其他的雲端服務是 :
- Amazon Web Services (AWS) : Amazon Route 53
- Microsoft Azure : Azure DNS
Cloud DNS 是提供代管功能而不是註冊,而代管的好處是有一個「共同管理維護」的介面 ; 還能「基於地理位置」將流量轉到最接近的服務器從而提高性能與速度 ; 結合「 GCP 雲端安全服務」保護應用程式免於如 DDoS 攻擊。 最後比較特別的是 Google 的 Cloud DNS 服務號稱是 100% SLA 服務保證絕對不會中斷, Google 對其 DNS 服務設計非常的有信心。