
面接官:メッセージキューについて説明してください。
私:メッセージキューは、アプリケーション間で非同期にメッセージを交換するための仕組みです。例えば、以前ECサイトの開発プロジェクトで、注文処理と在庫管理を連携させる際にメッセージキュー(RabbitMQ)を導入しました。
注文が入ると、注文処理アプリケーションが「注文情報」というメッセージをメッセージキューに送信します。在庫管理アプリケーションはメッセージキューからメッセージを受け取り、在庫を更新します。
これにより、注文処理アプリケーションは在庫管理アプリケーションの処理完了を待つ必要がなくなり、迅速な注文受付が可能になりました。また、在庫管理システムが一時的にダウンした場合でも、メッセージキューにメッセージが溜まるため、システム復旧後にメッセージを処理することでデータの整合性を保つことができました。
現役エンジニアによる深掘り解説
メリット
疎結合: アプリケーション間が直接依存しないため、独立して開発・運用できます。一方のアプリケーションの変更が、他方に影響を与えにくいです。
非同期処理: メッセージをキューに格納し、後から処理できるため、リアルタイム処理が不要なタスクの処理を遅延させることができます。これにより、システム全体の応答性を向上させることができます。
可用性の向上: 一方のアプリケーションがダウンした場合でも、メッセージはキューに保持されるため、システム全体の可用性が向上します。
スケーラビリティ: メッセージキューをスケールアウトすることで、メッセージ処理能力を向上させることができます。
デメリット
複雑性の増加: メッセージキューの導入により、システム全体のアーキテクチャが複雑になる可能性があります。
メッセージの損失リスク: メッセージキュー自体に障害が発生した場合、メッセージが失われる可能性があります。信頼性を高めるためには、メッセージの永続化やレプリケーションなどの対策が必要です。
モニタリングの必要性: メッセージキューの状態やメッセージの処理状況を監視する必要があります。
⚠️ 面接突破のワンポイント
- 技術選定の理由を明確に: 「なぜ他の方法ではなくメッセージキューを選んだのか?」「具体的な製品選定の理由は?」といった質問に答えられるように準備しましょう。
- 障害時の対応について: メッセージキューがダウンした場合の対策や、メッセージの再処理方法について説明できるようにしておきましょう。


