サーバレス

serverless

SQS

SQSの選択

  • SQSはポーリングのキューイングサービスに使用される。

    • コマンドのようなものを使う

  • 似たものと比較

    • Amazon MQ

      • 標準的なプロトコルを使う場合で、他の物をAWSに移行する場合に使用

      • JMS, NMS, AMQP, STOMP, MQTT, WebSocketなど

    • Amazon SNS

      • pub/subメッセージングのサービス。

      • メール通知やプッシュ通知に対応

    • Amazon SES

      • アプリから大規模にメール配信機能などを使う場合に使用

    • Kinesis Data Streams

      • 5MBなどある程度容量のあるデータを送信する。

SQSの特徴

  • ポーリング型のキューイングサービス

  • 標準キューは順番が保証されないが、FIFOは順番を保証する

  • 優先キューは他よりも優先することが可能

  • メッセージ保持期間を超過すると削除される

  • 発行したメッセージはキャンセル不可

  • 配信ポリシーによりキューの再試行を実施

Producer / Consumer

  • Producerが送信側

  • SQSにより中継される。

  • ConsumerがPollingによりメッセージ有無を確認する。

その他の特徴

  • メッセージ数は制限なし

  • メッセージサイズは最大256KB

    • 拡張クライアントライブラリをしようすれば、2GBまで可能

  • Dequeueは一度に10件まで受信可能

  • メッセージ保持期間はデフォルト4日間

    • 60秒~14日で設定可能

  • APIを使ってメッセージを削除しないかぎり、メッセージは処理済みでも保持される。

  • そのため処理済みのキューは、DeleteMessageAPIを実行する必要がある。

キューのタイプ

  • 標準キュー

    • メッセージの 1 つ以上のコピーが順序どおりに配信できないことがある。

    • メッセージが少なくとも 1 回配信される方式であり、キューには重複が発生する可能性がある。

    • 1 秒あたりのトランザクション数はほぼ無制限

    • 標準キューは、アプリケーションが 1 回以上に順序 が正確ではなくても配信されれば良いケースで利用する。

  • FIFOキュー

    • 先入れ先出し方式( FIFO )により配信 順番を守る。

    • メッセージが 1 回だけ配信され、コンシューマがプロセスを処理して削除するまで使用可能なキューの状態を保つため、キューに重複がない。

    • 1 秒あたり 300 トランザクションに制限

    • FIFO キューは、操作やイベントの順序が重要である場合や、重複を許容できないユースケースに利用する。

SQSの識別子

  • 識別子は必要に応じて使い分ける

    • キューURL

    • メッセージID

    • メッセージグループID

      • グループ内で順序が維持される

      • グループ毎にコンシューマーを分けることも可能

可視性タイムアウト

  • 処理を担当するインスタンス以外からは一定時間キューが見えなくなる機能

  • 他のコンシューマーが同じメッセージを再処理しないようにすることが可能。

  • スポットインスタンスを利用している場合に効果的

  • 30秒~12時間で設定可能

ポーリング方式

  • ショートポーリング

  • ロングポーリング

    • メッセージがない場合でも待機時間を0~20秒で設定

    • 空のレスポンスを削減できる

キュータイプ

  • 遅延キュー

    • 新しいメッセージの配信を遅延させることができる機能

    • 0秒~15分で設定

  • 優先度付きキュー

    • キューに優先度をつけることができる

  • デッドレターキュー

    • 正常に処理できなかったキューを別のキューとして移動させる

    • 処理不能なキューの蓄積を防ぎ、後で処理できなかった理由を解析できる

  • 一時キュー

    • 高スループットでコスト効率に優れたアプリケーション向けに使用

    • 説明はよくわからんよ??

キューの詳細設定

  • メッセージ重複排除ID

    • FIFOのみで利用する

  • 送信データの暗号化

  • メッセージタイマー

    • メッセージ毎に遅延を指定できる

    • 遅延キューはキュー全体であり、この設定は遅延キューよりも優先される。

Last updated