opentxp.org

the OPEN source project for exploring 'the TranXactional Programing model'.
opentxp.org ホーム     txpftp     技術情報     技術書籍紹介     お問い合わせ     サイト マップ      
背景     動機     ビジョン     プロジェクトスコープ      

ビジョン


 

1. ビジョン 

 

信頼性が高く、誰でもが利用できる、社会資本たる「ビジネストランザクションメッセージング基盤を提供することにより、ソフトウエアサービス構築のスピードアップの実現、ひいては、サービスソフトウエアビジネスの活性化を目指す、取引ベースのプログラミングモデル(TranXactional Programing model」を開拓・実践していくことをopentxp.orgプロジェクトのビジョンとします。

 

2. ビジネストランザクションメッセージング基盤とは

 

ではビジネストランザクションメッセージング基盤とは、具体的にはどのようなソフトウエアでしょうか?

 

システムの構築、連携、および、統合の基盤となりえるソフトウエアには、様々なミドルウエアが存在しています。( システム構築と基盤ミドルウエア参照。) このような中で、システム間連携のコーディネータとして最適なミドルウエアはなんでしょうか?

 

勿論一概には決められません。しかし、疎結合なシステム連携、連携するタイミングの柔軟性、トランザクションによる信頼性、障害回復性などを考えると、トランザクショナルなメッセージングシステム(つまりはメッセージキューイング)が最もビジネストランザクション基盤とするにふさわしいのではないでしょうか( 非同期トランザクションとメッセージキューイング 参照 )。

 

3. トランザクションとメッセージキューイングの普及

 

メッセージキューイングがシステム統合の基盤となることは、サービス指向アーキテクチャ(SOA)を例としてあげるまでもなく、以前から度々提唱されていることではあります。しかし、メッセージキューイングはそれほど普及しているとはいえません。また、トランザクションの必要性は、さらに以前から誰もが理解しているにもかかわらず、未だに(トランザクションに対応できない)ファイル転送によってデータ連携を行っているシステムが如何に多いことでしょう。

 

このような状況の原因として考えられるのは、トランザクション処理と常駐並行処理の設計・実装が(とくにアプリケーションプログラマにとって不慣れな領域であるため)困難であることです。

トランザクション処理やメッセージキューイングが普及するためには、業務システム開発を行うプログラマにとって利用しやすいものでなければなりません。

 

4. IoC(DI)コンテナとメッセージングシステム

 

従来のアプリケーション開発において、ミドルウエアの利用方法はAPIコールによって行われてきました。ここではアプリケーションプログラマは、ミドルウエア毎のAPIやその使用方法を学ぶ必要がありました。また、処理を実行させるスレッドやプロセスの制御やエラー処理、必要な場合にはトランザクションの実行制御についてもアプリケーション側が責任を持っていました。

これに対してIoC(DI)コンテナとは、アプリケーションが実行制御を持つのではなくコンテナ側で実行制御に責任を持つこと(制御の反転)により、アプリケーションプログラマが業務ロジック開発のみに集中できるようにすることで(関心事の分離)、開発の生産性を向上させようとするものです。

 

現在のところ、いわゆる「IoC(DI)コンテナ」といわれるものは、Webサーバから要求を受け取る前提のものがほとんどです。つまりこのようなIoC(DI)コンテナは同期的に要求・応答を行うRPC(リモートプロシジャコール)の様な処理モデルを前提としています。中にはJMSへのアクセスが可能なものもありますが、しかし、接続・問合わせのタイミング・方式(常時接続/ポーリング)やメッセージ処理の処理単位の選択(一定件数をまとめて処理するかどうか)など、メッセージ指向ミドルウエア(MOM)に特有の処理方式には対応できていません。

 

つまり、メッセージ指向のIoCコンテナが、メッセージキューイングの普及に欠かせません。

 

5. LL(軽量言語)による俊敏性の高い開発

 

メッセージ指向のIoCコンテナが実行する処理の多くは、送信先の選択とデータ形式の変換でしょう。

DBのテーブルを参照して送信先を選択したり、XMLの形式変換をしたり、文字コードを変換したりなどです。

このような開発においては、Javaの様なシステム寄りの言語よりも、PerlやPython、RubyのようなLL(軽量言語)による開発がより高い生産性が期待できます。

 

勿論、このような軽量言語はトランザクション処理などシステム寄りの機能については不得意であることが多いですが、しかしその様な処理はIoCコンテナ側で責任を持って制御されていればよいことですから、業務ロジックで気にしなければならないことではありません。

 

6. 個々に独立したIoC(DI)コンテナが柔軟に連携してシステムを構築

 

しかし、CORBAやJ2EEによってもこのようなシステムの構築はできるはずでした。

では、J2EE準拠のアプリケーションサーバとIoCコンテナの違いとは何でしょう?

 

間違いを覚悟で単純化した言い方をすると、CORBAやJ2EEは巨大な仕様であったことが問題でした。

あらゆる状況を想定して検討を重ねた結果、どんな状況にもフィットしない仕様となってしまいました。

ごく典型的で、ごく限定的な利用(しかし現実的にはこのような利用方法がはるかに一般的ですが...)しかしない場合にも、広範な知識や経験が必要とされてしまい、全体を把握できるエンジニアは稀にしかいません。

 

IoC(DI)コンテナの利点は、個々に独立した設計や管理によって利用できる点にあります。

 

7. 分散したリソースの統合的な運用管理の必要性

 

しかしこのようなIoC(DI)コンテナの利点は、逆に管理上の問題を引き起こします。

各システムがそれぞれ違うIoCコンテナを好き勝手に利用した場合、それぞれのコンテナにより、さらにはバージョン間により設定・管理は煩雑化し、何がどこに配置されているかも不明で、統合的な運用管理は不可能となってしまいます。とはいえ、夫々のソフトウエアには特徴と利点があるため、単純に利用するソフトウエアを統一すればいいという訳に行きません。

 

運用管理は、必ずしもTXPの中心的な話題ではありませんが、しかし、必要なソフトウエアの安定した組み合わせと統合的な運用管理のプラクティスはTXPを実践する上で不可避な話題でもあると考えます。

 

8.ビジネストランザクションメッセージング基盤の要件

 

以上のことから、ビジネストランザクションメッセージング基盤の要件は以下の通りとなります。

 

        ● トランザクションメッセージングシステム

        ● LL (軽量言語)を利用した開発・実行環境

        ● IoC(DI)コンテナのマルチエージェントシステム       

        ● 統合的な運用管理

 


このページの最終変更日 2009年2月3日