連載
スキルアップのための分散オブジェクト入門
第6回 現実モデルはWebサービスとの共存
Webサービスと分散オブジェクト技術が 共存する分散環境 |
ここでは少し難しい話をしなければならないのですが、その前にこれからの分散システムのイメージを絵にしてみましょう(図4)。
図4 これからの分散環境SCMの役割 |
■自律システムと疎結合が鍵 |
図4では、在庫管理システムや決済システムなどの各サブシステムが独立した自律システムとして設計されており、それらがWebサービスを通じて結合されています。ここでいう自律システムとは、次のような特性を備えたシステムです。
- 明確に定義されたインターフェイスのみを通して外界と相互作用する
- 外界とは疎結合で相互作用する
各サブシステムをこのような自律システムとして設計することが、将来にわたって陳腐化しない分散システムを構築していくための鍵です。特性の1つ目、「明確に定義されたインターフェイス」は、この連載で繰り返し強調してきた点です。2つ目の「疎結合」性には、システム要求によって例えば次のようなさまざまな側面が考えられます。
- 互いに相手のプラットフォームや内部実装を意識しない
- ほかのサブシステムがダウンしていても非同期にメッセージをキューイングすることで、処理を継続できる
- 外部からの干渉を受けずに、自システム内のリソースを自分の判断で制御する
単一の技術でこうした多様な要求のすべてを簡単にはカバーできないのはいうまでもなく、要求に応じて、分散オブジェクト技術をはじめとする既存技術とWebサービスを使い分けていくことが求められます。上の3つは、疎結合性のさまざまな側面の一部にすぎませんが、以下ではこれらについてもう少し詳しく見ていくことにします。
■プラットフォームと内部実装からの独立性 |
プラットフォームと内部実装からの独立性という点では、多くのケースでWebサービスが最適です。しかし、Webサービスが常に万能であるというアプローチではなく、要求実現のために最適な技術を冷静に選択することが必要です。例えば、性能を重視する場合にはIIOPを使用するという選択も十分にあり得ます。
■非同期メッセージング |
システムをより緩やかに結合するためには、パブリッシュ・サブスクライブや永続的なメッセージ・キューイングといった機能が必要になります。これらに関しては、Webサービスの標準化がまだ追いついていないため、現時点ではJMSやメッセージング・ミドルウェアといった従来の技術を使用するか、SOAP over JMSのようにWebサービスと従来技術を組み合わせて使用することになります。SOAP over JMSの場合、SOAPエンベロープのJMSへのマッピング方式やJMS自身の通信プロトコルが標準化されていませんが、ゲートウェイを経由して異なる製品同士をブリッジしたり、SOAP over HTTPに変換することが可能です。
■ロング・トランザクション |
3つ目のリソースの管理も疎結合実現のための重要な要素です。疎結合システムでは、自律システム内のリソース制御を、信頼性に乏しい外部の第三者に委ねてしまうようなことがないようにします。例えば、インターネットなどの外部からの要求によってデータベースが長時間ロックされてしまわないようにします。このため、自律システムにまたがってデータの一貫性が要求される場合には、ACID*2 トランザクションではなく、ロング・トランザクションを使用します。この場合、短時間であればデータの一貫性が厳密に保たれなくてもよいように設計する必要があります。Webサービスにおけるロング・トランザクションの分野では、OASISによるBTP(Business Transaction Protocol)の標準化や、マイクロソフトとIBMによるWS-Transactionの提案がなされています。
*2 ACID:古典的なトランザクションの特徴を表す4つの特性。原子性(Atomicity)、一貫性(Consistency)、隔離性(Isolation)、耐久性(Durability)。■自律システムの内部実装 |
ここまでは自律システム間の相互作用について議論してきましたが、最後に自律システム自身の内部実装を見てみましょう。自律システム間の相互作用は疎結合でしたが、自律システム内部の機能単位の相互作用は密結合でも構いません。逆に、性能を向上させたり、機能単位間でのデータの厳密な一貫性を保証するために、密結合が必要になる場合が多いでしょう。
このような自律システム内部の実装には従来と同様に、分散オブジェクト技術、TPモニタ、データベース管理システム、あるいはERPなどのパッケージ・ソフトを引き続き利用することになるでしょう。ただし、あくまでも外部に対しては疎結合インターフェイスでサービスを公開する必要があります。
◆
本連載では、分散オブジェクト技術の仕組みと、CORBA、JavaRMI、EJB、COM+、HORB、そしてWebサービスのそれぞれの技術的な特徴を解説してきました。連載を通じて繰り返し強調してきたのは次の2点です。
- いずれの技術を使う場合でも、アプリケーションのインターフェイス設計が重要である。
- Webサービスも含めて、各技術にはそれぞれ得手と不得手があるので、それぞれの技術の特徴を踏まえて適材適所の選択を行う。
技術トレンドが次々と移り変わる中で、常に追い立てられるような不安感に駆られながら仕事をしている技術者が多くなっています。しかし、技術の本質やアプリケーション設計の本質は大きく変わるものではありません。また、これまでどんなにベンダやメディアが流行を作り上げたとしても、1つの技術が万能だったということはありませんでした。最終的には、本質を見極めて技術を使い分けていく基礎体力が技術者1人ひとりに求められています。本連載では、分散オブジェクト技術やWebサービスのさわりしかご紹介できませんでしたが、これをきっかけにこの分野での基礎体力を身に付けていっていただければ幸いです。
2/2
|
第6回 現実モデルはWebサービスとの共存 |
||
Page1 Webサービスと分散オブジェクト技術のかかわり |
||
Page2 Webサービスと分散オブジェクト技術が共存する分散環境 |
INDEX | |
スキルアップのための分散オブジェクト入門 | |
第1回 分散オブジェクト技術が必要なわけ(2002/3/19) | |
第2回 分散オブジェクトのしくみを理解する(2002/4/4) | |
第3回 開発手順からCORBAを理解する(2002/4/25) |
|
第4回 開発手順から分かるEJBとJavaRMI(2002/6/25) | |
第5回 分散オブジェクト技術としてのHORBとCOM+(2002/8/21) | |
第6回 現実モデルはWebサービスとの共存(2002/10/4) |
Java Solution全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|