2018年11月合格!AWS認定SAAに向けた勉強⑫サーバレスについて(2)

クラウドを利用したシステムの設計構築がすっかり当たり前になってきて、ユーザ側でもある程度専門的な知識をつけてきている方が増えてきました。

フルスタックテクノロジーコンサルタントとしては、ユーザ側と同レベルの知識だけでは、クライアントにより良い提案をしていくことはできないので、クライアントよりも新しくかつ深い知識を習得することは、必要不可欠です。

ここでは、その知識を証明できるよう、代表的な資格である、AWS 認定 Solutions ArchitectのAssociate levelの取得に向け、私が勉強した内容を公開していきます!

AWSのサービスは百数十を数え、いったい何をどこから手を付けていいかわかりづらいと思いますので、カテゴリごとに体系的に情報を整理したので、是非情報整理の参考にしていただければと思います。なお、ここで書いてあることのみを丸暗記することで試験合格を保証するものではありません。また、AWSのブラックベルトやホワイトペーパーなどの資料もきちんと確認もしてくださいね。

⑫サーバレス(SQS / SNS / SES / SWF)

これが、私のまとめ資料です。(誤字脱字誤謬ご容赦ください)

1. Amazon SQS(Simple Queue Service)について

完全マネージドメッセージキューイングサービス(Pull型のMQサービス)

  • メッセージ順序標準では順序は保証されない。(先入れ先出は保証されない)
  • SQSのFIFOキュー…先入れ先出を保証するためのキューイング機能
  • 少なくとも1回の配信…同じメッセージを複数回受信する可能性がある(⇒よって、受信側のアプリは、べき等性=1回処理しても複数回同じメッセージ受信処理をしても、同じ結果になるようにアプリケーションを作っておく必要がある)
  • Visibility Timeout(可視性タイムアウト)…同じメッセージを複数のコンポーネントが処理していしまうことを防ぐ。特定のコンポーネントがキューからメッセージを取得したら、他のコンポーネントから当該メッセージが見えなくなる。処理完了後当該メッセージはキューから削除される。
  • SQS Message Attributes…メッセージBodyとは別に属性を10コマで定義可能
  • AWS CloudTrail対応…キューの設定変更等に関するAPIコールのログをS3に保存
  • Delete All Message in SQS Queue…「キューの消去」アクションで、キュー内のメッセージの一括削除が可能
  • SQS Client Library for JMS(Java Messaging Service)…SQSをJMSのプロバイダーとして利用可能
  • メッセージ保持期限:デフォルトで4日間(60s~14日の間で変更可能)
  • メッセージ最大サイス…256KB

2.Amazon SNS(Simple Notification Service)について

完全マネージドプッシュ式の通知サービス

  • マイクロサービス、分散型システム、およびサーバーレスアプリケーションの分離を実現する。EMail、SMS、モバイルアプリへのPUSH、AWSLambda、Amazon SQSなどの複数のプロトコルに対応
  • 出版(Publish)-購読型(Subscribe)モデル:パブリッシャー=メッセージを発行する側、サブスクライバー=メッセージを受信する側
  • メッセージ順序順序は保証されない。発行された順にトピックに入れるが、サブスクライバー(受信)側へ、順序が入れ替わって届くこともある
  • 単一発行メッセージ必ず1回のみメッセージが送信される。メッセージ取り消しは不可
  • HTTP/HTTPSレベルでのメッセージ再試行は可能
  • メッセージ最大サイス…256KB

Fanoutパターン

処理を呼び出すプロセスから直接各処理を呼び出すのではなく、間にノーティフィケーション(通知)コンポーネントとキューイングコンポーネントを入れることで、非同期かつ並列に処理を行う。(例:画像をアップロードした後に、サムネイル、画像認識、メタデータのスキャンの三つのタスクを、逐次処理で実行する必要があるが、各処理の時間が長いため、一連の処理をリクエストしてあとは、ユーザ側に処理実行の受付のみを返却し、非同期で処理を進める。 )

  • 通知依頼を送るための、Amazon SNSのトピックを作成
  • 処理ごとにAmazon SQSのキューを作成する。各キューから、SNSのトピックをサブスクライブしておく。
  • 処理ごとにプログラムを分割し、それぞれSQS のキューをポーリングするようにして、プロセスを起動しておく。
  • 処理が開始されたときに、初めのプロセスがSNSのトピックへ通知を依頼する。
  • SNSはSQSのキューに対し、メッセージを送信する。
  • キューをポーリングしていたプロセスがメッセージを取得し、処理を並列に実行する。

3. Amazon SES(Simple Email Service)について

>完全マネージドSMTP通信での、Eメール送信サービス。マーケティング E メール(特価販売など)や取引 E メール(注文確認など)、その他各種のお知らせ(ニュースレターやシステム通知など)の送信に利用する。

4.Amazon SWF(Simple Workflow)ついて

>完全マネージドワークフロー実行基盤。分散するアプリケーションコンポーネントにまたがるタスクをワークフローとして連携する際に利用。

  • スターターワークフローをキックするプログラム。キックするごとに違うワークフローエグゼキューションが作られる。
  • エグゼキューション: ワークフローの基準単位となるインスタンス。ここから最初の処理を行い、ここで最後の処理を行う。
  • デサイダーワークフローがどのように動くべきか、どのアクティビティを選択するかを都度判断する。デシジョンタスクリストを常にポーリングしており、タスクリストにタスクが入った際にそのタスクの内容によってリトライやエラー処理、分散処理等を判断する。
  • アクティビティ実際のバッチ処理、ワークフロー処理を担当する。人間の手が入るような処理も書ける。アクティビティタスクリストを常にポーリングしており、タスクが入ったら処理をスタートする。
  • タスクリストタスクを入れるキュー。それぞれのデサイダー、アクティビティごとに別のタスクリストを持っており、それぞれの処理内容や結果セットが入ってくる。

繰り返しになりますが、ここで書いてあることのみを丸暗記することで試験合格を保証するものではありません。また、AWSのブラックベルトやホワイトペーパーなどの資料もきちんと確認もしてくださいね。


0 件のコメント :

コメントを投稿