Blackbeltまとめ #1:Amazon SQS

開発

このたび、AWS Solution Architect Associate(以下、SAA)を受験することになりました。
勉強の一環で、BlackBelt の資料を読み込んでいます。

BlackBeltは、AWS公式が出している資料です。AWS各サービスの説明を、わかりやすくしてくれています。

私は普段から自社開発企業のインフラエンジニアとして働いており、業務でAWSに日常的に触れています。
しかし、SAAの試験範囲には、これまで自分が扱ったことのないサービスの内容も含まれます。
試験対策の一貫として、また、自分が扱ったことのないサービスの理解を深めるため、Blackbeltの内容をまとめてみます。

この記事では、SQSのBlackbeltについてまとめてみました!

Amazon SQSの概要

以下の内容は、スライドの内容を抜粋したものです。

SQSとは?

AWSが提供している、スケーラビリティに優れた分散メッセージキューです。
コンポーネント間を”つなぐ”サービスになります。

簡単にまとめると、下記4つの特徴があります。

  • メッセージ方式
    • 単発で完結する
  • 非同期
    • リクエスタが処理の終了応答を待たずに、後続の処理を実施する
  • Pull型
    • コンシューマがメッセージを要求する
  • P2P方式
    • プロデューサとコンシューマが1対1

構成要素

SQSを導入する目的は?

アプリケーションの柔軟性を高めるために、SQSが導入されます。

アプリケーションにおける柔軟性とは?

ビジネス要求に対するサービスの変更のしやすさのことです。

柔軟性を高めるためには?

さまざまな方法があると思いますが、1つは各コンポーネント間を疎結合にすることです。
各コンポーネントをモジュール化し、強度を高め、他のコンポーネントとの関係を薄くすれば、サービスの柔軟性を高められます。
具体的には、SQSを使用してコンポーネント間にキューを設置する、といった方法になるでしょう。

疎結合なサービスは、①変更時の影響範囲の特定がしやすい、②開発・テストがしやすい、③リリースがしやすい、④失敗時の影響がすくないというメリットがあります。

SQSのユースケース

バッファリングしたい

大量のリクエストが一時的に発生する場合に、キューで受け止めることができます。

並列処理を実行したい

その他

ほかにも、下記のようなユースケースがあります。

SQSのキューの特徴

キューの種類

スタンダートキューと、FIFOキューの2種類があります。

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

ショートポーリングと、ロングポーリングの2種類があります。
デフォルトではロングポーリングを使用します。

メッセージ取得時の作法

メッセージ取得後は、キューに削除指示を出す必要があります。

SQSの機能詳細

処理中メッセージのロック

コンシューマが取得したメッセージに対して、指定された期間他のコンシューマからの同一メッセージへのアクセスを拒否する機能です。
複数のコンシューマで処理が重複するのを防ぎます。

指定した時間をすぎると他のコンシューマで処理が可能になります。

メッセージの暗号化

AWS KMSに保管されているキーを使って、メッセージ本文を暗号化するオプションがあります。

アクセス制御

他サービスとの使い分け

似たようなサービスに、Kinesisがあります。
Kinesisはストリーミングデータを対象にしている点が違います。

まとめ

SQSはコンポーネントの疎結合化を実現するためのサービスということがおわかりいただけたでしょうか。
別のサービスについても、機会があればまとめてみます。

コメント

  1. […] Blackbeltまとめ #1:Amazon SQSBlackbeltまとめ #2:S3 […]

タイトルとURLをコピーしました