ソフトウェアでなんでも書き換え可能だという無制約のコンピュータ思考がシステムを複雑にしています。一方で、生物界では現在型での個体の制約と、世代間に渡るバージョン更新による変化対応で変化と安定の両立を図っているように見えます。ダーウィン思考です。
企業システムの複雑さを解くカギとして、この思考の大転換を提唱します。
ソフトウェア・アプライアンス指向 出現の背景
突然ダーウィン思考やチューリング・マシーンなどと言い出すとまた面食らう方が多いと思いますが、ソフトウェア・アプライアンス指向が企業システムの変化対応能力の切り札に成りうるということの中島的な表現です。
現行企業システムの課題の多くが、システムがあまりにも複雑になりすぎている事に起因するという認識に異を唱える人は少ないでしょう。システムの規模が大きくなるに従い、システムをサブシステムに分解して開発・管理のスパンを狭める方法は一般的ですが、指数関数的な複雑さの暴発に対応しきれないのが現実です。事実、ソフトウェア開発・システム開発では、オブジェクト指向、SOAなどと、システムをモノリシック(一枚岩)な塊から部分、コンポーネントに分解して構築するアプローチが多くなされてきていますが、残念ながら決定的な解決にはなっていません。一方で、IT投資の70%以上が運用系に費やされているのが現状です。上流工程の様々な課題のしわ寄せが、結局、運用での対応に押しつけられているわけです。さらにはサーバー機種の趨勢でx86系のコモディティ化が常識となり、サーバー数の増大が複雑さの暴発をさらに誘発しています。
結論を急げば、今までの方法、考え方のままでは、変化対応の面で為すすべがない状態だといえます。少々乱暴に言ってしまえば、一旦出来上がったシステムは出来うる限り変更せずに運用し続けるしか方法がない。しかし時代のスピード感覚はそれを許さない方向ににあるのは間違いないと言えます。
S/360以来の積層型のアーキテクチャはピラミッド構築的で変化対応に弱い?
40年以上前に登場したIBM S/360以来、メーンフレームやUnixなどの違いを超えて、コンピュータ・アーキテクチャは積層型、すなわちソフトウェア・スタックの構造を常識にしています。このスタックの積層でシステムを構成する考え方はあらゆるアーキテクチャで常識とされ空気のような存在になっています。これに異論を発することなど考えられない。事実、小生が2年程前からソフトウェア・アプライアンスでシステムを構築する考えをいくら訴えても、相手は黙り込むだけで殆んど耳を貸す人はいませでした。
それがここにきて大きく事情が変わろうとしているように見えます。クラウド・コンピューティングの出現です。クラウド・コンピューティングにはいろんな捉え方があって一意的な定義などは存在しないわけですが、システム構築の切り口からすると革命前夜の風景です。
クラウド型のシステム構築では、基本的に積層型のスタックがない、あるいは外からは見えない。あるのはクラウド・プラットフォームとサービスです。グーグルのクラウドの構造では従来のOSの選択やDBなどの選択がありません。今までのシステム構築の常識の外にあるのが解ります。結果的に現行のシステムとの互換性がない。それはそれで企業系システムからすれば大きな問題なわけですが、これからのシステム構築の方向性として真摯に受け止める必要があります。SOAにおけるサービスの概念も積層型アーキテクチャを離れて眺めるとより明確に見えてきます。サービスとは伝統的な積層型ソフトウェア・スタックの外にある概念のようです。
積層型ソフトウェア・スタックのシステムは亀の例えがピッタリきます。親亀の上に子亀、子亀の上に孫亀、孫亀の上に曾孫亀などなど。曾孫亀をアプリケーションに当てはめると、企業アプリケーションには自立自走の自由度が殆んど無いのが理解できます。これをクラウド型で眺めると、大きなプールを曾孫亀がスイスイと泳ぎ回っている姿が浮かびます。積層型のスタック構造は整然としてwell-structuredの典型です。完成された時点で拝み見るには美しいですが、日々の修復や例外の積み重ねで、積層の依存関係が全体を覆う呪縛のようになっていきます。
仮想化、アプライアンス化、マッシュアップ で クラウド時代の企業システムを構築
グーグル型クラウドには現行システムの枠を外れた自由度があるのですが、逆にいろんな切り口で互換性がありません。
そこで一般的なクラウドのアーキテクチャは、”クラウド・アーキテクチャ:HW資源の仮想化とvmイメージ” 、でみたように仮想化とvmイメージで構成されようとしています。このアーキテクチャであれば現行システムとの互換性は取りやすくなります。一方で、そのような方法で、現行システムの大きな課題である複雑さをどれだけ軽減できるのかが課題となります。vmイメージの原初的な形態が仮想サーバー(Virtual Server) ですが、これは物理サーバーを幽体離脱させたようなものですから、OSレベル変更のインパクトなどの積層型アーキテクチャの課題の多くを引きずったままです。
これらの課題を解決するために、日本IBMのJEANS研究とeCloud研究会では、アプリケーションをクラウド環境(プール?)での個体として自立させる、チェンジ&レジリエンスの両立を目的とした、新世代の企業システムのフレームワーク作りに挑戦しています。
eVA (enterprise class Virtual Appliance) なるソフトウェア・アプライアンスの導入です。eVAは仮想化型クラウド・プラットフォームにおけるアプリケーション・コンテナーの役割を担いますが、隠蔽されてはいますがアプライアンス内に実体としてのOSやミドルウェアを伴っています。辛口に評価すれば積層型アーキテクチャと中身は構造的に変わりがないとも言えます。OSやミドルウェアの変更に対する依存関係をどう解決するのか。さらには、そもそもカストマイゼーションも含めたアプリケーションの多様性を単純なアプライアンスで表現できるのかどうか、など、多くの疑問が投げかけられてきました。
eCloud研究会では、言わば脳(アプリケーション)と身体性(OSやミドルウェア)との絡み合いによる”分離出来ない論”を解決するために、eVAに個体を超えた種(世代バージョン)の分離・並存の仕組みや、共通準システム機能のVAC
(Value Add Capability)へのプラットフォーム的なものの括りだしの構造を考えています。これらは、アプリケーション・コンテナーのテンプレート化によるNFR充足となります。また複合するeVAやVACをマッシュアップすることによって、クラウド時代における多様性へのダイナミックな対応も可能にしたいと考えています。
アーキテクチャ的に定義すれば、従来の縦に積層してシステムを組み上げるスタック・アーキテクチャの考え方を排して、横展開、水平展開で価値チェーンをリンクし、ソリューションを構築する、サービス・リンク・アーキテクチャとなります。 |