【AWS】SQSとは?

 

Amazon_SQSとは?

SQSの概要

Amazon SQSはシステムの分離に使用されます。

それはワーカープロセスによって扱うビデオを処理するための要求を格納して、非同期処理による確実な処理実行を可能にします。

キュー内のメッセージを競合する複数の「ワーカー」プロセスを実行できます。各メッセージは一度だけ消費されます。

SQSキューイングを利用することで、メッセージング処理の確実な実施や、分散並行処理による処理性能の向上によって、ワーカープロセスの信頼性を高めることができます。

 

 

Amazon SQS は、分散型アプリケーションによって使用されるメッセージキューサービスです。

ポーリングモデルを通じてメッセージを交換し、コンポーネントの送受信を切り離すために使用することができます。

FIFO設定をすることで順番通りにメッセージ処理をすることが可能です。

 

Amazon SQSはAWS独自のフルマネージド型のメッセージキューサービスです。

EC2インスタンスに対してSQSキューを設定すことで並列処理によって負荷が高い処理を分散化することができます。(機械学習など)

 

EC2インスタンスを使ったデータベースへの読込クエリを並列処理するソリューションを構築できます。

多数のクエリ処理が発生することが見込まれるため、多数のEC2インスタンス群によって高速に処理できるようにする必要があります。

一時的な負荷向上を懸念して、Auto Scalingを設定し、スポットインスタンスが一時的に割り当てられる構成を行います。

その際に特定のキューの処理が複数のインスタンスに利用されないようにする設定が必要です。

 

SQSを利用して可視性タイムアウトを設定します。

 

SQSはポーリング処理を実施する際に利用されるものであり、並列処理などの分散処理時に利用するべきもので、イベントに連動したメッセージ通知にはSNSを利用することなります。

 

SQSはアプリケーションコンポーネント間で転送されるメッセージを格納するための、信頼性が高く拡張性の高いマネージドメッセージキューサービスです。

FIFOキューを利用することで高スループット、ベストエフォート型の順序付け、少なくとも1回の配信を提供します。

FIFOキューは基本的に標準キューと同じ機能を持っていますが、順序付けと1回限りの処理をサポートするという追加の利点を提供します。

 

SQSはメッセージ重複排除 IDを利用することで重複メッセージを防ぐ設計が可能です。

メッセージ重複排除 IDは 送信されたメッセージの重複排除に使用するトークンです。

特定のメッセージ重複排除 ID を持つメッセージが正常に送信された場合、同じメッセージ重複排除 ID を持つ送信メッセージは正常に受け付けられますが、5 分間の重複排除間隔の間は配信されません。

 

Amazon SNS は、優れたメッセージ耐久性を提供するために、クロスアベイラビリティゾーンのメッセージストレージを使用します。メッセージングが主要な役割であり、ワーカープロセスにはSQSを利用します。

SQSの特徴

SQSは最長メッセージ保持期間を超えるキューに残っているメッセージを自動的に削除します。

デフォルトのメッセージ保持期間は 4 日間です。

よって、SQSのキューイングを利用してコンポーネント間の連携をする際に、処理されなかったキューを4日間まで保持するために、何も変更せずにデフォルトのままで問題ありません。

 

デッドレターキュー

デッドレターキューは、正常に処理 (消費) できないメッセージの送信先として他の (ソース) キューが使用できるキューです。

SQSのデッドレターキューはデータ保持期間の設定ではありません。

 

可視性タイムアウト

メッセージが受信された直後は、メッセージはキューに残ったままです。

他のコンシューマーが同じメッセージを再び処理しないように、Amazon SQS は可視性タイムアウトを設定します。

 

参考サイト

 

SQSを使用する理由

SQSを使用する理由はシステム処理を分散させたいためであり、AWSリソースの水平方向のスケーリングに役立ちます。

これによりEC2インスタンス側のワーカー処理を複数で並行処理することが可能となり、キューイングによる負荷分散や処理プロセスの最適化を達成することができます。

 

キューについて

Amazon SQS キューに保存できるメッセージの数は無制限です

 

 

利用用途について

Amazon SQSはシステムの分離に使用されます。

それはワーカープロセスによって扱うビデオを処理するための要求を格納して、非同期処理による確実な処理実行を可能にします。

キュー内のメッセージを競合する複数の「ワーカー」プロセスを実行できます。

各メッセージは一度だけ消費されます。SQSキューイングを利用することで、メッセージング処理の確実な実施や、分散並行処理による処理性能の向上によって、ワーカープロセスの信頼性を高めることができます

 

SQSと利用すると

SQSキューにより保留中のデータベース書き込みリクエストをキューに格納して非同期処理することができます。

SQS を使用すると、あらゆる量のソフトウェアコンポーネント間でメッセージを送信、保存、受信できます。メッセージが失われることはなく、他のサービスを利用可能にしておく必要もありません。

書き込み操作がどのような状況下でも失われないようにする対応として要件に合致しています。

 

 

どんなとき役立つのか?

ユースケース1

ある企業ではRDSを利用したデータベースシステムを業務処理に利用しています。

最近になって、書き込み処理件数が増加したことで、ロード処理の遅延や処理失敗が問題となっておりユーザー部門より改善を依頼されています。

あなたはソリューションアーキテクトとして、書き込み操作がどのような状況下でも失われないようにする対応が求められているとき。

ユースケース2

B社はAWSとオンプレミスサーバーの両方を利用して、複数のリソースを有しています。

あなたはソリューションアーキテクトとして、双方の環境にあるリソースを利用するアプリケーションのために分散アーキテクチャを構築するように依頼されました。

この要件を満たすために利用すべきサービスの仕組み

  1. SWFを利用してオンプレミスサーバーとEC2インスタンスへと適用する
  2. SQSを利用してオンプレミスサーバーとEC2インスタンスへと適用する

 

このシナリオでは、AWSとオンプレミスの両方の環境にあるリソースを利用するアプリケーションのために、分散アーキテクチャを構築することが求められており、両方の環境に適用可能なAWSサービスを選択することが必要となります。

分散アーキテクチャーとは、コンピューティングコンポーネントまたはレイヤーを相互に接続しながら独立して実行できるようにするコンピューティングアーキテクチャーの一種です。AWSサービスの中でSQSおよびSWFは、AWSで分散アーキテクチャを作成するために使用できるサービスです

 

Amazon SQSは、メッセージがアプリケーション間またはマイクロサービス間を移動する間にメッセージを格納するための、信頼性が高く、スケーラビリティの高いホスト型キューを提供します。 Amazon SQSを使用するルート、分散アプリケーションコンポーネント間でデータを移動したり、これらのコンポーネントを分離したりできます。

 

Amazon SWF

Amazon SWFは、分散アプリケーションコンポーネント間での作業の調整を容易にするWebサービスです。

 

 

 

マイクロサービス

EC2インスタンス間でコンポーネントが分割されたマイクロサービス間で処理が引き渡される分散アーキテクチャの実装方法が問われている場合。

このようなマイクロサービス化されたコンポーネント間の処理を連携するにはSQSを利用したポーリング処理が最適となります

Amazon Simple Queue Service (SQS) は、完全マネージド型のメッセージキューイングサービスで、マイクロサービス、分散システム、およびサーバーレスアプリケーションの切り離しとスケーリングが可能です。

SQS を使用すると、あらゆる量のソフトウェアコンポーネント間でメッセージを送信、保存、受信できます。

おすすめの記事