未経験からのフルスタックエンジニア

スキルをつけよう!未経験からフリーランスエンジニアへの成長記録

AWS 学習履歴(9)~サーバレス・SQS・SNS・SES・Lambda~

AWS学習履歴の趣旨

AWSでデプロイをしたことはあるものの、AWSの理解に足りない部分があるのが悔しいと思い、UdemyのAWS講座で勉強を開始しました。

以下の記事の続きです。

atora1992.hatenablog.com

学習内容を全て残すことは量が莫大になるので無理ですが、『重要かな?と思った部分を記録として残そう!』というのが趣旨です。

更新頻度は不定期ですが、地道に続けていこうかと思います。

応援よろしくお願いします。

サーバレス

サーバレスにすることでコンポーネント疎結合化する。

コンポーネント間の相互依存を減らした構成とすることで、一つのコンポーネント変更や障害の影響を削減できます。

AWSでの主要サービスは、ELBLambdaSQSSNSです。

サーバレスにすることで、耐障害性の強化や、負荷対応・スケーリングの容易化、システム構成の追加・変更の容易化につながります。

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コードが実行されます。

コードを一から作成することもできますが、ブループリントというサンプルコードがあるので、利用するユースケースからサンプルコードを選び、その修正をすることでコーディングの効率化も可能です。