フィオラノ ソフトウェア ジャパン ブログ
    Twitter
  • Facebook
  • Google+

マイクロサービス (その5) –賢さをどこに求めるか–

miroservice-banner

前回 (その4) は、機能性の低いパイプ (Dumb pipe: 土管) のアーキテクチャとして、仮想的なバスを提示しました。

今回は、“smart endpoints and dumb pipes (賢いエンドポイントと機能性の低いパイプ)” の一方である “smart endpoint (賢いエンドポイント)” について考察してみたいと思います。
ビジネス ロジックを複数のマイクロサービスからなるコレオグラフィとして実現し、マイクロサービス間の通信はライトウェイトなメッセージング サーバーで構成される仮想的なバス (Dumb pipe: 土管) によって支えるアーキテクチャが良いと説明しました。
このアーキテクチャによって、オンプレミスやクラウド上に分散されて配置されるマイクサービスを連携し、1つのビジネス ロジックとして実行することが可能になります。

VirtualBus
土管とコレオグラフィ

マイクロサービス (その1) – モノリシックとの対比 —

miroservice-banner

SOA の難点とマイクロサービスへの期待

クラウド、ビッグデータ、API エコノミーなどデジタル ビジネスの領域に ”マイクロサービス *2” というバズワードが現れてきました。

サービス指向アーキテクチャ (SOA) への期待が薄れる中、アプリケーション開発のアーキテクチャ スタイルとしてマイクロサービスに注目が集まっています。

2000年代の初期に登場した SOA は、大きな期待を集め、また導入に成功したプロジェクトも多くありました。それにもかかわらず、今日では、いくつかの理由によって、過剰に宣伝されたハイプ (hype) なテクノロジーとみなされるようになってきました。

SOA は、サービス間のインタフェースを定義するだけで数か月も要する複雑でコスト高なものとみなされるようになっています。SOA のプロジェクトでは、サービスの粒度を非常に大きなものとし何種類ものインタフェースを有するものとして実装されがちです。これはサービスに汎用性を持たせようという意図の結果だと思われるのですが、却って使い勝手が悪くなり、SOA のメリットの1つであるサービスの共有/再利用を阻害してしまいます。別の極端な例は、サービスを数行のコードしか持たない小さなものとして実装してしまうケースです。このような小さなサービスでは簡単で単純な業務処理を実行するのに、数十、数百のサービスを連携しなければならず、サービス間の通信だけで多大な処理時間やコンピュータ リソースを費やしてしまうことになります。

SOA の難しさの1つに、サービスの粒度決定があるといってもよいでしょう。

このクラシックな SOA が持つ欠点を解消するものとして、アプリケーション連携のアーキテクチャへのマイクロサービスの応用に期待が集まっています。

マイクロサービスの詳細を見ていく前に、モノリシックなアプリケーション アーキテクチャと対比してみましょう。