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

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

miroservice-banner

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

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

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

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

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

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

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

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

コレオグラフィ vs オーケストレーション

corp_brochure_168x203-OLD

SOA や BPM の世界では、ビジネス プロセスの構築や実行制御を指すものとして、コレオグラフィ と オーケストレーション という 2 つの用語が使われています。

Fiorano Software では、ビジネス プロセスの構築/実行を指す言葉として コレオグラフィ を意図的に用いています。

これは、コレオグラフィとオーケストレーションという言葉が意味するものが、ビジネス プロセスの構築/実行においてそれぞれ異なるからです。

1. 辞書的意味

コレ1. オグラフィ (choreography) とオーケストレーション (orchestration) の辞書などに掲載されている意味合いは、次のようになっています。

  • コレオグラフィ (choreography)
    バレーや舞踏などの振り付け
  • オーケストレーション (orchestration)
    オーケストラによる演奏方法

バレーとオーケストラとの間の大きな違いは、実演中に指揮者が存在するか否かという点にあります。
これを、ビジネス プロセスの構築/実行に当てはめて説明してみましょう。

API マネジメントの必要性

IoT_blog

API エコノミー

“モノのインターネット (Internet of Things: IoT)” を実現するものとして API は、今日の企業にとって最も重要な技術となっています。
API は、企業が有するデータやアプリケーションを第三者が作成した携帯アプリ、アフリエイトの Web サイトに公開することを可能とします。API によって、企業はそのビジネスを外部プラットフォームの上に拡張することができるようになるからです。

良く知られている例に、Google 社の “Google Maps” の API があります。多くの企業が自社の会社案内やアクセス マップのWeb ページに Google Maps の API を利用して地図を表示させています。
Google 社に限らず、Yahoo !、Amazon、ぐるなび、楽天、Facebook、Twitterなどが API を公開し、自社のサービスを様々な形で利用してもらう施策を実施しています。

メッセージング再入門 (後編) — イベント駆動と非同期メッセージング —

messaging

1.3 イベント駆動によるアプリケーション

1.3.1 イベント駆動と非同期メッセージング

現実世界の業務処理では、”何らかの事象 (イベント) が発生するとそれに応じた業務処理が実行される” というケースが数多くあります。例えば、イベントには次のようなものがあります。

  • 倉庫に部品が入庫した
  • 製造ラインで不良品を検出した
  • 株価が変化した
  • 新規顧客がデータベースに登録された
  • 在庫数が閾値を超えた
  • POS 端末で特定商品の売上げを検出した

今回は、イベント駆動によるアプリケーション実行とメッセージングとの関係について考察します。

メッセージング再入門 (前篇) — JMS を使用することの意味 —

messaging

1. メッセージングとは

“メッセージング” という言葉は、コンピュータの世界のさまざまな場面で広く使われています。例えば、OS のコンセプトを説明する場面や e-メール システムを説明する場合にも使われています。

ここで説明するメッセージングとは、JMS におけるメッセージングを指し、アプリケーション間の非同期通信 を説明する言葉として用いています。

また、”メッセージ” とは、非同期に送受信される情報データ、リクエスト、レポート、イベントなどを指し、人間ではなくアプリケーション ソフトウェアによってコンシューム (受信、処理) されるものを指してしています。

今回は、JMS をメッセージングのプロトコルとして使用することの意味について考察します。