見出し画像

マイクロサービスアーキテクチャ(改

マイクロサービスアーキテクチャについて、こちらのBlogで紹介しておりますが、最近私がコンサルティングした案件で、もう少し良い表現が生まれたのでこちらでご紹介します。

基本的な考えは変わっていませんが、下記に示すように、ITとしてのサービスの分類の名前をちょっと変えました。

オーケストレーションサービス

(Integration Serviceから分離)
オーケストレーションサービスは、各サービスを連結させ、指定した順番で実行する(つまりオーケストレーションする)サービスのことで、アプリケーション本体のことを指します。今まではIntegration Service の一つとしていましたが、わかりにくいので分離させました。

サービスの考え方

主にサーバ側のアプリケーションを想定しており、オーケストレーションサービス自体はUIサービスから呼ばれたり、バッチ起動で呼ばれたりします。呼ばれたオーケストレーションサービスから、データサービスやディシジョンサービス、プロセスサービスなどが呼ばれます。

つまり、下の図をご覧になるとおわかりのとおり、今までの「アプリケーション本体」と言っていたもののうち、各種サービスを呼び出す部分が、オーケストレーションサービスという位置づけになります。

オーケストレーションサービス例
横軸に各種サービス、縦軸に処理順序を記載している

オーケストレーションサービスはApache Camel等を利用することで、わかりやすく記述でき、メンテナンス性にも優れたアプリケーションになります。

メッセージサービス

いわゆる通知サービスです。前回の記事では「イベントサービス」としていました。メール・チャット・SNS等に、各種イベントを送信して通知を行うサービスのことを指しています。例えば、入金された、在庫が一つになった、エラーが発生した 等です。

本来、これらをアプリケーション(つまりオーケストレーションサービス)の中から直接発信すると、同期接続となり、接続先(例えばSMTPサーバ)等が混んでいるとアプリケーションの応答速度が落ちます。それを防ぐために、イベントサービスとしてQueueやApache Kafkaに代表されるようなStream Queue等を介した独立したサービスとして設計するのが望ましいです。
従って、拡張して考えていただくと、コンテナ環境におけるログの非同期処理にも使えます。


いいなと思ったら応援しよう!