Open5
Google App Engineのトラフィック分割機能を使って、特定ユーザーのみ任意のversionにルーティングさせ続ける方法を考える
ピン留めされたアイテム
やりたいこと
GAEのバージョン管理機能を使用して、社内のユーザーへのみFeatureを先行リリースしたい
- latest version には、特定ユーザー(社内等)のみをルーティング
- latest-1 version には、それ以外の全エンドユーザーをルーティング
トラフィック分割の方法には、以下の3パターンが指定可能
- 完全ランダム
- IPアドレス分割
- Cookie分割
IPアドレス分割は技術介入の余地がないと思われるので、Cookie分割で検討してみる
トラフィックの割合にCookieの数値が対応しているため、
法則に従ってCookieに数値をセットすればルーティングをコントロールすることができるとのこと
blue, green, yellow の3versionをデプロイして検証を行う。
検証方法
- 2つのversionに1:9でトラフィックを割り当てる
- ブラウザの dev console から Cookie の
GOOGAPPUID
を直接修正 - 修正後にリロードし、どの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の設定幅は一致していることがわかるが、
トラフィック分割の切り替えの度に数値帯の順番がぐちゃぐちゃになるので、切り替え後に実際にアクセスして確認しなければ正確な数値帯の把握は困難と思われる