プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • AWS
  • 【AWS】「SQS(Simple Queue Service)」、Step Functio…
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【AWS】「SQS(Simple Queue Service)」、Step Functionsとの使い分けなど

11.09

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

SQS(Simple Queue Service)とは?

フルマネージドでサーバレスのキューサービスです。

メリット

  • キューとしての非同期処理の実現に加え、AWSの持つ高い障害耐性と処理性能を得ることができます。
  • また、サーバレスなので運用コストもかかりません。

具体的なユースケース

アプリケーション間の連携

相手先で障害が起きていても一旦キューに蓄積するので、相手先が復旧したら再送することが可能です。昨今のマイクロサービスやサーバーレス構成のアプリケーションの高まりによりアプリケーション間に配置するケースが多いです。

スパイクアクセス(急なアクセスが増加)が発生しやすいアプリケーション

急なアクセス増加でもキューに蓄積してくれてデータの損失を防ぎます。

Railsでの利用

「Shoryuken」というGemを使って作成します。Railsでの非同期処理といえば「Sidekiq(Redis)」だとは思いますが、

Shoryuken

「AWS SQS」からジョブ取り出すワーカーを簡単に作成することができるGemです。

Fake SQS

AWSのSQSを使わずにローカルでSQSっぽいものを構築することができるモックです。Dockerイメージとして提供されていてローカル用に「docker-compose.yml」で設定します。

SQSの種類

標準キュー

メリット

無制限のスループット:ほぼ無制限のトランザクション(TPS)をサポートする。

デメリット

ベストエフォート型の順序付け:メッセージが送信されたときと異なる順序で配信されることがある。
少なくとも1回の配信:メッセージは少なくとも1回は確実に配信されるが、複数のメッセージのコピーが配信されることもある。

用途

処理の順序や重複を許容できる場合はこちらを選ぶ。

FIFOキュー

メリット

高スループット:デフォルトでは、FIFOキューは毎秒最大300件のトランザクション(TPS)をサポートする。
先入れ先出し配信:メッセージが送信または受信された順序が厳密に保持されます (先入れ先出し)。

デメリット

標準キューよりTPSが下がる。

用途

処理の順序や重複を許容できない場合はこちらを選ぶ。

料金

基本的には安いです。月100万リクエストまで無料、月1億リクエストで4300円程度です。

用語

Dead letter queue(デットレターキュー)

リトライしても処理に失敗する場合は別キューに格納する機能です。Cloudwatchと連携し、デバッグに使用できます。

詳細仕様

リトライをサポート

一定時間内に処理が正常に完了しなかった場合、再度 Queueに入ります。ただ、一定回数失敗した場合、「Dead letter queue(デッドレターキュー)」 に移動されます。

SQSとStep Functionsの使い分け

SQS

スケーラブルで信頼性が高いキューが必要な場合

Cloudformation

Lambda側でターゲットを指定すれば良いだけなので記述量は少ない。

Step Functions

処理の追跡や、サービス間のメッセージ受け渡しが必要な場合

Cloudformation

ロジックを記述する必要があるので記述量が多い。ただ、「何と何が何をしているのか」が分かり易く可読性が高い。

スポンサーリンク
  • 2020 11.09
  • miyabisan2
  • コメントを書く
  • AWS
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2021 01.16

    【AWS】「ストレージ」(S3、EFS、Glacier、Storage Gatewayなど)

  2. 2020 07.11

    【AWS】「RDS」の冗長化、リードレプリカの活用事例

  3. 2021 01.10

    【AWS】「エッジロケーション」について

  4. 2020 12.29

    【AWS】「CloudFormation」の概要、書き方

  5. 2023 10.09

    【AWS】App Runnnerについて

  6. 2021 12.02

    【AWS】「Code Commit」、「Code Build」、「Code Deploy」、「Code Pipeline」の違い

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【nginx】基本、変数(ビルドイン変数)

【AWS】「Lambda」、関数の定義

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー