BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Einstein:SOAのための実験的な第4世代言語

Einstein:SOAのための実験的な第4世代言語

SOAの実装には(参考記事リンク)一般に、分散や並行処理、オーケストレーションなどといったものの実装に、複数の技術を利用しなければならない。こうした要件を支援するツールは多数存在し、その中にはインボケーション向けのWebサービスフレームワーク(参考記事リンク)、ルーティングのためのエンタープライズ・サービス・バス(ESB)(参考記事リンク)、ビジネスプロセス実装のためのオーケストレーション・エンジンなど(参考記事リンク)がある。SOA実装は骨の折れる仕事であり、最低でも、プログラミング・モデルや実装、デプロイメント方法といった驚くほど多種多様な技術を理解する必要がある。

 こうした複雑性に対処可能な解決策の1つが「SOAプログラミング言語」--つまりSOA向けドメイン固有言語であり、例としてWsper(リンク)やEinstein(リンク)が挙げられる。こうした言語を利用する動機は、抽象レベルをさらに引き上げ、SOA開発における実際の懸案事項に近づけることである。これについて、Edsger Dijkstraが次のように述べている。

 いかなる道具でも、その最も重要であると同時に最も理解が難しい側面は、その道具の利用法を身に付けた人々の習性に、その道具が与える影響です。道具がプログラミング言語であるなら、否が応でも、私たちの思考習性に影響を与えます。

WsperはInfoQが出しているJean-Jacque Dubrayの著書『Composite Software Construction』(複合ソフトウェアの構造)(参考記事・英語)で詳しく解説されているため、本投稿はここから、Einsteinに専念することにする。

Einsteinは分散型SOAの複雑な環境向けに設計された言語であり、次の主原則を中心に構築されている。

  • 各指示を(場合によっては)お互い別のマシン上で実行できるように、分散型Einsteinは設計されている。 コードの中で分散と同時処理を実際どの程度利用したいかは、ユーザー次第である。
  • イベント駆動型のEinsteinは、フローベースのプログラミング言語で、指示のコミュニケーションにはメッセージを利用する。
  • 同時処理に役立つEinsteinは、同時処理に都合がよいように書かれている。共有状態ですでに証明済みの回避テクニック(メッセージ渡し、リードオンリーのタプルなど)とスレッドセーフティのランタイム認識を組み合わせて使用する。
  • 複雑性に役立つEinsteinは、多少の単純テクニックを採用し、リソースやモデルを含め、分散型システム実装の複雑性を低減する。
  • 技術の寄せ集めの代替としてのEinsteinは、複数のシステムを統合するために利用する多数の技術に取って代わることを目的にしている。現在、相互リソースのシステムを構築する場合は何にもまして、ESBやグリッド技術、分散型システム、(BPEL のような)調整技術、ワークフローシステムの混合に依存することがしばしばである。Einsteinはこうした技術の能力を併せ持つ単一のツールとして設計されている。

Einsteinの言語は以下のコンセプトに基づいている。

  • リソースは、たとえるなら変数であるが、一般に粒度が粗い。リソースはURIを使ってアクセス可能。リソースの特徴としては、揮発性(マルチスレッドのアクセスに安全)、ローカル(マルチノードのアクセスやシリアライゼーションを意図していない)、ベキ等元(ある1つのメッセージを何度も受け取り、1度だけ受け取るのと同じ効果を得ることができる)が挙げられる。
  • プロバイダは、なんらかの方法でメッセージの受信、送信、実行、クエリ、処理が可能なあらゆるリソース向けに、一貫したインタフェースを提供する。プロバイダは、リソースプロバイダ(リソースファクトリ役を務める)、リソース(実装)、ファサード(リソースが提供した機能性に、単純で粒度の粗いインタフェースを呈する、リソースのビュー)という、3つの構成要素に分けることができる。プロバイダはEinsteinレジストリに自動的にロードされるが、レジストリには利用可能なすべてのリソースとプロバイダについての情報が入っている。
  • Einsteinリソース間でデータを交換するための主なメカニズムは、メッセージである。1メッセージのペイロードには、言語オブジェクトではなくデータオブジェクトが入っており、複数のデータフォーマット(例:XML、オブジェクトグラフ、CSVファイルなど)を使ってEinsteinとインタラクトできる。
  • 実行グループには、フロー実行グループ(オーケストレーション言語のシークエンスに類似している順次実行)、タプル実行グループ(オーケストレーション言語のfork/joinに類似した並行実行)、合成実行グループ(タプルに類似しているが、少なくともブランチ1本の完了後に完了する)、マップ実行グループ(上記の組合せ)が含まれる。

Einsteinの超実験的なリリース0.1は、すでに入手可能になっている。Einsteinのプロジェクトロードマップによると、コア言語は7月15日にプレビューになるはずで、その後、9月1日にリリースされることになっている。

原文はこちらです:http://www.infoq.com/news/2008/06/Einstein

この記事に星をつける

おすすめ度
スタイル

BT