AWS SNSとSQSの違いを詳しく解説!🛠️💡
はじめに
AWS資格勉強で問題を解いていると何度も出てくるのが、SQSです。
とりあえずわからない時は、SQSかlambdaの選択肢を選んでおこうってなってます。
が、しっかり理解しておこうと思います。
SQSとSNSの違いを改めて確認、そしてこの2つを連携させるべきときとそうでないときの違いをまとめてみます。
AWS SNSとSQSの違い 🔍
SNS 📢
SNSは、Simple Notification Serviceの略で、主にパブリッシュ/サブスクライブ型のメッセージングサービスです。つまり、メッセージを送信する側(パブリッシャー)と受信する側(サブスクライバー)が分離されています。SNSは主に以下のような場面で使われます:
- イベント通知:例えば、メール、SMS、HTTP/Sエンドポイントなど、様々なチャネルに通知を送ることができます。
- アラートシステム:アプリケーションの状態を監視し、異常が発生した場合に通知を送ります。
SQS 🔄
SQSは、Simple Queue Serviceの略で、メッセージキュー型のサービスです。メッセージをキューに格納し、後から処理するという仕組みです。SQSは主に以下のような場面で使われます:
- タスクキュー:バックグラウンドジョブを処理するためのキューとして使用します。
- システム間のメッセージング:異なるサービス間のメッセージを仲介する役割を果たします。
SNSとSQSのできることとできないこと 🔧
SNSのできること
- 多チャネル通知:メール、SMS、HTTP/Sエンドポイントなど、様々なチャネルにメッセージを送信できます。
- イベント駆動型アーキテクチャ:アプリケーション間でのイベント通知を簡単に実現できます。
できないこと
- メッセージのキューイング:メッセージを一時的に保持しておく機能は持っていません。
SQSのできること
- メッセージのキューイング:メッセージを一時的に保持し、後から処理する機能があります。
- デリバリーの保証:メッセージが確実に処理されるまで保持します。
できないこと
- 多チャネル通知:様々なチャネルにメッセージを送信する機能は持っていません。
SNSとSQSの連携パターン 🔗
連携させるパターン
SNSとSQSを連携させることで、多チャネル通知とメッセージキューの機能を組み合わせることができます。具体的なパターン例としては:
- 通知と処理の両方を行う:SNSで通知を送り、SQSで処理をキューイングします。例えば、ユーザーのアクションがあった時にメール通知を送り、同時にSQSにタスクをキューイングします。
連携させないパターン
SNSとSQSを連携させない場合、それぞれの機能を分離して使用します。例えば:
- 単独で使用:SNSで通知のみを行い、SQSでメッセージキューのみを使用します。
SNSのSESの使い方の違い 📧
**SES(Simple Email Service)**はSNSの一部として機能しますが、メール送信に特化したサービスです。SESは主に以下のような場面で使われます:
- メール送信:ユーザーにメールを送信します。
- メールの配信:大量のメールを効率的に送信します。
SESはSNSと異なり、直接メールを送信する機能を提供します。
まとめ 🏁
今日はAWSのSNSとSQSについて詳しく見てきました。それぞれ異なる機能を持っており、状況に応じて適切に使用することが重要です。
SQSはサービスの連携を手助けでき、後続のサービスは好きなタイミングでポーリングできます。
一方、SNSはサービスの有無をいわず(複数)のサブスクライバーにトピックを投げてしまう。
って感じですかね。
それでは、今日はこの辺にします!🌈
AIを活用して記事を書いてます。