Google App Engine(以下GAE)のバージョン管理がおもしろそうだったのでちょっと触ってみる。
やってみるリストというか目次
1.GAEで公開するアプリへのアクセス(URL)
2.バージョン管理
複数バージョンのアプリを用意して、トラフィック分割によるアプリの切替。
Blue-Green Deploymentてきなことを。。
##1.GAEで公開するアプリへのアクセス(URL)
GAEで公開するアプリは
http://[※プロジェクトID].appspot.com
でアクセスできる。
※プロジェクトIDはGoogle Cloud Platformでプロジェクト作成時に任意で設定するID
※GAEの中ではプロジェクトID=アプリケーションID
他にもバージョンを指定してもアクセスできる。
http://[バージョン]-dot-[※プロジェクトID].appspot.com
例)バージョン:1 プロジェクトID:test
http://1-dot-test.appspot.com
##2.バージョン管理
今日の目玉のバージョン管理。
Immutable Infrastructure思想にもとづくBlue-Green Deploymentをお手軽にできそうなのでやってみる。
まず、Immutable Infrastructure思想ってなにそれおいしいの?
Immutable Infrastructure(イミュータブル インフラストラクチャ)は不変なサーバー基盤のこと。
具体的には、一度サーバーを構築したらその後はサーバーのソフトウェアに変更を加えないことを意味する。
参照:ウィキペディア
ソフトウェア変更、更新で発生するリスクを減らして安定稼働させようという思想。
Blue-Green Deployment
Blue-Green DeploymentはImmutable Infrastructure思想にもとづくもので、
通常のアプリ更新作業のようにサーバに更新、デプロイをするのではなく、
もう一系統同じ環境を新規で作り直し元環境と切替えることでデプロイを行う。
一系統をBlue、もう一系統をGreenとし更新時にはそれぞれを切替えるのでBlue-Green Deployment。
切替えるだけなのでゼロダウンタイムリリースのテクニックとして有用。
更新後に問題が発生した場合戻すことも用意になる。
Blue-Green Deploymentなんていうと仰々しく聞こえるし、小規模な場合そこまでしなくてもと思わなくもないが、
小規模だからこそ恩恵に預かれる気もする。
それこそ動的ではなく静的なただのサイトのリリースなんかにも。
それではバージョン管理を体験してみる。
大まかな流れは
・1系統を現行バージョンとして用意。
・もう1系統を新バージョンとして用意。
・この時点ではアクティブなのは現行バージョンであることを確認。
・GAEのバージョン管理画面から新バージョンをアクティブに切替。
・新バージョンがアクティブになっていることを確認。
###・1系統を現行バージョンとして用意。
前回にデプロイしたのをちょっと修正してわかりやすくして再デプロイ。
(index.htmlを修正して「Version.1」と追加しただけ(笑))
このアプリ(アプリというには大げさ)にはバージョンを指定したURLだと
http://1-dot-プロジェクトID.appspot.com
でアクセスできる。
当然、現在はこのバージョンしかないので
http://プロジェクトID.appspot.com
###・もう1系統を新バージョンとして用意。
新バージョンをデプロイしてみる。index.htmlのVersion.1の部分をVersion.2に変更。
Eclipseでデプロイの設定を変更してデプロイ。
バージョンを指定してアクセス。
http://2-dot-プロジェクトID.appspot.com
これで、2つのバージョンが存在することになる。
###・この時点ではアクティブなのは現行バージョンであることを確認。
http://プロジェクトID.appspot.com
にアクセスするとバージョン1(現行)が表示される。
Google Cloud PlatformのApp Engineメニューのバージョンを見るとバージョン1がアクティブ(トラフィックのシェアが100%)なのが確認できる。
###・GAEのバージョン管理画面から新バージョンをアクティブに切替。
新バージョンをアクティブにするにはトラフィックのシェアを変更して、新バージョンを100%にしてあげればいい。
###・新バージョンがアクティブになっていることを確認。
http://プロジェクトID.appspot.com
にアクセスすると、新バージョンが表示されアクティブになったことがわかる。
(なにこれ、お手軽で便利!!)