マイクロサービスにおける課題
複数サービスが直列に連携されている場合、
- 直列に接続しているサービスのどれか1つがダウンすると、サービスとしての機能が正常に動作しなくなる
- 稼働率が下がる
- なので、直列に連携されているサービスがそれぞれ同期的何連携が不要なら、各サービスを並列に切り出して非同期で連携するようにする
- 連携する際の他サービスのCallをメッセージブローカーを介して行う
- なので、直列に連携されているサービスがそれぞれ同期的何連携が不要なら、各サービスを並列に切り出して非同期で連携するようにする
- 稼働率が下がる
キュー方式とPub/Sub方式
Aサービス(API)がBサービス(API)を呼び出す場合、、
- キュー(Pull)方式 : Aサービスがメッセージブローカにメッセージを格納し、そのメッセージをBサービスがかくにんしにいく。
- メリット:処理量が多くても対応できる。
- デメリット:コンシューマー側によるメッセージブローカ確認頻度によってはタイムラグが発生する
- Pub/Sub方式:メッセージブローカーが直接サービスBにデータをPUSHする。
- メリット:リアルタイム性が高い。
- デメリット:コンシューマー側のインターフェース変更の影響を受ける。処理が重くなるかも。