AWS学習履歴の趣旨
AWSでデプロイをしたことはあるものの、AWSの理解に足りない部分があるのが悔しいと思い、UdemyのAWS講座で勉強を開始しました。
以下の記事の続きです。
学習内容を全て残すことは量が莫大になるので無理ですが、『重要かな?と思った部分を記録として残そう!』というのが趣旨です。
更新頻度は不定期ですが、地道に続けていこうかと思います。
応援よろしくお願いします。
サーバレス
コンポーネント間の相互依存を減らした構成とすることで、一つのコンポーネント変更や障害の影響を削減できます。
AWSでの主要サービスは、ELB、Lambda、SQS、SNSです。
サーバレスにすることで、耐障害性の強化や、負荷対応・スケーリングの容易化、システム構成の追加・変更の容易化につながります。
SQS
Amazon Simple Queue Serviceの略称です。
プロセス間通信などのスレッド間通信に使われるコンポーネントです。制御やデータを伝達するポーリング型のキューサービスです。
ポーリングとは、複数のプログラム間通信に対して、一定のタイミングの問い合わせがあった場合に、送受信処理を行う通信方式のことです。中継地点に通信内容をためておいて、受信側のタイミングがいいときに通信を行うことで、受信処理中でも送信処理が滞らなくなります。
SQSはこの中継地点に当たるサービスです。キューを溜め込んでポーリング処理を実施します。つまり、送信された内容をキューとして保持し、受信側が通信内容を問い合わせ、キューがあった場合にデータを伝達します。送受信の双方向通信です。
基本的には256KBまでの軽いデータしか利用できません。メッセージは60秒から14日間保持することができます。
SNS
Amazon Simple Notification Serviceの略称です。
プッシュ型(通信を仲介するだけでメッセージは非永続的、一方通行)通知サービスで、他のサービスとの非同期通信を可能にします。
送信側がトピックを作成して、受信側をポリシーで指定することで、SNSを介して制御された非同期通信を可能にします。
SES
Amazon Simple Email Serviceの略称です。
Eメールサービスです。(Eメールの配信に特化)
単なるメールサーバーとして利用するだけでなく、アプリから自動でメール送信やメール通知を利用してSNSやS3などとの連携処理に利用可能です。
サーバレス化によるサービス化
サーバレス化とは、サーバー(EC2インスタンス)ではなく、Lambdaなどのコンピュートサービスによるシステム構成をできる限り利用することです。
Lambdaを利用してシステムを疎結合化するのがアーキテクチャの基本です。
サーバレス化することで、疎結合化が進み、疎結合化によってマイクロサービス化されたアプリケーションの構築ができます。
マイクロサービスとは、より小さなプロセス単位(機能単位)のサービスをAPIで連携することです。
疎結合化が進むからこそ、マイクロサービス化(機能単位でサービスを分割できる)が進み、マイクロサービス化が進むことでさらに疎結合化が進みます。
Lambda
サーバーを設置せず、コードだけをデプロイ・実行できるデータ処理サービスです。
Lambdaファンクションというコードを用意して、アプリからLambdaを呼び出すだけで実行できる単純なものです。
イベントドリブンなアプリケーションが可能で、イベント発生後に数ミリ秒以内にLambdaコードが実行されます。
コードを一から作成することもできますが、ブループリントというサンプルコードがあるので、利用するユースケースからサンプルコードを選び、その修正をすることでコーディングの効率化も可能です。