Table of Contents
はじめに
FundastA Inc.の鈴木です。
現在、AWS ソリューションアーキテクトアソシエイト試験合格に向け AWS について勉強中です。
今回は サーバーレス について勉強したことを備忘録として、記述していきます。
疎結合化
サーバレスを学んでいく上で、まず「疎結合化」の意味等を記述していきます。
疎結合化とは
コンポーネント間の相互依存を減らした構成とすることで、1 つのコンポーネント変更や障害の影響を削減すること。
疎結合化をすることで、
- 耐障害性の強化
- 負荷対応やスケーリングなどが容易
- システム構成の追加・変更が容易
以上のことがメリットとしてあります。
疎結合化のためのサーバーレスサービス
AWSで使用されるサーバレスの例としては
-
ELB:サーバー間トラフィック調整
-
SQS:インスタンス間連携
-
SNS:インスタンス間連携
-
Lambda:トリガー処理で連携
などがあります。
今回は SQS と SNS について解説していきます。
( Lambda と ELB については別の機会に記述します。)
SQS
SQS とは
プロセス間通信などのスレッド間通信に使われるコンポーネントで制御やデータを伝達するポーリング型キューサービス
ポーリングとは?
- 複数のプログラム間通信に対し、一定のタイミングの問い合わせがあった場合に送受信処理を行う通信方式
- 送信処理から受信処理に通信内容が送られてくる際に中継点を設置する。そして受信側にとってタイミングの良いときに通信を行う。
ポーリングイメージ図
特徴
-
フルマネージド型で提供され、高可用性・高スケーラビリティ・高スループット・低コストを実現
-
メッセージなどの 256KB までの軽いデータしか利用できない。
-
メッセージ保持期限:デフォルトで 4 日(最小 60 秒から最大 14 日間)メッセージを保持する。
-
優先キューは他のキューよりも優先的に処理させることが可能
-
メッセージ保持期間の間はメッセージを保持するが、超過するとメッセージを削除する。
-
発行したメッセージは取り消し不可
-
配信ポリシーによるキューの再試行を実施する。
メッセージの制約
-
メッセージ数は、無制限に利用可能
-
メッセージサイズは最大 256 KB
-
ただし、拡張クライアントライブラリーを利用すると 2 GB までのメッセージのやり取りが可能になる。
-
S3 に保存して、位置情報を送る。
キューのタイプ
-
標準キュー(デフォルト設定)
-
順番通りに処理と 1 回だけのメッセージングをなるべく実施する処理
-
同じメッセージを複数回受信する可能性あり
-
少なくとも 1 回の配信
-
メッセージ通信順番は保証されない
- トランザクション数はほぼ無制限
-
アプリケーションが 1 回以上に順序が正確ではなくても配信されれば、良いケースで使用
-
FIFOキュー(First in First out)
-
最初に入ったキューを最初に処理する順番を守る。
-
キューの重複がない。
-
トランザクションが 300 に制限
-
操作やイベントの順序が重要である場合や重複を許容できない場合に使用
・複数の処理を1つにまとめたものである。
この処理を1つずつの処理としてカウントするのではなく、2つを1つの処理として考える。
すると、片方のどちらかが失敗することによって処理エラーになる。
SQSの機能
- ShortPling
- キューがからの場合でも即時にリターンする。
- LongPoling
- キューがからの場合はタイムアウトまで待つ。
- デッドレターキュー
- 残ったメッセージを別キューに移動し、正常に処理できなかったメッセージを隔離できる。
- Visiblity timeout
- 新しいメッセージを指定時間を見えなくする。
ユースケース
1.SQS で時間がかかる処理をオフロードする
2.アプリケーション間の連携
SNS
AmazonSNSとは
- フルマネージド型のプッシュ型通知サービスで他のサービスとの非同期通信を可能にする。
- 送信側がトピックを作成して受信側をポリシー指定することで制御された非同期通信を実現
特徴
-
単一発行メッセージ
-
メッセージ通信順番は保証されない
-
取り消し不可能
-
配信ポリシーによる再試行を実施
-
最大256KBのメッセージサイズ
連携できるAWSリソース
SNSとSQSの違い
SNS
|
SQS
|
|
メッセージ永続性
|
ない
|
あり
|
配信方式
|
プッシュ型
|
ポーリング型
|
プロデューサー
|
発行
|
送受信
|
コンシューマ
|
サブスクライブ
|
送受信
|
SNS と SQS の違いについては、メッセージの永続性や配信方式での差がわかりやすいかと思います。
問題集でも一緒の選択肢として出てくることもあると思いますので、区別しておいた方が良いでしょう。
SES
SNSやSQSとは少し違ったSESも紹介しておきます。
特徴
- スケーラブルな構成で信頼性が高いマネージド型
- メール送信:トランザクションメールなどの高品質なコンテンツを顧客に送信可能
- メール受信:受信したメールをトリガーにS3やLambdaなどを起動可能
- バウンス処理:メールが送れなかった場合の処理を規定
利用準備
ドメイン登録とAWS上で利用できるメールとするための利用申請を事前にする必要がある。
- ドメインの登録
- メールの事前申請
おわりに
今回はサーバレスについて記述しました。
SQSのイメージは、送信処理と受信処理の間に中継所があり、受信側が好きな時に処理を中継所に取りに行くといったイメージでしょうか?
SNSは送信処理側が通知を投げているだけのイメージだと考えています。
皆さんも自分なりにイメージする手助けになればと思います。
ご覧いただきありがとうございました。