選擇雲端和網路服務

概述

Go 協助企業建置和擴充雲端運算系統

隨著應用程式和處理移往雲端,並行運算已成為一大議題。雲端運算系統本質上會共用和擴充資源。協調對共用資源的存取是一個影響雲端中每項應用程式處理的議題,並需要「專為開發高度可靠的並行應用程式而設計」的程式語言。

隨著公司的成長,Go 讓擴充变得非常容易,這點非常重要,因為隨著我們的工程團隊成長,每個服務都可以由不同的部門管理。

主要優點

解決開發週期時間與伺服器效能的取捨

Go 是用來滿足這些擴展應用程式、微服與雲端發展中並行化需求而建立的。事實上,雲端原生運算基金會中超過 75% 的專案都是以 Go 編寫的。

Go 透過它的快速建構執行時間能支援互動開發並降低記憶體與 CPU 使用率,進而減少了進行權衡取捨的需求。使用 Go 建構的伺服器能體驗即時啟動時間,並且在按使用量計費和無伺服器部署中,執行成本較低。

運用標準慣用語 API 來處理現代雲端中的挑戰

Go 處理開發人員在現代雲端中所面臨的眾多挑戰,提供標準慣用語 API 並內建並行化功能以善用多核心處理器。Go 的低延遲和無調整功能在效能和生產力之間取得極佳的平衡,讓工程團隊能夠選擇並移轉。

使用案例

用於雲端運算的 Go

在建構服務方面,Go 的優點顯而易見。它的速度和內建並行化支援,讓服務能快速且有效率執行;同時靜態型別、強大的工具,以及對簡潔度和易讀性的重視,有助於建構可靠且可維護的程式碼。

Go 有一個強大的生態系統來支援服務發展。標準函式庫 中包含許多常見需求套件,像是 HTTP 伺服器和用戶端、JSON/XML 剖析、SQL 資料庫以及範圍廣泛的安全性/加密功能,而 Go 執行時間則包含 競爭偵測基準/剖析、程式碼產生和靜態程式碼分析工具。

主要的雲端供應商 (GCP, AWS, Azure) 已為其服務提供 Go API,而普及的開源程式庫提供 API 工具 (Swagger)、傳輸 (通訊協定緩衝區, gRPC)、監控 (OpenCensus)、物件關聯式對應 (gORM) 和驗證 (JWT) 的支援。開放原始碼社群也提供數個服務架構,包括 Go KitGo MicroGizmo,這些架構可以作為快速入門的絕佳方式。

針對雲端運算的 Go 工具

Docker Docker

Docker 是一個平台即服務,以容器的形式提供軟體。容器會將軟體、函式庫和組態檔打包,由 Docker 引擎主機,並由單一作業系統核心執行(使用比虛擬機器少的系統資源)。

雲端開發人員使用 Docker 來管理他們的 Go 程式碼和支援多個平台,因為 Docker 支援開發工作流程和部署程序。

Kubernetes Kubernetes

Kubernetes 是一個使用 Go 編寫的開放原始碼容器編排系統,用於自動化 Web 應用程式部署。Web 應用程式通常會使用容器(如上所述)與其相依性和組態打包建立。Kubernetes 協助以規模化方式部署和管理這些容器。雲端程式設計師使用 Kubernetes 來快速建置、傳送和擴充套件容器化應用程式,透過控制容器執行方式的 API 來管理日益增長的複雜性。

客戶 簡要介紹 使用 Go 的專案
Google Google Google Google Cloud 在其涵蓋產品和工具的生態系統中使用 Go,包括 Kubernetes、gVisor、Knative、Istio 和 Anthos。Go 在 Google Cloud 上的所有 API 和執行階段都獲得完全支援。
Capital One Capital One Capital One Capital One 使用 Go 來支援信貸優惠 API,這是其一項關鍵服務。工程團隊也使用 Go 建構其無伺服器架構,並提到 Go 的速度和簡潔,以及 "[他們] 不想在沒有 Go 的情況下採用無伺服器架構”。
Dropbox Dropbox Dropbox Dropbox 是建構在 Python 上,但於 2013 年決定將其效能關鍵後端 migragte 到 Go。現今,公司的大部分基礎架構都是用 Go 編寫的。

開始使用

雲端運算 Go 書籍

  • Echo

    效能高、可延伸的 Go 網頁框架,且簡約時尚

  • Flamingo

    一個快速的開源框架,以 Go 開發,搭配乾淨且可擴充的架構

  • Gin

    以 Go 編寫的網頁框架,搭配類似的 Martini API。

  • Gorilla

    為 Go 程式語言的網頁工具組。

查看更多
  • net/http

    標準函式庫 HTTP 套件

  • julienschmidt/httprouter

    輕巧高效能 HTTP 請求路由器

  • gorilla/mux

    強大的 HTTP 路由器和 URL 比對器,可以用來打造包含 🦍 的 Go 網頁伺服器

  • Chi

    輕巧、習慣用語且可組合的路由器,可用來打造 Go HTTP 服務

查看更多
查看更多
  • database/sql

    標準函式庫介面,支援 MySQL、Postgres、Oracle、MS SQL、BigQuery 和大多數 SQL 資料庫的驅動程式

  • mongo-driver/mongo

    Go 支援的 MongoDB 驅動程式

  • elastic/go-elasticsearch

    Go 的 Elasticsearch 應用程式

  • GORM

    Go 的 ORM 函式庫

  • Bleve

    Go 的全文搜尋和索引

  • CockroachDB

    資料庫的演化,旨在建構一個雲端,提供有彈性、一致、可廣泛使用的分散式 SQL

查看更多
查看更多
  • gopherjs

    Go 轉譯器,可轉譯為 JavaScript,讓開發者能用 Go 撰寫所有瀏覽器都能執行的前端程式碼

查看更多