変更に強くて、既存資産も再利用できるSOA。これぞ、企業システムのあるべき姿だ!と思えてくるのですが、世の中そんなに上手い話ってあるのでしょうか? 今日は、SOAの欠点を探ってみます。

イベントドリブンな世界は苦手
これまでのお話を伺っていると、SOAはとても素晴らしいもののように思えてきました。こりゃあ、もうこれから作るシステムは全部SOAにせにゃいかんと思ったくらいです。ところで、SOAには何か欠点はあるんでしょうか?
残念ながらいっぱいあるよ。大きなものだけでも二つある。まず、イベントドリブンな世界には適用できない。イベントドリブンという言葉には色々と定義があるんだけど、ここでは「ひとつの処理が次から次へとバトンリレーのように連鎖していく」イメージだね。

コンシューマがサービスにリクエストを投げて、そこからリプライをもらうのがSOAの基本形だったよね。ところが、リクエストを受け取ったサービスが別のシステムに処理を投げて終わってしまうようだと、いつまでもコンシューマのもとにリプライが返ってこない。そういったシステムにはそもそもSOAは使えません。
リプライが戻ってこないと、なぜSOAが使えないのでしょうか?
SOAっていうのは、一定のプロセスを終始ひとつのコンシューマが管理するわけだよね。最初は、在庫確認サービスを呼んで、次に納期確認サービスを呼んで、という具合に、コンシューマが色々なサービスと対話しながら仕事を進めていくわけです。
ところが、イベントドリブンの世界では、処理の主体は次々と変わっていきます。ひとつのイベントが発生すると、ある処理が呼び出され、それがさらに別の処理を呼び出して、、、ドミノ倒しのように次々と勝手に処理がキックされていく。コンシューマは処理を呼び出したら最後、何の応答ももらえず、処理がどうなったかも分かりません。

なるほど。コンシューマが出る幕はなくなっちゃいますね。
そういうことだね。サービスとコンシューマがそれぞれ独立している関係のことを「疎結合」といいます。サービスとコンシューマはメッセージだけでコミュニケーションをとっていて、互いの内部構造に首を突っ込んだりしない。一方、イベントドリブンの世界では、モジュールたちはお互いの動作について一切関知しない。これを非結合といいます。非結合な世界にはSOAは向きません。これが欠点の一つ目。
この記事は参考になりましたか?
- 南波先生のSOAってそういうことだったのね講座連載記事一覧
-
- SOAを導入したくなったら?
- SOAはなぜ普及しないのですか?
- SOAって万能なんですか?
- この記事の著者
-
この記事は参考になりましたか?
この記事をシェア