コンポーネントの疎結合
コンポーネント間の相互依存を減らした構成とすることで、1つのコンポーネント変更や障害の影響を削減することができる。
・以下が関連する主要サービス
Lambda、SQS、ELB、SNS
・疎結合化のメリット
ー耐久性が強まる
ー負荷対応やスケーリングなど容易
ーシステム構成の追加・変更が容易
SQS(Amazon Simple Queue Service)
完全マネージド型のメッセージキューイングサービスで、マイクロサービス、分散システム、およびサーバーレスアプリケーションの切り離しとスケーリングが可能です。
SQSはプッシュ通信ではなくポーリング通信です。プッシュ通信はSNSです。
ポーリングとは・・・複数のプログラム間通信に対し、一定のタイミングの問合せがあった場合に送受信処理を行う通信方式。
ーメッセージサイズ・・・メッセージの最大サイズは256KB
ーメッセージ保持期限・・・デフォルトで4日、60秒から最大14日間の変更可能
キューのタイプ
メッセージを管理するための入れ物。
キューの作成・削除の他に、動作属性などの詳細な設定がある。
【キューに保存できるメッセージの数は無制限です】
・Standardキュー
メッセージの配信順序を保証せず、同一のメッセージが2回配信される可能性がある。
・FIFOキュー
メッセージの配信順序を保証する。秒あたりの処理件数はStandardキューに劣る。
SQSの機能
・ロングポーリング
メッセージがある場合に即レスポンスを返すが、メッセージがない場合は設定されたタイムアウトギリギリまでレスポンスを返しません。
・ショートポーリング
リクセストを受けるとメッセージの有無に関わらず即レスポンスを返す。こちらの方がAPIの呼び出し回数も多くコストが高くなるので、ロングポーリングを推奨されている。
・デッドレターキュー
処理できないメッセージを別のキューに移動する機能。指定された回数処理が失敗したメッセージを通常のキューから除外して、デットレターキューに移動します。
・可視性タイムアウトを設定(Visibility timeout)
新しいメッセージを指定時間見えなくする。
SQSを利用して可視性タイムアウトを設定することで、特定のインスタンスにおいて一定期間キューが処理されない場合に限り、可視性タイムアウトを超過するとスポットインスタンス側でキューが見えるようになり処理が実行されるようになります。
SQSではキューに対して優先度を設定することが可能
優先的に処理されるキューとそうではないキューとに振り分けることが可能です。 各キューが別々にポーリングされる際に、 優先順位の高いキューが最初にポーリングされます。このSQS設定により、有料ユーザーには優先的に処理するキューを設定し、無料ユーザーにはデフォルトのキューを利用することが可能です。
優先付けには次のような設定を行います。
1.SQSを用いて優先順位ごとに複数のキューを用意する。
2.処理を急ぐリクエストは優先順位の高いキューに入れる。
3.優先順位に応じてキューを処理するサーバー台数を用意する。
4.キューの「メッセージの遅延送信」機能を利用することで、処理開始時間を遅延させることも可能である。
EC2インスタンスをホストして、ユーザー数の増加に柔軟に対応するサービス
ELB、Auto Scaling、Route53、SQSが利用される。
ELBはアプリケーションに弾力性を追加するための最も理想的なソリューションの1つです。また、Route53にルーティングポリシーを作成して加重ルーティングなどを使用すると複数のリソースを単一のDNS名に関連付けることができます。
SNS
プッシュ型の通知サービスで、システムのイベント通知の中核を担う。様々な通知プロトコルに対応している。他のサービスとの非同期通信を可能にする。
・特徴
ー単一発行メッセージ
ーメッセージ通信順番は保証されない
ー取り消し不可
ーメッセージサイズは最大256KB
・サービスの連携例
CloudWatch・・・Billing Alertの通知
S3・・・ファイルがアップロードされた時の通知 など
SNSのエンドポイント
SNSから送信されるメッセージの受信方法のことを指しています。エンドポイントには、HTTP/HTTPS、AWS Lambda、Eメール、SQS、SMS、モバイルプッシュ通知を利用することができます。内部のアプリケーションのアラーム機能としてはSNSの方が最適です。
SES
フルマネージド型/サーバレス型のコスト効率に優れたEメールサービス
Eメール送信サービスで、SMTPプロトコルを利用する。様々な防御機能を備えており、高い配信性能を誇る。
送信できなかったメールについての処理は利用者側で行う
この処理を行わないと不正なメールサーバーとみなされ、メール機能を利用することができなくなる。SESはアプリケーションの利用ユーザーに対して一斉メールによるお知らせを実施するといった使い方をします。
Step Functions
サーバーレスのオーケストレーションサービスであり、 AWSリソースと組み合わせたワークフローを作成するサービスです。人間による操作を必要とするような長時間実行される、半自動化されたワークフローを作成することもできます。