マイクロサービスアーキテクチャ(改
マイクロサービスアーキテクチャについて、こちらのBlogで紹介しておりますが、最近私がコンサルティングした案件で、もう少し良い表現が生まれたのでこちらでご紹介します。
基本的な考えは変わっていませんが、下記に示すように、ITとしてのサービスの分類の名前をちょっと変えました。
オーケストレーションサービス
(Integration Serviceから分離)
オーケストレーションサービスは、各サービスを連結させ、指定した順番で実行する(つまりオーケストレーションする)サービスのことで、アプリケーション本体のことを指します。今まではIntegration Service の一つとしていましたが、わかりにくいので分離させました。
主にサーバ側のアプリケーションを想定しており、オーケストレーションサービス自体はUIサービスから呼ばれたり、バッチ起動で呼ばれたりします。呼ばれたオーケストレーションサービスから、データサービスやディシジョンサービス、プロセスサービスなどが呼ばれます。
つまり、下の図をご覧になるとおわかりのとおり、今までの「アプリケーション本体」と言っていたもののうち、各種サービスを呼び出す部分が、オーケストレーションサービスという位置づけになります。
オーケストレーションサービスはApache Camel等を利用することで、わかりやすく記述でき、メンテナンス性にも優れたアプリケーションになります。
メッセージサービス
いわゆる通知サービスです。前回の記事では「イベントサービス」としていました。メール・チャット・SNS等に、各種イベントを送信して通知を行うサービスのことを指しています。例えば、入金された、在庫が一つになった、エラーが発生した 等です。
本来、これらをアプリケーション(つまりオーケストレーションサービス)の中から直接発信すると、同期接続となり、接続先(例えばSMTPサーバ)等が混んでいるとアプリケーションの応答速度が落ちます。それを防ぐために、イベントサービスとしてQueueやApache Kafkaに代表されるようなStream Queue等を介した独立したサービスとして設計するのが望ましいです。
従って、拡張して考えていただくと、コンテナ環境におけるログの非同期処理にも使えます。