プラットフォームの定義

鈴木雄介(@yusuke_arclamp)さんによるプラットフォームの定義と今後のプラットフォームに対する予感について。 とりあえず自分用にまとめています。今後、自分の理解のためにコメントを入れて行くことがあります。
6
鈴木雄介/Yusuke SUZUKI @yusuke_arclamp

私的ですがプラットフォームの定義は、1.ドメイン(ビジネス機能)にフォーカスして、2.プラガブルに本体の機能拡張が可能であり、3.その上でスクリプトや設定によって機能拡張ができること。

2012-08-22 21:22:49
鈴木雄介/Yusuke SUZUKI @yusuke_arclamp

これまでソフトウェア開発の生産向上は「コンポーネントの再利用」と言われていました。結果、コンテキストフリーなものだけ(例:法制度、クレジットオーソリ)しか、うまくいかなかった。

2012-08-22 21:27:27

コンポーネントの再利用って確かに限られた領域しか無理だよなあ、とは感じてたけど、自分の語彙が足りなくてさくっと表現できなかったところが一言でww
「コンテキストフリー」覚えましたし

鈴木雄介/Yusuke SUZUKI @yusuke_arclamp

そもそもコンポーネント(ロジック)というのは再利用できなくて当たり前なのですが。

2012-08-22 21:28:45
鈴木雄介/Yusuke SUZUKI @yusuke_arclamp

あとはBPMのような処理を分割し、プロセス制御を分離して処理をさせる方法。これは1つのデータに対して処理が多様な機能には向いています(料金計算、売上処理、請求処理など)。ルールが明確であれば複雑でもいい。でも、これも所謂ロジックのみというのには向かない。

2012-08-22 21:31:03
鈴木雄介/Yusuke SUZUKI @yusuke_arclamp

BPMは処理方式の汎用化として優れてます。基本的な用語(プロセス、アクティビティ、フローなど)が統一化。そういう分析して効果を発揮する処理には良い。

2012-08-22 21:32:54

BPM=Business Process Management

Wikipedia

鈴木雄介/Yusuke SUZUKI @yusuke_arclamp

SOAはESBとBPMの組み合わせ。各システムがプロセスチェーンの出入口をサービス化し、データをやり取りします。

2012-08-22 21:34:10

SOA=Service Oriented Architecture

Wikipedia
ビジネスプロセスの分析やその結果としてのサービス粒度などが適切でないと使い物にならないというのが実感・・・。
鈴木さんにSOAの組み合わせパターンについて具体的に捕捉していただいた。

鈴木雄介/Yusuke SUZUKI @yusuke_arclamp

@mao_instantlife あざーっす。「プロセス管理で処理をロジックを記述して、その出入り口をサービスとして公開し、サービス同士はサービスバスで結合する」という全体がSOAでの良くあるパターンだと思います。

2012-08-24 12:34:20

ESB=Enterprise Service Bus

Wikipedia
対応する領域について捕捉する図を描こうかと思ったけど、wikipediaにまんま載ってた・・・。と思ったら鈴木さんが図を描いてくれた。

サービスを要求する側はESBに投げると後はルーティングしたりプロトコルの処理を吸収してくれたりよきに計らってくれるイメージ。

呼び出されるサービスと転送媒体の結合度を弱めるのは、SOA の特徴ではなく、ESB の特徴である。

とあるけど、ここはまさに勘違いしてたところ。捕捉入れるために読んでみて良かった。

鈴木雄介/Yusuke SUZUKI @yusuke_arclamp

プロセス管理は構造化されているので単純な処理しかできません。なので、もっと複雑なことで生産性を上げるにはスクリプト的なアプローチが重要ってことで注目されたのがDSL(ドメイン特化言語)

2012-08-22 21:38:56

この「プロセス管理」という言葉の汎用性が高すぎて、意味がいまいち絞り込めなかったので質問してみた。

以下回答

あべさん @mao_instantlife

@yusuke_arclamp 昨日、一連のツイートをまとめたものです。「プロセス管理」という言葉の汎用性が高すぎて、意味がぼんやりとしかつかめませんでした。この文脈では何のプロセスを対象にどういう管理をすることを指していますか?

2012-08-23 09:29:31
鈴木雄介/Yusuke SUZUKI @yusuke_arclamp

@mao_instantlife 実装すべきロジックは何でも良いですが、ロジック全体を「個別処理をフローで連結する」ことで実現する方式を「プロセス管理」と呼んでいます。この場合、フロー制御パターンに制約があるため複雑な処理には不向き。例えばロールバックとか。

2012-08-23 13:57:33

プロセス管理についてのイメージを図にしてみたら、鈴木さんからもっと詳細な図で突っ込みをいただくことができた。

鈴木さんの図(プロセス管理)

クライアント側はプロセスコントローラに対してリクエストを投げる。でもって、設定ファイルはBPEL(Business Process Execution Language)のこと。

自分が描いた図(プロセス管理)

そこはかとなく似てるけど違う何か(今仕事で使ってるSOAプラットフォームのプロダクトのイメージを使ってる側から描いた)になっててそこはかとなく残念w

回答終わり、続き

鈴木雄介/Yusuke SUZUKI @yusuke_arclamp

パブリッククラウドのプラットフォームを見ると、これらのコンポーネント、BPM、SOA、DSL、あとプラグイン構造みたいなものをキレイに組み合わせています。

2012-08-22 21:41:21
鈴木雄介/Yusuke SUZUKI @yusuke_arclamp

そのプラットフォーム本体に機能を足すのはプラグイン構造で実装し、プラットフォーム上での開発はスクリプトや設定になります。3階層ぐらいにエンジニアが分かれる。

2012-08-22 21:48:42

具体的に3層っていうのは、どういう層なのだろう?説明の中で明確に分けられたのは2層だった。
言葉だけだとイメージしづらかったので、自分の理解で図を書いてみた。

エンジニアが分かれる3層(まとめ主イメージ)

あくまでツイートを読んだ上でのイメージ。鈴木さんが思ってるのとはたぶん違う。