昨晩無事にリプレース作業のメンテナンスが完了しました。

今回メンテナンスで行ったこと、問題だったことを振り返ります。
メンテンスしたアプリはWebView形式のアプリなので、サーバーサイドはほとんどWEBサービスです。


1)リリース(デプロイ)環境を「deproyer」に変更

今までrsyncでコピーしていたけど、depoyerにした。(Deployer — Deployment Tool for PHP
デプロイの仕組みはpuppetやCapistranoが有名だけど、新しいこと、学習コストが低いこと、PHPで構成されていることの3点でdeployerに決めた。

デプロイ環境を構成することにより、プロダクション(本番)とステージング(リハーサル)環境へのリリースが捗ります。また複数サーバーになった場合のリリースもサーバーリストにサーバーを追加するだけなので楽になるのです。


2) メンテナンス画面の表示

アプリにメンテナンス中であることの表示の仕組みを準備していなかったので入れました。
あんまり時間をかけたくなかったので、プラグイン的な何かを探し求めたところピッタリなものを見つけました。

Maintenance plugin for CakePHP 1.3 

嬉しいことにCakePHP1.3系も用意してくれていたのでした。
ちなみにCakePHP2系がメインですね。

Maintenance plugin for CakePHP2.x 

実装方法などは別の投稿でやろうかと。


3) CakePHP1.3系のSessionが使えなくなった

メンテナンス中の動作確認で表示は問題なかったけど、データを投入するとCakePHPのセッションリダイレクトが使えずアプリが止まったようになってしまった。
ちゃんと開発環境やステージング環境で確認しておけばメンテナンス中にトラブルことはなかったのに・・・。
ステージング用のアプリを用意するのが面倒だったのが原因。
普通の会社の仕事ならありえない運用でこんなのやらかしたら始末書ものですね。
次回こうならないようにテストはちゃんと行おう。

原因としては旧環境がPHP5.4、新環境はPHP5.5によるCakePHPの挙動の違いでした。
これの詳細も別投稿で。


以上今回のリプレースメンテナンスのやったことと、振り返り(反省)でした。