サービス間通信:REST vs Messaging Queue の使い分け¶
問題¶
サービス間の通信をどうするか?REST か Messaging Queue か、なぜ?
比較¶
| 観点 | REST | Messaging Queue |
|---|---|---|
| 通信モデル | 同期(リクエスト/レスポンス) | 非同期 |
| 結合度 | 強め(呼び出し先の可用性に依存) | 弱い(キューがバッファ) |
| レイテンシ | 低い(即時応答) | 高い(キュー経由) |
| 向いている用途 | リアルタイムな結果が必要な処理 | バックグラウンドタスク |
使い分けの基準¶
REST を選ぶとき: - ユーザーにすぐ結果を返す必要がある(認証・在庫確認など) - 呼び出し先のレスポンス内容が次の処理に必要
Messaging Queue を選ぶとき: - メール送信・画像処理など結果を待つ必要がない - 処理が失敗しても再試行できる(at-least-once が許容される) - 下流サービスのダウン時もメッセージを保持したい - ピーク時の負荷を吸収したい
ポイント¶
- 実際のプロダクションでは両方を使い分けるのが一般的
- 「同期が必要か否か」が最初の判断軸
- キューを挟むと障害耐性・スケーラビリティが上がる代わりに、トレースとデバッグが複雑になる