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

 クラウドアプリケーションは、新機能追加や機能修正などの頻度が非常に高く、1日に何度も本番へ展開することも少なくない。エンタープライズアプリケーションでも改修は行われるが、緊急の問題が無ければ、年に数回もしくはそれ以下の、非常に少ない回数しか展開しない。しかし、展開の頻度に関わらず、共通して必要とされるのは、構成管理手法である。

 読者の中には、「本番環境で動いているアプリケーションのソースがどれだか分からなくなった」「このフォルダにソースを入れて置いたはずなのに見つからない」「本番環境で動いているコードが正しいはずだが自信がない」「ローカルの開発環境では動いているのに、本番環境に展開したら動かない」といった経験をお持ちの方はいないだろうか。このような状況に陥らないために、Twelve-Factor Appを活用できる。アプリケーションの構成管理(ソースコードやライブラリの管理、設定情報など)の重要性を念頭に置き、読み進めていこう。

10.開発/本番一致

 Twelve-Factor Appでは、「継続的デリバリー」を実施しやすいように、開発環境と本番環境との「ギャップ」を小さく保つように説いている。ここでのギャップはそのまま「差」「違い」と捉えてよい。具体的には歴史的に開発環境と本番環境の間に三つのギャップがあり、それらを小さくすることが重要だと述べている(図1)。

三つのギャップをアジャイルで解消

 三つのギャップとは、開発済みのコードを本番環境に展開するまでの時間を指す「時間のギャップ」、開発と運用の人員が別である「人材のギャップ」、アプリケーション実行に使われる「スタック」が開発環境、本番環境で差異があることを指す「ツールのギャップ」である。ここで言うスタックとは、アーキテクチャー、OS、サーバーミドルウエア、RDB(リレーショナルデータベース)サービスなどの連携サービス、APIライブラリなどのことだ。

図1●「10.開発/本番一致」で指摘した三つのギャップ
図1●「10.開発/本番一致」で指摘した三つのギャップ
[画像のクリックで拡大表示]

 Twelve-Factor Appが推奨する開発スタイルは、いわゆるアジャイル開発である。開発テストを終えると随時本番環境に展開し、稼働させる。必要な機能から小さく作るため、各工程の期間も短くなる。これにより、時間のギャップを減らす。これは、初回の開発だけでなく、改修・保守フェーズでも同じである。問題箇所を即時修正して、本番環境に展開する。