BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース クラウドベースBPMにRESTfulは必要か

クラウドベースBPMにRESTfulは必要か

ブックマーク

原文(投稿日:2012/03/15)へのリンク

ZapThinkのアナリストであるJason Bloomberg氏はクラウドベースのビジネスプロセスマネジメント(BPM)が、クラウドへ簡単に移行できない従来のBPMエンジンに対する脅威になると主張している。氏はこの記事でクラウドでのBPMの利用が提供する価値を説明するのではなく、クラウドBPMを適切に利用するにはRESTベースのサービスが必須だと警告している。ebizQのMichael Poulin氏はこの主張に反論し、RESTfulなサービスが必須がどうかについて説明している。

BPMはビジネスプロセスを捉え、管理し、最適化することで組織のパフォーマンスを改善するためのシステムだと考えられている。商用BPMソリューションは通常、プロセスベースのアプリケーションやビジネスルールをモデリングするためのプラットフォームやそのようなアプリケーションを実行するためのランタイムエンジンを含んでいる。BPMそのものが失敗なのではないかと疑問を呈する人もいる一方、Bloomberg氏はBPMには価値はあるが、ミドルウエアベンダが提供する選択肢に不満を持っている。

ベンダはBPMが好きでした。なぜならプロセスエンジンはベンダが開発しているミドルウエアスタックに簡単に追加できたからです。複数のアプリケーションを協調させるということは、複数の統合作業を行うというであり、そのためにはミドルウエアが必要です。ベンダに依存しないプロセスを実装したクロスプラットフォームのサービスではなく、各ベンダはプロプラエタリなツールセットを提供したのです。

これらのベンダが自身の製品を簡単にクラウドへ移行できると考えているのなら、ステートフルなアーキテクチャが原因で失敗するだろう、とBloomberg氏は考えている。

分散アプリケーションでクラウドの弾力性の利点を享受するには、アプリケーション層がステートレスであることが重要です。クラウドでは負荷に応じてインスタンスを追加作成する必要があるかもしれません。また、特定のインスタンスがクラッシュすることもあります。しかし、クラウドは可用性が高く分割耐性を備えているのだから、インスタンスがクラッシュしてもインスタンスがサポートしているプロセスはクラッシュしません。

つまり、従来のBPMエンジンをクラウド上で適切に動かす方法はありません。BPMの存在理由はプロセスの状態を維持することです。しかし、これをクラウド上で実現するには弾力性を犠牲にしなければなりません。別の言い方をすれば、SOAプラットフォームを中心にしたBPMエンジンを開発していたベンダの労力は無駄になるということです。クラウドはBPMのルールを変えてしまいました。

Bloomberg氏によれば、クラウドベースのBPMソリューションはクライアントとサーバの間でやり取りされるメッセージの中のプロセスの状態を維持しなければならない。これを実現するには、RESTのハイパーメディアとしての側面を利用し、クライアントとBPMエンジンが稼働しているサーバの間の結合を排除する必要がある。

考えてみれば、この発想の利点は明らかです。というのはWorld Wide Web自体がこのようなランタイムワークフローのプロトタイプ的なものだからです。リンクのクリックとそれに対応するページの読み込みという一連の作業はワークフローと見なすことができます。ページは世界中のどこかにあるサーバからやってきます。重量級の中心的なプロセスエンジンは存在しません。

[ハイパーメディア指向アーキテクチャ]ベースのBPMは破壊的テクノロジーの可能性があります。ベンダはイノベーターのジレンマに陥っているのかもしれません。

このBloomberg氏の主張に敬意を表しつつ、Poulin氏は4つの記事でクラウドベースのBPMソリューションの鍵はステートレスであることだという考えに異を唱えている。氏はメッセージでの過剰な状態の転送を警告している。

サービスがプロセスとして実装されているなら、状態をステートフルにするかステートレスにするかは自由に管理できます。しかし、プロセスの状態を含んだメッセージをやり取りするという考え方は失敗に終わりました。サービスインターフェイスを使ってメガバイト単位の情報をやり取りしてしまったからです。

私はクラウドの弾力性とクラウド上のアプリケーションがステートレスであることに関連を見いだせません。

中心となるエンジンなしで、ハイパーリンクとクライアント側の状態管理だけでクラウドベースのBPMを実現することはできるのだろうか。Poulin氏は次のように言う。

プロセスエンジンが無くて、リンクだけがあるとしましょう。"プロセスエンジンは必要ない"という考えに則ってHTTPのGETとPUTを使ってプロセスを起動します。プロセスが起動するとルールエンジンに紐づくリンクは次の動作の指示を返します。ではこの指示はどこに返されるのでしょうか。要求者はクライアントの要求に応じて動作する"ステートレス"なプロセスです。なのでこの指示はクライアントに返されるだけでしょう。ひょっとしたらGET/PUTで対処できるほど指示が短い場合にだけ返されるのかもしれません。そして、クライアントは同じプロセス(インスタンスは異なるかもしれません)を起動して、指示を"プロセス"へ返しなければなりません。このような仕組みではビジネスの現場では使えません。

Bloomberg氏は、自分の考えは幾分過激だと言っているが、既に多くのクラウドベースの企業が新しいパラダイムで活動していると主張する。対して、Poulin氏はクラウドベースのBPMへ移行する前に慎重な検討をすることを勧め、Peter Druckerのアドバイスを引用する。

"する必要の無いことを効率的に行うことほど無駄なことはない。"

この記事に星をつける

おすすめ度
スタイル

BT