モダンなクラウドアプリケーション開発のベストプラクティスの一つである「The twelve-Factor App」が取り上げられることが多くなった。ビジネスの変化にICTが遅れずについていくためには、エンタープライズ分野の開発も、このプラクティスを取り入れていくべきだ。本稿では、エンタープライズシステムの開発・運用の視点から、従来行われてきたことと比較しながらTwelve-Factor Appを読み解く。シリーズ第3週となる今週は、「リソース増減や運用管理を容易にするためのプラクティス」をみていく。

 前回までの並行性6.プロセス、7.ポートバインディングに続き、今回は「9.廃棄容易性」を解説する。

9.廃棄容易性

 Twelve-Factor Appでは、プロセスを容易に起動や停止できることが、スケールアップやアプリケーションの入れ替えなど、あらゆる場面で役立つと述べている。起動時間については、起動コマンドが実行されてから、リクエストを受け取れるようになるまで、数秒という理想を示している。停止については、時間だけでなく、“行儀が良い(graceful)”ことを併せて求めている。

 ここで“行儀が良い”停止というのは、処理中のリクエストや、これから来るリクエストをエラーにしないということである。Webプロセスにおいては、新しいリクエストの受け付けを止め、実行中のリクエストが終わるのを待ち、その後にプロセスを停止するという手順を踏む。キューを処理するワーカープロセスにおいては、処理をキューに戻すことによって実現する。また、ハードウエア障害などの予期せぬプロセス中断にも対応すべきと述べている。

Twelve-Factor Appは頻繁な改修が前提

 Twelve-Factor Appが想定しているのは、1日に何度も改修したり、リリースしたりするクラウドアプリケーションである。当然、開発環境ではより頻繁に改修やテストが行われる。このような開発においては、アプリケーションの起動や停止は速いに越したことがなく、もしそれが1分かかったとしたら、開発効率に大きく影響することだろう。