アジャイルというと方法論や組織論の話が主題です。ですが、本当にアジャイルを実現するためにはアジャイルなアプリケーション・アーキテクチャというのも求められるはずです。「アジャイル・エンタープライズ・アーキテクチャ」というのは、ビジネスの要求に応じて俊敏に変化することを目的としたアーキテクチャです。エンタープライズ・アーキテクチャというぐらいなので、企業における業務アプリケーションを対象とします。
このメインストリームはSOAです。しかし、SOAは驚くほど普及していません。これは"SOA的発想"というのがエンジニアに根付いていないからだと考えています。ご存知のとおりSOAはEDIの発展系です。そのため重量級のイメージが強く、ただのデータ連携という発想から抜け出せていません。データ連携とコンポーネント・コンポジションには巨大なキャズムがあるという印象です。
そこで、僕としては手元(アプリケーション)の内部からSOA的発想を入れ込んで行き、少しずつスタディするのが当面の目標になります。具体的には先日のSOAから学ぶアプリケーションレイヤーの統合で書いたESBをアプリケーション内で利用していくところから手をつけます。
ESB製品としてはServiceMixを考えています。ServiceMixについては1年ぐらい前に使いました(まとめページはこちら)。
ServiceMixはSpringと統合されており柔軟に導入が可能です。クライアントから呼び出されるコンポーネントのうち、いくつかをESB越しで処理させればよいでしょう。すぐに思いつくのは複数のデータ検索処理です。それらを非同期で実行することでトータルの処理時間を高速化させることができるはずです。
ちなみに非同期処理実行はAjaxで積極的に利用されている手法です。エンタープライズよりのアプリよりも、よっぽどAjaxのほうが非同期処理をうまく使っているのではないでしょうか。非同期処理を勉強したいならAjaxをオススメします。
僕の中ではスクリプト言語とSOAは一直線につながっています。企業システムの基本は、1.情報をメッセージ化し、2.メッセージを流通させ、3.加工する(と、その逆の流れ)ことです。こう解けば、それぞれは1.コンポーネント(Java)、2.SOA、3.スクリプト言語が得意とする領域です。いわゆるマルチレイヤー(プレゼンテーション、ビジネスロジック、パーシステンスとか)とは異なりますが、ユーザー機能ではなく、情報からみた機能という点ではアリなのかなと思います。
あ、難しいこと言っているように聞こえます?でも、これってAjaxのマッシュアップと同じことだと思います。1.WebAPI、2.XHR、3.JavaScriptですね。しかも非同期処理まで実現されています。なかなか凄いことではないですかね。Ajaxをリッチクライアントと考えるのではなく、アーキテクチャとしてみることで多くのことを学ぶことができます。
また、ハードウェア、ミドルウェアについても積極的に利用していこうと思います。並列処理性能という点では、チップ、OS、Apache、データベースなどはかなりのレベルにあります。これらを使い倒すことでアプリケーション性能に大きな効果を挙げられるものと思っています。
このブログでも少しずつ書いてきますし、雑誌や講演の機会があれば紹介していきたいと思います。
