今回はあっさり。
- Amazon Simple Queue Service(SQS)
- Amazon Simple Notification Service(SNS)
- Amazon Simple Email Service(SES)
- Amazon Simple Workflow (SWF)
Amazon Simple Queue Service(SQS)
概要
Amazon Simple Queue Service (SQS) は、完全マネージド型のメッセージキューイングサービスで、マイクロサービス、分散システム、およびサーバーレスアプリケーションの切り離しとスケーリングが可能です。SQS では、メッセージ指向ミドルウェアの管理や運用に関連する複雑さやオーバーヘッドを排除できるため、開発者が差別化作業に集中することができます。
引用元:Amazon SQS(サーバーレスアプリのためのメッセージキューサービス)| AWS
SQSはメッセージキューイングサービスです。
一般的なエンジニアはメッセージキューイングサービスって言ってすぐにイメージができるものなのだろうか?私はいまいちできなかった。
アプリケーションからDynamoDBやRDS等のDBインスタンスに書き込みを行う際に大量の書き込みを一斉にやってしまうと遅延などの障害の原因になる。
そこで、SQSをかませることによって、アプリケーションはSQSにデータ投入を行って、キューイングすることによりDBインスタンスの負荷状況を応じてSQSからDBに書き込み処理を適切な間隔で命じる。
このことから、アプリケーションから見て書き込み処理が非同期になることは想像がつき、トランザクションを張るような処理ではなく、非同期で書き込みを行うような用途で使用できることも想像ができる。
また、単純な書き込み処理以外もSQSのキュー蓄積量に基づいて、EC2などのAuto Scalingを行うことも可能。
SQSはCloudWatchの監視対象サービスであるため、キューの蓄積量をCloudWatchでメトリクスの閾値に設定することによって、それ応じてAuto Scalingを行うことができる。
蓄積量に応じて、起動インスタンスの増減ができるため、最適なコストでの安定パフォーマンス供給が見込める。
キューイングの種類
SQSのキューイング方式には、標準キュー(スタンダード キュー)とFIFOキューの2種が存在する。
■標準キュー(スタンダード キュー)
デフォルトのキュータイプで、少なくとも 1 回のメッセージ配信をサポートする。
メッセージが送信順はベストエフォート型であるため、大量のキューが同時に登録された場合には、配信順序が厳密に登録順にならない場合がある。
■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に振り分けを行い並列実行することができる。
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
タスクの状態管理とタスク間の流れの管理を行うサービス。
分散している同期/非同期タスクを一連のフローとして設計し、耐障害性を高めることができる。
バッチ処理としてまとめる感じ?
ワークフロー内にオンプレのサービスを組み込んだり、人による承認処理も含めることができる。