HELLO GAE STANDARD PART 2: 服務與版本

HELLO GAE STANDARD PART 2: 服務與版本

在上一篇教學文章 Hello GAE Standard Part 1 之後,本篇文章接著介紹 Google App Engine 的兩項功能:服務 (Services) 與版本 (Versions)。

Services 功能方便開發者部署與管理單一應用程式下的不同子專案,且能分別加以監控;Versions 功能則使不同版本間的轉移更加簡便,避免新建置的 App 版本流量負荷過重。

 

 
 

取得範例程式專案

用 git 指令從 GitHub 取得 hello_gao 專案的程式碼,並執行指令切換到 services_and_versions 分支:

 

SERVICES 介紹

在同一個 GCP 專案(project)下,想要在 GAE 上同時部署多個程式碼專案,可透過 services 來切分。

1. app.yaml 參數

從範例程式專案中的 app.yaml 可以看到一個參數:

這邊的 module 與 service 是相同的設定,會區分是因為過去不同 SDK 造成的差異,但現在無論是 gcloud SDK[1] 還是 goapp[2] (一個 for go 的 app engine sdk) 都可使用 module/service 其一作為設定。

如果 app.yaml 沒有設定任何 module/service,表示採用預設值 default 。

 

2. Default 部署

現在先部署一版 module/service 為 default 的 app.yaml:

執行指令部署:

 

3. 修改程式碼

修改 app.yaml,將 module/service 改成 bear

並同時修改程式碼 hello.go

執行指令部署:

 

4. 查看應用程式

請將以下指令中 改成想要查看的 module/service 再執行

以 module/service 為 default 的應用程式為例:

若想要查看 module/service 為 bear 的應用程式:

除了 default 以外,其他 module/service 的網址都會以 -dot-.appspot.com 的格式呈現。

 

5. 於管理頁面中查看

在 App Engine 管理頁面可以在 Services 頁面中可以看到數個 module/service:

 

VERSIONS 介紹

version 顧名思義就是版本,軟體開發時會需要進行進/降版、同時並行的藍綠佈署,抑或是行銷上的 A/B testing,在 GAE 上可以透過參數 versions 區別應用程式的不同版本。

可以在 app.yaml 中設定 versoin 上,但不建議這麼做,而是建議在執行部署指令時加上參數 -v 來指名版號,示範如下:

 

Lab 示範

首先確認並修改 app.yaml ,將 module/service 改成 default

修改 hello.go

部署 default V2:

到 App Engine 管理頁面可以看到現行版本已進版到 V2:

如果只想部署新版本,但還不想提供外部訪問,可以添加參數設定。

這樣在 App Engine 上就能看到新版本,但使用者訪問的時候還是舊版本的應用程式。

 

多版本同時進行

1. 以 Versions 管理流量

進到 split traffic 來切分流量:

切分方式可以根據 IP address/Cookie/Random,如果是 Random 請注意該 GAE 服務是否可以隨意變換後端機器。

 

2. 以 URL path 查看流量

 -dot-.appspot.com

以下版本為 20180313t144913:

以下版本為 V2:

可以發現,moduel/service 跟 version 在 URL path 的呈現方式是一樣的,所以千萬不要在 service 與 version 使用相同的命名,service 與 version 必須是唯一的值。

 

參考連結

 
 

更多手把手教學文

 

文/Bear Su|編輯/Jessie

About CloudMile

CloudMile 成立於 2016 年,致力於 B2B 雲端與人工智慧應用,為客戶建立國際級雲端架構,並以機器學習及大數據分析技術為核心,協助企業進行商業預測與產業升級。

Website: https://www.mile.cloud/
Facebook: https://www.facebook.com/CloudMileFans/
Linkedin: https://www.linkedin.com/company/cloudmile/
Youtube: https://www.youtube.com/c/CloudMile
Contact Us: service@mile.cloud

文章授權(創用CC授權)
by-nc-nd
comment

CONTACT US

We're not around right now. But you can send us an email and we'll get back to you, asap.

Sending

©2019 Business Next Publishing Corp. 聯絡、建議隱私權

Log in with your credentials

or    

Forgot your details?

Create Account