1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon SQS(Simple Queue Service)

Last updated at Posted at 2024-01-07

はじめに

この記事はAWS SAA試験勉強のための、Amazon SQSに関する知識のまとめです。

Amazon SQSとは

Amazon Simple Queue Service(SQS)は、フルマネージド型のメッセージキューサービスで、大量のメッセージを効率的にキューイングすることが可能です。

アップロードされたメディアファイルから複数のEC2インスタンスで非同期処理する場合のジョブ制御に用います。

コンポーネント障害によってコンポーネント間のメッセージが失われないようにするキューイング処理を実装します。

マイクロサービス、分散システム、およびサーバーレスアプリケーションの切り離して、疎結合化されたアーキテクチャ構成を実現します。

  • リクエスト数の増減が予測困難である状況を考慮してSQSキューを間に入れることで、より安定的に処理リクエストをキューに蓄積しつつ実行することができます

  • 有料ユーザーには優先的に処理するキューを設定し、無料ユーザーにはデフォルトのキューを利用することが可能

  • フロントエンドからの依頼をSQSでキューイングし、バックエンドへ処理を連携かつ並列化することができます

  • SQSのキューイングを利用してコンポーネント間の連携をする際に、処理されなかったキューを4日間保持します

  • CloudWatchと連携してオートスケーリングによる負荷軽減を行えます

  • データプロデューサーデータコンシューマーを分割することにより、アプリケーションを疎結合します

キューのポーリング

キューのポーリングは、メッセージキューシステムにおいて、キューに新しいメッセージが到着しているかを定期的にチェックし、それに応じて処理を行う方法です。コンシューマーはポーリングを利用しています。

FIFO

キュー(待ち行列)は、最初に格納したデータを最初に取り出すことができるFIFO(First-In First-Out)の処理に適したデータ構造です。

SNS FIFO トピックを導入することで、複数のサブスクライバーに厳密なメッセージの順序付けと重複を排除したメッセージ配信を提供できるようになりました。

可視性タイムアウト

可視性タイムアウト(DefaultVisibilityTimeout)とは、コンシューマーがキューのメッセージを取得してから、他のコンシューマーがそのメッセージを取得できない期間です。

ユーザがメッセージを取得した時に初めて、キューからメッセージを消します。

可視性タイムアウトを設定するには、ChangeMessageVisibility APIを使用して、適切な可視性タイムアウト値を設定することになります。
これを利用して、他のコンシューマーがメッセージを二重に取得しない待機時間を設定することで、Amazon RDSデータベースに重複データが保存されないようにできます。

デッドレターキュー

SQS で正常にメッセージが処理されなかった場合に未処理のメッセージを DLQ(デッドレターキュー)に移動することが出来ます。削除はしません。

SNSとSQSを連携させたファンアウト構成

SNSによるプッシュ通知によってリクエストをSQSキューに送信できます。
SNSでは送信側をパブリッシャー、受信側をサブスクライバーと言います。このようなデザインパターンをPub/Subと言ったりします。受け渡すメッセージはトピックと言います。

DynamoDBテーブルへの書込処理機能

Amazon SQSキューだけではDynamoDBテーブルへの書込処理機能を実現できません。SQSキューからメッセージをポーリングして、Lambda関数がデータ処理を実行する必要があります。

SQSアクセスポリシー

異なるAWSアカウントに対してSQSキューへのアクセス権限を付与するためには、SQSアクセスポリシーを作成して、そのAWSアカウントを指定してキューへのメッセージ送受信を許可する設定を行います。

SQSメッセージ重複排除ID

メッセージ重複排除 ID は、送信されたメッセージの重複排除に使用されるトークンです。特定のメッセージ重複除外ID を持つメッセージが正常に送信されると、同じメッセージ重複除外ID で送信されたメッセージは正常に受け入れられますが、5分間の重複除外間には配信されません。

EC2のAuto ScalingとSQSキュー

EC2のAuto ScalingとSQSキューが使用されるケースとしては、キューのサイズに基づくAuto Scalingのターゲット追跡スケーリングを設定して、CloudWatchで監視する方法が考えられます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?