コンテンツにスキップ

サービス間通信:REST vs Messaging Queue の使い分け

問題

サービス間の通信をどうするか?REST か Messaging Queue か、なぜ?

比較

観点 REST Messaging Queue
通信モデル 同期(リクエスト/レスポンス) 非同期
結合度 強め(呼び出し先の可用性に依存) 弱い(キューがバッファ)
レイテンシ 低い(即時応答) 高い(キュー経由)
向いている用途 リアルタイムな結果が必要な処理 バックグラウンドタスク

使い分けの基準

REST を選ぶとき: - ユーザーにすぐ結果を返す必要がある(認証・在庫確認など) - 呼び出し先のレスポンス内容が次の処理に必要

Messaging Queue を選ぶとき: - メール送信・画像処理など結果を待つ必要がない - 処理が失敗しても再試行できる(at-least-once が許容される) - 下流サービスのダウン時もメッセージを保持したい - ピーク時の負荷を吸収したい

ポイント

  • 実際のプロダクションでは両方を使い分けるのが一般的
  • 「同期が必要か否か」が最初の判断軸
  • キューを挟むと障害耐性・スケーラビリティが上がる代わりに、トレースとデバッグが複雑になる