Go 部落格
宣佈 App Engine 推出新的 Go 1.11 Runtime
App Engine 於 2011 年推出了 對 Go 的實驗性支援。在接下來的幾年裡,Go 社群顯著增長,並形成了適用於雲應用程式的慣用模式。今天,Google Cloud 正宣佈推出適用於 App Engine 標準環境的新 Go 1.11 Runtime,該 Runtime 提供了 App Engine 的所有強大功能——例如按實際使用量付費、自動擴縮容和託管基礎設施——同時支援慣用的 Go 風格。
從 Go 1.11 開始,App Engine 上的 Go 在應用程式結構、支援的程式包、context.Context
值或 HTTP 客戶端方面沒有任何限制。以您喜歡的方式編寫您的 Go 應用程式,新增一個 app.yaml
檔案,您的應用程式就可以在 App Engine 上部署了。指定依賴項說明了新 Runtime 如何支援供應商目錄(vendoring)和模組(modules)(實驗性)來進行依賴項管理。
此外,結合對 Cloud Functions 對 Go 的支援(更多內容將在後續文章中介紹),App Engine 為在 Google Cloud Platform (GCP) 上執行 Go 程式碼提供了一種引人注目的方式,無需擔心底層基礎設施。
讓我們來看一個為 App Engine 建立小型應用程式的例子。在此示例中,我們假設使用基於 GOPATH
的工作流,儘管 Go 模組也支援實驗性功能。
首先,在您的 GOPATH
中建立應用程式
// This server can run on App Engine.
package main
import (
"fmt"
"log"
"net/http"
"os"
)
func main() {
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
http.HandleFunc("/", hello)
log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil))
}
func hello(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, 世界"))
}
程式碼包含一個慣用的設定,用於一個響應“Hello, 世界。”的小型 HTTP 伺服器。如果您有之前的 App Engine 經驗,您會注意到不再需要呼叫 appengine.Main()
,現在它是完全可選的。此外,應用程式程式碼是完全可移植的——它與您的應用程式部署所在的基礎設施沒有任何關聯。
如果您需要使用外部依賴項,可以將這些依賴項新增到 vendor
目錄或 go.mod
檔案中,新 Runtime 支援這兩種方式。
完成應用程式程式碼後,建立一個 app.yaml
檔案來指定 Runtime
runtime: go111
最後,設定您的機器並擁有一個 Google Cloud Platform 賬戶
完成所有設定後,您可以使用一個命令進行部署
gcloud app deploy
我們認為 Go 開發者會發現 App Engine 的新 Go 1.11 Runtime 是可用於執行 Go 應用程式的選項中一個激動人心的補充。這裡有免費套餐。請檢視入門指南或遷移指南,並立即將應用程式部署到新 Runtime!
下一篇文章:參與 2018 年 Go 使用者調查
上一篇文章:使用 Go Cloud 的 Wire 進行編譯時依賴注入
部落格索引