丸山先生が語るSOAのサマリともいうべき内容でした。短い時間でしたがSOAの定義がきれいに組み立てられていて非常に勉強になりました。すばらしいです。メモ書きをのせておきます。
-------------------------
◆SOAの技術的な切り口
SOAの定義はWebサービスを念頭においているので、表現が抽象的にならざるを得ない。近年やっと具体的になってきた。
最近の言い方は「Webサービス"で"統合」から「Webサービス"を"統合するためにSOAが必要」
◆SOAのビジネス的な切り口
ビジネスの変化に即応する(アジリティ、オンデマンド、アダプティブ)ためのSOA。
これは、逆に言えばSOAが適応する経営モデルも定義してしまっているのでは?
ビジネスをSOAで解釈すると「ビジネス分野1つ1つがサービス」「横断的なビジネスはアスペクト」
◆SOAが生まれた背景
20世紀はコンピューターの時代。21世紀はネットワークの時代。
ムーアの法則。18ヶ月で性能2倍。ただし、あと10年で限界になる。集積の限界。その後継と目される量子コンピュータには目処が立っていない(少なくとも2035年以降)。
ギルダーの法則。ネットワークのスピードは6ヶ月で2倍。2010年Tera、2015年Peta。これからのネットワークの成長の方が高い
◆ネットワークコンピューティングの可能性
過去の提唱者はローカルのオブジェクトと、ネットワーク越しのオブジェクトは区別するべきだとした。遅延が発生するなど問題が多かった。ところがネットワークが成長すると「内部バスよりもネットワークが早くなればコンピュータのパーツはばらばらにできる」ということになる。
◆サービスがネットワークと出会う
GridとSOAの共通点。「ネットワーク自体がサービスを統合する」
◆サービスを統合する技術の変化
非同期メッセージ:Webサービスに構造的な変化をもたらす(結局、大半のビジネスは非同期なんだし)
Message Exchange Pattern:同期、非同期、コールバック
Document Centric:引数と返値(RPC)ではなくて、メッセージの交換という考え方
WS-Addressing:Callbackの実現には必要。簡単に言えばSOAPヘッダに行き先と帰り先をきちんといれる。これまではプロトコルレベルでやっていた(HTTPのURLとか)。行きと帰りのプロトコルすら同じでなくて良い(HTTP -> SMTPとか)。
◆BEPLとは
WSサービスの統合が得意。
◆ESBとは
MOM起源でメッセージ交換によるサービス統合。メッセージの流れによって処理を考える
◆SOAとはなにか
ネットワークが大事になるんだ。サービスが大事な時代なんだ。ビジネスの各分野にネットワークを導入しサービスとして切り出すのだ。
サービスはネットワークによって提供される。
コンポーネント間は疎結合。メッセージの交換による関係だけ!(コンポーネントの再利用につながる)
-------------------------
SOAを「メッセージ交換によるコンポーネント間の疎結合の実現」と定義されていたのが、ずばっと本質をついていました。これは、非常にわかりやすいSOAの説明ですね。
僕らのBOF「SOA as Web2.0? - DIコンテナでPOJOをRemix」はSOAの概念をマクロレベルに使おうという主張になります。そのためのキーがDIコンテナです。
でも、丸山先生に「SOAとDIコンテナは一緒なんです」といったら「そうなの?」といわれてしまいました(w。ま、メッセージ交換を前提にされてしまうと不可能ですね。
現場のエンジニアはネットワークではなくメモリの中の話をしています。ですから、SOAがメッセージ交換といわれてしまうと使う気になりません。そうではなく、SOAを「依存性を解消」と捉えることでDIコンテナというのが現実的な選択肢となります。しかもDIコンテナを使っていればWebサービスにシームレスにつながります。
というわけで、僕(現場のエンジニア)にとっては、DIのほうが"丸山先生が言うところのSOA"よりも重要、というかDIがないと"丸山先生が言うところのSOA"を生かしきれないという言うべきかもしれませんね。なお、BOFには、これを体現した実装を持って行きます。
明日(11/9)の20:00-20:45で無料です。会社帰りでも立ち寄りOKです。こちらから、まだまだ申し込み可能です。よろしくです。
11/11追記。資料がCSQのダウンロードページから取得できます。
