Open5

Google App Engineのトラフィック分割機能を使って、特定ユーザーのみ任意のversionにルーティングさせ続ける方法を考える

ピン留めされたアイテム
mmoritommorito

やりたいこと

GAEのバージョン管理機能を使用して、社内のユーザーへのみFeatureを先行リリースしたい

  • latest version には、特定ユーザー(社内等)のみをルーティング
  • latest-1 version には、それ以外の全エンドユーザーをルーティング
mmoritommorito

blue, green, yellow の3versionをデプロイして検証を行う。

検証方法

  1. 2つのversionに1:9でトラフィックを割り当てる
  2. ブラウザの dev console から Cookie の GOOGAPPUID を直接修正
  3. 修正後にリロードし、どのversionにリクエストが来たか確認する

結果

Blue: 90% , Green: 10%

Cookie version
1〜99 Green
100〜999 Blue

Green: 90% , Yellow: 10%

Cookie version
1〜899 Green
900〜 999 Yellow

Yellow: 90% , Blue: 10%

Cookie version
1〜99 Yellow
100〜199 Blue
200〜999 Yellow

結論

トラフィックのパーセントとCookieの設定幅は一致していることがわかるが、
トラフィック分割の切り替えの度に数値帯の順番がぐちゃぐちゃになるので、切り替え後に実際にアクセスして確認しなければ正確な数値帯の把握は困難と思われる

mmoritommorito

一応別の角度からも検討

Cloud Load Barancing の Serverless NEG を使ってGAEへのルーティングを制御できないか調査

URLマップ を使用して複数のドメイン/パスを紐付け、異なるバックエンドサービスへルーティングすることはできそうだが、
バックエンドサービスに指定できるのはGAEのserviceまでなので、やはりトラフィック分割の制御はGAEのトラフィック分割機能に依存するっぽい

まぁ、そりゃそうだよなという感じ