Blog Go

Công bố môi trường chạy Go 1.11 mới của App Engine

Eno Compton và Tyler Bui-Palsulich
16 October 2018

App Engine đã ra mắt hỗ trợ thử nghiệm cho Go vào năm 2011. Trong những năm tiếp theo, cộng đồng Go đã phát triển đáng kể và đã định hình các mẫu thành ngữ cho ứng dụng trên đám mây. Hôm nay, Google Cloud công bố môi trường chạy Go 1.11 mới cho môi trường chuẩn của App Engine, cung cấp toàn bộ sức mạnh của App Engine, những thứ như chỉ trả tiền cho những gì bạn dùng, tự động mở rộng, và hạ tầng được quản lý, trong khi vẫn hỗ trợ Go theo đúng thành ngữ.

Bắt đầu từ Go 1.11, Go trên App Engine không còn giới hạn về cấu trúc ứng dụng, các package được hỗ trợ, giá trị context.Context, hay HTTP client. Hãy viết ứng dụng Go của bạn theo cách bạn muốn, thêm một tệp app.yaml, và ứng dụng đã sẵn sàng để triển khai trên App Engine. Specifying Dependencies mô tả cách môi trường chạy mới hỗ trợ vendoringmodules (thử nghiệm) cho việc quản lý dependency.

Cùng với Cloud Functions hỗ trợ Go (sẽ nói thêm trong một bài viết sau), App Engine cung cấp một cách hấp dẫn để chạy mã Go trên Google Cloud Platform (GCP) mà không cần bận tâm tới hạ tầng bên dưới.

Hãy cùng xem cách tạo một ứng dụng nhỏ cho App Engine. Trong ví dụ này, chúng tôi giả định một quy trình làm việc dựa trên GOPATH, dù Go modules cũng đã có hỗ trợ thử nghiệm.

Đầu tiên, bạn tạo ứng dụng trong GOPATH của mình:

// 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, 世界"))
}

Đoạn mã chứa một cách thiết lập theo đúng thành ngữ cho một HTTP server nhỏ phản hồi “Hello, 世界.” Nếu bạn có kinh nghiệm với App Engine trước đây, bạn sẽ nhận ra sự vắng mặt của bất kỳ lệnh gọi nào tới appengine.Main(), thứ nay hoàn toàn là tùy chọn. Hơn nữa, mã ứng dụng hoàn toàn có tính di động, không có sự ràng buộc nào với hạ tầng mà ứng dụng của bạn được triển khai lên.

Nếu bạn cần dùng dependency bên ngoài, bạn có thể thêm các dependency đó vào một thư mục vendor hoặc vào một tệp go.mod, cả hai đều được môi trường chạy mới hỗ trợ.

Sau khi hoàn tất mã ứng dụng, hãy tạo một tệp app.yaml để chỉ định môi trường chạy:

runtime: go111

Cuối cùng, hãy chuẩn bị máy của bạn với một tài khoản Google Cloud Platform:

Khi mọi thiết lập đã hoàn tất, bạn có thể triển khai chỉ với một lệnh:

gcloud app deploy

Chúng tôi tin rằng các nhà phát triển Go sẽ thấy môi trường chạy Go 1.11 mới cho App Engine là một bổ sung thú vị cho các lựa chọn hiện có để chạy ứng dụng Go. Có một gói miễn phí. Hãy xem hướng dẫn bắt đầu hoặc hướng dẫn di chuyển và triển khai một ứng dụng lên môi trường chạy mới ngay hôm nay!

Bài tiếp theo: Tham gia Khảo sát Người dùng Go 2018
Bài trước: Dependency Injection tại thời điểm biên dịch với Wire của Go Cloud
Mục lục blog