SOAってなんだ?
ずいぶんと時間がたってしまいましたが、3月3日の@ITのリッチクライアント・コンファレンスに参加した際に、少しもやもやとしました。SOAの定義なのですが、どうも私が認識しているSOAとちょっと違うな、という違和感がありました。そこで今回はサンのSOAの定義を簡単に記述したいと思います。
サンでのSOAの定義は以下の通りです。
サービス指向アーキテクチャ(SOA)は、
Webコンピューティングの標準技術を活用し、
ビジネスの機能を共用サービスとして実装する、
統合ソフトウェア基盤とその設計手法
まず、重要な点はSOAとは「統合ソフトウェア基盤」であり、「設計手法」であることです。
いままで、IT部門ではプログラムの開発、アプリケーションの開発、といった面に設計手法の焦点が当たっていました。したがって、いままではストラクチャード・プログラミングやオブジェクト指向プログラミングといった手法が重要でした。それは、IT部門の効率や生産性を向上させるには有効な手法でしたが、利用する側にとっては、別段どんな手法を使おうが、アプリケーションがちゃんと動けば、どんな手法を使おうが関係はありませんでした。
この時代、利用者の側の要件をプログラムに置き換える(外部設計とか内部設計です)ことが前提でした。利用者は要件定義の段階でインタビューを受け、あとは、IT部門が設計し開発するのをじっと待っているのが当たり前でした。
SOAでは、アプリケーションと呼んでいたIT部門の所有物の機能ではなく、「サービス」という利用者の理解できる言葉と手法で作成できるようになります。利用者にとっては、業務の「プロセス」が明確になっているいこと、利用している「サービスのロジック」が明確なこと、ビジネス環境の変化や会社の統廃合に伴い、「俊敏に」そのプロセスやロジックが変更できることが重要になります。これを実現するのがSOAです。だから、「サービス指向」なのです。マーケティング用のバズ・ワードではなく、ちゃんとした意味があるのです。
このためにITベンダーはなにを提供しなければならないのか、が重要なポイントになってきますね。
社内の責任分担というのは、きっちりと掌握していないといけないもので、私もSOAを推進する立場でした(間抜けです!)ので、いまWebページを更新中です。できたら、リンクを張るなり、簡単なご説明を投稿したいと思います。