Amazon SNS と Amazon SQS の違いは何ですか? 質問する

Amazon SNS と Amazon SQS の違いは何ですか? 質問する

SNS と SQS はいつ使用すればよいのでしょうか。また、これらが常に結合されているのはなぜでしょうか。

ベストアンサー1

SNS は分散型のパブリッシュ/サブスクライブシステムです。メッセージは、パブリッシャーから SNS に送信されるとすぐにサブスクライバーにプッシュされます。

SQSは分散キューイングシステムです。メッセージは受信者にプッシュされません。受信者はSQSからメッセージをポーリングまたはプルする必要があります。メッセージは、複数の受信者が同時に受信することはできません。どの受信者もメッセージを受信し、処理して削除できます。他の受信者は後で同じメッセージを受信しません。メッセージがすぐにサブスクライバーにプッシュされる SNS とは異なり、ポーリングは SQS でのメッセージ配信に本質的にいくらかの遅延をもたらします。SNS は、電子メール、SMS、HTTP エンドポイント、SQS など、いくつかのエンドポイントをサポートしています。不明な数とタイプのサブスクライバーにメッセージを受信させたい場合は、SNS が必要です。

SNS と SQS を常に結合する必要はありません。SNS から SQS とは別に電子メール、SMS、または HTTP エンドポイントにメッセージを送信することもできます。SNS と SQS を結合することには利点があります。外部サービスがホストに接続しないようにしたい場合があります (ファイアウォールが外部からホストへのすべての着信接続をブロックする場合があります)。

大量のメッセージが原因でエンドポイントがダウンしてしまうことがあります。電子メールや SMS は、メッセージを迅速に処理する手段としては適していません。SNS を SQS と組み合わせると、自分のペースでメッセージを受信できます。クライアントはオフラインでも、ネットワークやホストの障害に耐えることができます。配信の保証も実現できます。SNS を設定して HTTP エンドポイント、電子メール、または SMS にメッセージを送信する場合、メッセージの送信に何度か失敗すると、メッセージがドロップされる可能性があります。

SQS は主に、アプリケーションを分離したり統合したりするために使用されます。メッセージは SQS に短期間 (最大 14 日間) 保存できます。SNS は、複数のサブスクライバーにメッセージのコピーを配布します。たとえば、アプリケーションによって生成されたデータを複数のストレージ システムに複製するとします。SNS を使用してこのデータを複数のサブスクライバーに送信し、各サブスクライバーが受信したメッセージを異なるストレージ システムに複製することができます (S3、ホスト上のハードディスク、データベースなど)。

おすすめ記事