GCP:GAE バージョン管理を活用する

 GAEで便利なのがバージョン管理機能。
 Git等のVCSではなく、デプロイしたバージョンを管理してアプリケーションフローの制御が出来る、AppEngineの管理機能だ。

 Web管理画面やgcloudコマンドで特定バージョンのインスタンスへフローを制御できたり、バージョンを指定したURLにアクセスすることで呼び出し側が任意のバージョンを指定できる。
 これって更新をアップロードしたときとかに、問題があれば迅速に旧バージョンに戻せるし、API的に使っている場合は呼び出し側でバージョン指定で呼び出すことでリリース候補を指定して作業したり出来る。 あるいは、ABテストのような感じに同じデータソースの異なるアプリケーションビューを同時参照できる。 本番リリース時には、リリースを管理する部署で問題があったら勝手に戻して貰えるので、開発部署がせっつかれずに済むと言うありがたい機能でもある。

 バージョンを指定してリリースするときは、

みたいな感じでデプロイすれば良い。 no-promoteするとデフォルトのフローが切り替わらず既存バージョンで動作し続け、-vで指定したバージョン名としてデプロイされる。 バージョン名は大文字アルファベットなどを許容しないので、v101みたいな小文字と数字の組み合わせで書く。
 つまり、この場合はリリース環境での最終確認用に本来アクセスと別のインスタンスをアクセスできる状態にしているので、クライアントで https://バージョン-dot-プロジェクトID.appspot.com/ にアクセスすることでこのデプロイしたバージョンにアクセスできる。 確認が完了したら、デフォルトのフローをこちらに流すように設定変更してもいいし、同じバージョンを本流に上げ直しても良い。
 no-promoteしたバージョンにフローを切り替える場合は

 で、デフォルトの プロジェクトID.appspot.com のアクセスが指定したバージョンに向く。 リリース後に問題が見つかった場合は、バージョン指定で古いバージョンに切り替えてやれば良い。

利用ケース1
 本リリース
gcloud app deploy -v v110
 リリース後の問題発生!
gcloud app versions migrate v109
 古いバージョンに戻る

利用ケース2
 リリース候補としてアップ
gcloud app deploy -v v110rc
 v110rc-dot-project.appspot.comで動作確認
 OK!
gcloud app deploy -v v110
 正式版としてアップするか
gcloud app versions migrate v110rc
 リリース候補に直接切り替える
 バージョンにRCとか付けてると切替は気持ち悪いんでアップしちゃった方が良いだろう。

(271)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP]   パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です