Amazon SQS Black Beltまとめ

Amazon SQS Black Beltまとめ

こちらは2019/07/17には行われたAmazon SQSのBlack beltの動画のまとめになります。
どちらかというと個人向けにまとめたものになりますが、AWS SAAなどの資格取得に向けて勉強されている方などの助力になればとも思っております。

以下Youtube で視聴できるAmazon公式のAmazon SQSのBlack Beltになります。

セミナーのゴール

Amazon Simaple Queue Service(Amazon SQS)の特徴と活用事例を学び今後のシステム構築で利用できるようになる。

アジェンダ

柔軟性とは

柔軟性とは

柔軟性とは「ビジネスの要求に対するサービスの変更のしやすさ

アプリケーションアーキテクチャの観点で柔軟性について検討

柔軟性を高めるとは

  1. モジュールの強度を高めた適度な分割により範囲の特定がしやすくなる
  1. コンポーネント間の結合を弱めることで影響の波及を限定的に

単にモジュールを分割すればよいというわけではなく、API結合などで密結合していた場合、障害の影響を受けやすい。アプリケーション間を疎結合な場合、影響が限定的

コンポーネント間の結合度を弱めるには

キューなどのコネクターを利用した疎結合な呼び出し方法の採用

“つなぐ”コンポーネントに求められること

  • 機密性 アプリケーションデータの保護
  • 可用性 耐障害性、自動回復、スケーラビリティ
  • 低価格 コストパフォーマンスがよい

アプリケーションの間のつなぎ方

アプリケーション間をつなぐ方式

アプリケーションを”つなぐ”際に検討すること
ストリーミング・メッセージングの検討

・ストリーミング方式

ストリーミング方式とは連続的にデータを送る方式。データ間に順序性等の意味があり、まとめて処理する方式

IoTのデータ等、連続してデータを送るケースや動画、音声データを連携するケース

・メッセージング方式

メッセージ間に連続性などの意味を持たせず単体で処理をする方式

単発で完結する要求や応答をやり取りするケース

同期/非同期方式の検討

・同期方式

リクエスタがプロ牌だの処理完了までの応答を持つ方式

プロバイダの処理完了がしっすなケースやプロバイダの処理が軽く応答が比較的早いケース

・非同期方式

リクエスタが処理完了の応答を持たずに後読の処理を実施する方式

プロバイダ側の処理完了を必須としないケースやプロバイダ側の処理が重く応答が比較的遅いケース、リクエスタ側のスループットを上げたいケースに使用されます

Push/Pull方式検討

・Push方式

プロデューサがメッセージを送信するとコンシューマに届く方式

プロデューサの任意のタイミングで「送信」し、コンシューマに届けたいケース

・Pull方式

コンシューマがメッセージを要求することで受領する方式

コンシューマの任意のタイミングで「受信」したいケース

P2P/Publish Subscribe方式の検討

・P2P方式

プロデューサとコンシューマが1対1で連携する方式

リクエストの依頼先が1か所の場合

・Publish Subscribe方式

1つのメッセージを複数のコンシューマが受信する方法

1つのリクエストで複数の処理を並列で実施したい場合

まとめ

関連するAWSサービス

Amazon SQSの概要

Amazon SQSは非同期型、Pull型かつP2P型

Amazon SQSの特徴

  • セキュリティ : 利用するユーザーのアクセス制限やメッセージの暗号化が可能
  • 耐久性 : 複数のサーバ/データセンターに全メッセージを重複して保持
  • 可用性 : 分散キューモデルを採用することでメッセージの送信/受信の可用性を向上
  • スケーラビリティ : ほぼ無制限のTPSをサポート
  • フルマネージド : サーバの管理不要。運用負荷軽減
  • 初期投資不要 : 毎月の無料利用枠+使った分だけ従量課金

Amazon SQSの構成要素

Amazon SQS の利用ケース

バッファリングとバッチ化

大量のリクエストが一時的に発生する場合にキューで受ける

ワークキュー

アプリケーション間の依存を弱めたい場合

リクエストのオフロード

重い処理が含まれていても素早く応答したい場合

ターゲットのファンアウト

複数の処理を並列処理したい場合

Amazon SQSのキューの特徴

スタンダードキューとFIFOキューの二種類

スタンダードキューFIFOキュー
スループットほぼ無制限のスループット1秒あたり最大300件のメッセージ(300件の送信、受信または削除オペレーション)をサポート
配信方式少なくとも1回の配信
(※二回以上の配信もあり得る)
1回のみ配信
配信順序ベストエフォート
(順序が変わることもある)
順序性を保つ
利用料金100万件を超えた場合、
100万件ごとに0.4USD
100万件を超えた場合、100万件ごとに0.50USD

二回以上の配信がある場合の設計とは?

Amazon SQSのキューのメッセージ取得方法

「ショートポーリング」と「ロングポーリング」の2種類あり基本は「ショートポーリング」

ショートポーリングリングポーリング
応答方式即応答。メッセージがない場合は「空」を応答最大20秒メッセージの受領を待つ。メッセージがない場合はタイムアウト。その場合は「空」を応答
取得メッセージ分散されたサーバの中からサンプリングされたサーバのメッセージを応答。全サーバではないため取得できないこともあるすべてのサーバをクエリしメッセージを応答
利用料金繰り返しショートポーリングを実施する場合APIコール数が増え利用料金が増加する可能性ありショートポーリングに比べAPIコール数が抑制できるため利用料金が安価になる可能性あり
利用シーン複数キューを1つのスレッドでポーリングするようなケース多くのケースはロングポーリング方式。複数のキューをポーリングする必要がないケース

Amazon SQSでメッセージを取得する際のお作法

  1. ポーリング  ショートポーリング or ロングポーリング
  2. 取得&処理 受信したメッセージを利用して処理
  3. 削除  キューの削除指示(受け取ったメッセージはキューに30日間残り続けます)

Amazon SQSの機能詳細

・可視性タイムアウト

・遅延キュー/メッセージタイマー

・Dead Letter Queue

・サーバサイド暗号化を利用したメッセージの暗号化

・キューへのアクセス制御

・メッセージ属性

・モニタリング

・Amazon SQSとAmazon Kinesis