分散システムの要素技術


従来、企業の業務システムはクライアント・サーバ型のシステムが主流で、LAN環境で運用されることが多かった。LAN環境は回線の信頼性も高く、安定しており、またセキュリティ上も比較的安全とされてきた。また異なるシステムとの連携には CORBA / EJB が活用されることが多かった。しかし現在では、業務システムもWebアプリケーション型で開発され、インターネット環境で運用されるがケースが増えてきている。インターネット環境で、異なるシステム間の連携を行うには Web技術を活用するというのが自然な考え方で、その中核を担う技術として Webサービスが活用されようになったきた。しかしながら、従来 CORBA / EJB で実現されていた要素技術の全てが必ずしもWeb技術で代替できるとは限らず、またLAN環境に比べると回線も不安定で、インターネット上に公開されていることからセキュリティ対策が非常に重要になってきている。

リモート呼び出し型の分散システムの歴史は、とても古く、1970年代には既に概念が出来上がっていた。まず 1970代に RPC が生まれた。RPC はローカルのサブルーチンと同じようにリモートのサブルーチンを呼び出せるようにする仕組みで、リモートメソッド呼び出しと呼ばれることもある。RPCにはONC RPCや、DCE/RPC などがあるが、互換性はない。1990年には CORBA が発表された。これはアーキテクチャの異なる様々なソフトウェアコンポーネント間で通信を行うため分散オブジェクト技術の標準規格で、これによって本格的な分散システムが構築できるようになった。1995年には CORBA 2.0が発表された。1999年には Microsoft が XML/HTTP などWeb技術をベースとしたSORPを発表し、主に大規模な分散システムで採用が進んだ。2000年には SOAPと同じように、XML/HTTPを使って通信をおこなうRESTという手法が誕生した。RESTの応用範囲は非常に広く、広義には GET/POSTによってXMLが取得できるサービス全般を指すこともある。

■ CORBA

CORBA とは Common Object Request Broker Architecture の略で、様々なプログラミング言語、アーキテクチャで開発されたソフトウェアコンポーネントの相互利用を可能するために、OMGが定義した分散オブジェクト技術の標準規格である。1990年台初頭に提唱され、主に基幹システムなどを中心に採用が進められた。CORBA に基いて、ネットワークを介してコンピュータ間でのプログラムの呼び出しを可能とするミドルウェアは ORBは呼ばれる。CORBA で扱うオブジェクトには、クライアントタイプと、サーバタイプとに分類され、IDL と呼ばれる言語によってインターフェイスの定義を行う。CORBA は現在のWebサービスのコンセプトのベースにもなっている。

■ Namingサービス

CORBA にはNamingサービスと呼ばれる、実アドレスと名前のアドレス帳が搭載されており、分散環境において、クライアントが抽象化された名前によってサーバ上のオブジェクトの検索を行うことができる。サーバ上のオブジェクトへの参照はオブジェクト・リファレンスと呼ばれ、階層的に管理することも可能である。例えば、接続先のサーバのIPアドレスが、何らかの理由で変わっても、Namingサービスによって、目的のサーバのオブジェクトへと接続することができる。Namingサービスはインターネット上のDNSサービスに近い役割を持っている。それ以外にも、Naming サービスは負荷分散や、フォルトトレラントを実現するための目的などにも使用されている。

■ リライアブルメッセージング

リライアブルメッセージングとは配送の信頼性を高めるとともに、メッセージの配送順序を保証ものである。リライアブルメッセージングの仕様には WS-Reliability と WS-Reliable Messaging がある。WS-Reliability は富士通、日立、Oracle、Sun などによって提案され、OASISの標準仕様となっており、無償で利用することが可能である。WS-Reliable Messaging は IBM、Microsoft、BEA, TIBCO が作成し公開され、この仕様も OASIS にて標準仕様化された。当初はライセンス条件が不明確であったが、後にロイヤリティフリーとなった。リライアブルメッセージングは一度決めるとなかなか変更することができず、当初はライセンス費も非常に高価だった。またWebサービスのアーキテクチャマップと同様に、メッセージングやトランザクション、ネゴシエーションなどの重層的な構造となっている。

■ Webサービス

Webサービスは SOAPと呼ばれるXML形式のプロトコルを用いメッセージの送受信を行う技術で、2000年ごろにマーケティング用語として非常に注目された。1999年頃、企業間取引でWeb技術を活用するための RosettaNet と呼ばれる標準規格が誕生した。RosettaNet は異なる業界の企業同士を可能にするものとなっており、Webサービスの考え方の前身としている。後に ebXML と呼ばれるXMLベースの企業間取引の仕様が作成された。Webサービス技術は、システムを外部に公開し、直接企業間で取引を行いたいという企業の要請によって生まれた側面と、ITベンダーが異なるシステムを連携させるためにSOAPやWSDLを開発したという2つの側面がある。

Webサービスのアーキテクチャは、コンテンツの表現技法、トランザクション、セキュリティサービス、レジストリ、ベーシックプロトコルなど、OSI参照モデルのように、各層によって仕様が構成されている。またWebサービスはSOA(サービス指向アーキテクチャ)を構成するための、事実上必須のサービスとなっている。代表的な要素技術としてはベーシックプロトコルの層を担う SOAP、WSDL と、レジストリの層を担うUDDI などが挙げられる。SOAP はXMLベースのRPCプロトコルで、DevelopMentor、Microsoft、Serland Oftware の3社によって規格が策定され、Webサービスのプロトコルとして事実上の標準規格となっている。WSDL はXMLベースのWebサービスを記述するための言語仕様で、Webサービスの機能、利用するための要求仕様などの記述に使用されている。UDDI はIBM、Microsoft、Ariba の3社によって開発されたWebサービス用の検索システムである。

Webサービス技術の標準化は様々な標準化団体、業界団体によって行われているが、代表的な団体としては OASIS、W3C、DOPG、OMG、JCPなどがあげられる。標準化団体は理事会や検討グループなどから成り立っており、定められたプロセスに基づいて仕様の検討、作成、マーケティングなどを行っている。
標準化を進めることによって相互接続が容易になり、産業育成や利用者の利便性向上など恩恵も大きいが、企業の思惑が見え隠れし、標準化のプロセスで企業の利害関係が対立することも多い。企業から見た場合、どの標準化団体に自社の推進する仕様を持ち込むか戦略的な視点が必要である。
当初、標準化されると仕様はロイヤリティフリーになることが多かったが、一部ではRANDライセンスが採用されるケースが見受けられる。
また標準化団体を通さずに市場に出し、デファクトスタンダードとなるケースもある。

■ SOAP/WSDL

SOAP はXMLベースのRPCプロトコルで、DevelopMentor、Microsoft、Serland Oftware の3社によって規格が策定された。Webサービスの事実上の標準規格プロトコルとなっている。SOAP はXMLベースのオープンな仕様でマルチプラットフォームにて通信可能で、相互接続性が保証されている。一般的なWeb技術にて比較的容易に実装することが可能である。SOAP のフォーマットはプロトコルバインディングヘッダ、SOAPエンベロープ、SOAPヘッダ、SOAPボディから成り立っている。WSDL はXMLベースのWebサービスのインターフェイスを記述するための言語仕様で、Webサービスの機能、利用するための要求仕様などの記述に使用されている。CORBA でいうIDLに相当し、構造も類似している。WSDL 文章は、タイプ、メッセージ、ポートタイプ、バインディング、サービスから構成されている。

■ REST

REST とはRoy Fielding氏が提唱した、分散システムにおいて、HTTPプロトコルを使用してリクエストに対してXMLなどのテキストデータを返すWebサービスシステムである。SOAP がXMLの書式を厳密に指定しているのに対して、REST は特に明確な書式指定はなく、非常に緩やかで、REST 自体の定義もいくつかある。狭義には Fielding 氏が提唱したRESTアーキテクチャの原則に準拠した Web サービスを指すが、広義にはHTTPリクエストに対して、XML, JSON などのテキストデータを指すサービス全般を指し、現在ではこちらの定義が主流である。
従来は XML が主流であったが、最近では処理の簡潔さや JavaScript との親和性から、JSON が採用されるケースが増加している。
現在、Amazon、Google、Twitter など主要なWebアプリケーションがサービスを提供しており、REST によって複数のWebアプリケーションの機能を組みわせて新しいサービスを構築する、マッシュアップという考え方が広まった。

■ Push 通信

Push 通信とはサーバ側が起点となってクライアントと通信を行う方式である。逆にクライアントがサーバに対してリクエストによって開始される通信方式を Pull 通信と呼ばれる。Push 通信を実現するにはいくつか手法がある。クライアントがサーバに対して一定間隔で送信要求があるかと確認を行う方式はポーリングと呼ばれる。またクライアントからのリクエストに対してサーバ側がすぐに応答せず、保留状態にしておき、サーバ上でなんらかのイベントが発生したときにレスポンスを返す Comet と呼ばれる方式がある。Comet は一定間隔でアクセスが発生しないため、ポーリング方式に比べてサーバへのアクセス数が少ない。しかしリクエストを保留状態にするためにはサーバのリソースが必要で、ポーリングも Comet もサーバ側の負担が大きいこと自体には代わりはなく、実装には十分注意する必要がある。

■ クラウド

クラウドとはLANなど自社のネットワーク上ではなく、インターネット上の様々なリソース、システムを利用する形態のことである。クラウドの概念自体は決して新しいものではなく、古くから存在している。類似した概念としては ASP、 SasS などが近年使用されていた。クラウドのプラットフォームは大きく、OS、仮想化層、コンテナ、サービスアプリケーションなどの層に分かれている。クラウドは一般に導入コスト、運用コストが低く抑えられ、また常に最新のサービスが提供される、柔軟なスケーラビリティなどメリットも大きいが、インターネット接続が必須となる、仕様の決定権がベンダー側にあるケースが多い、障害発生時のビジネスインパクトが大きい傾向があるなどのデメリットもある。最近では国家機密や企業秘密などを他国のクラウド上においていいかどうか議論も活発になっている。

関連記事:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です