SEワンタンの独学備忘録

IT関連の独学した内容や資格試験に対する取り組みの備忘録

【AWS】ソリューションアーキテクトアソシエイト対策⑨(SQS、SNS、SES)

今回はあっさり。

Amazon Simple Queue Service(SQS)

概要

Amazon Simple Queue Service (SQS) は、完全マネージド型のメッセージキューイングサービスで、マイクロサービス、分散システム、およびサーバーレスアプリケーションの切り離しとスケーリングが可能です。SQS では、メッセージ指向ミドルウェアの管理や運用に関連する複雑さやオーバーヘッドを排除できるため、開発者が差別化作業に集中することができます。
引用元:Amazon SQS(サーバーレスアプリのためのメッセージキューサービス)| AWS

SQSはメッセージキューイングサービスです。

一般的なエンジニアはメッセージキューイングサービスって言ってすぐにイメージができるものなのだろうか?私はいまいちできなかった。

アプリケーションからDynamoDBやRDS等のDBインスタンスに書き込みを行う際に大量の書き込みを一斉にやってしまうと遅延などの障害の原因になる。
そこで、SQSをかませることによって、アプリケーションはSQSにデータ投入を行って、キューイングすることによりDBインスタンスの負荷状況を応じてSQSからDBに書き込み処理を適切な間隔で命じる。

このことから、アプリケーションから見て書き込み処理が非同期になることは想像がつき、トランザクションを張るような処理ではなく、非同期で書き込みを行うような用途で使用できることも想像ができる

f:id:wantanBlog:20191215184037p:plain


また、単純な書き込み処理以外もSQSのキュー蓄積量に基づいて、EC2などのAuto Scalingを行うことも可能

SQSCloudWatchの監視対象サービスであるため、キューの蓄積量をCloudWatchでメトリクスの閾値に設定することによって、それ応じてAuto Scalingを行うことができる。
蓄積量に応じて、起動インスタンスの増減ができるため、最適なコストでの安定パフォーマンス供給が見込める。

キューイングの種類

SQSのキューイング方式には、標準キュー(スタンダード キュー)FIFOキューの2種が存在する。

■標準キュー(スタンダード キュー)

デフォルトのキュータイプで、少なくとも 1 回のメッセージ配信をサポートする。
メッセージが送信順はベストエフォート型であるため、大量のキューが同時に登録された場合には、配信順序が厳密に登録順にならない場合がある

・参考
https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/standard-queues.html


■FIFOキュー

スタンダードキューの改良版という位置づけ。
FIFO(先入れ先出し)のアルゴリズムに厳密に従うため、キューの登録順序をそのままにメッセージ配信を行うことができる

・参考
https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html

Amazon Simple Notification Service(SNS)

概要

Amazon Simple Notification Service (SNS) は、マイクロサービス、分散型システム、およびサーバーレスアプリケーションの分離を可能にする、高可用性で、耐久性に優れたセキュアな完全マネージド型 pub/sub メッセージングサービスです。Amazon SNS は、高スループット、プッシュベース、多対多のメッセージングのためのトピックを提供します。
引用元:Amazon SNS(サーバーレスアプリのための pub/sub メッセージングサービス)| AWS

メール配信の印象が強かったが、SNS各種サービスへの通知サービスとなる。
通知を行える形式は以下の通りでメール以外にも多数存在する。

・HTTP/S
・Eメール
・SMS
・モバイルプッシュ
・Lamda
・SQS

SNSではメッセージの発行者をパブリッシャ、受信者をサブスクライバという呼称がつけられている。
また、サブスクライバをまとめた一定の単位をトピックという。

そういえば、CloudWatchの請求アラームを設定するときのメール配信先はトピックだった気がする。

パブリッシャになりうるAWSサービスは以下の通り。

・CloudWatch
・SES
・S3
・Amazon Elastic Transcoder

Transcoderは動画などのメディア変換サービス。変換の完了や失敗時に通知を設定できる。

SQSとの連携

SNSはキューイングサービスであるSQSと連携を行うことができる。
SQSはキュー方式であるため、単体ではキューの処理先が別々のサービスであっても各処理が逐次実行となるが、SNSをかませることによって、SQSに振り分けを行い並列実行することができる

f:id:wantanBlog:20191215213113p:plain


f:id:wantanBlog:20191215213132p:plain

Amazon Simple Email Service(SES)

概要

Amazon Simple Email Service (Amazon SES) は、デジタルマーケティング担当者やアプリケーション開発者がマーケティング、通知、トランザクションに関するEメールを送信できるように設計された、クラウドベースのEメール送信サービスです。Eメールを利用してお客様とのつながりを維持するあらゆる規模の企業を対象とした、コスト効率の高い信頼できるサービスです。
引用元:Amazon SES(高可用性で低価格なEメール送信サービス)| AWS

基本的なメール送受信サービス。
メール受信をトリガーとして、S3への配信やLamdaの実行が可能。

Amazon Simple Workflow (SWF)

概要

Amazon SWF は、開発者が並行したステップまたは連続したステップがあるバックグラウンドジョブを構築、実行、スケールするのに役立ちます。Amazon SWF は、クラウド内の完全マネージド型の状態トラッカー、およびタスクコーディネーターとみなすことができます。
引用元:Amazon Simple Workflow Service(クラウドワークフロー管理) | AWS

タスクの状態管理とタスク間の流れの管理を行うサービス。
分散している同期/非同期タスクを一連のフローとして設計し、耐障害性を高めることができる。
バッチ処理としてまとめる感じ?

ワークフロー内にオンプレのサービスを組み込んだり、人による承認処理も含めることができる。