見出し画像

【AWS】信頼できるアプリケーション構成を考える為の知識 #4

1. マイクロサービス

・従来のアプリケーションは、モノシリックサービスと言われ、コンポーネント間が密結合。

・そのため、1箇所で障害が起きると全システムに影響が波及する

・対し、AWSはマイクロサービス *1) で構築できる。システムを"細かい機能"の単位で分割し、それぞれが独立したモジュールとして稼働する。

・一つに障害が起きても、影響が波及しにくくなる
→影響が軽微で済む
→フォールバック *2)*3) の考え方とマッチしているので、工夫して設計すれば、より耐障害性や機能性を高められる

2. Amazon Simple Notification Service (Amazon SNS) 

 2-A) Pub/Subとは?

・Pub/Subとは、「パブリッシャー」が Amazon SNS トピックを使用して、サブスクライバーに(ウェブサーバー、E メールアドレス、AWS Lambda 関数)通知を出す機能のこと。

・多種多様なSNSへの通知機能を一本化できる *4)

  2-B) Pub/Subとはサーバーレスアーキテクチャ

・サーバーレスとは、サーバーを用意しなくとも、クラウドに処理を登録することで適切なサーバーを割り当て実行するアーキテクチャ。

・利用者はサーバーのリソースを意識することなく、サービスをスタート・管理・運用することができます。

・代表的な思想として、FaaSがある
→Function as a Service …関数のコードを実装すれば、関数を実行する環境を提供するアーキテクチャ *4)

・使用例
→飲食店のニュースレターの会員への通知など

  2-C) LambdaとEC2の違い

EC2
・AWS上で仮想サーバーを構築するので、サーバーの構築、保守が発生する

Lambda
・既にAWS上に用意された環境上で、処理を記述(プログラミング)できるので、構築は不要。運用管理もAWSが自動で行ってくれる。

※ EC2とLambdaのメリット・デメリットは補完関係にあるので、それぞれのメリットだけ記述する

Lambdaを使うメリット

・サービスの立ち上げが楽
  →インフラやミドルウェアは既に用意済(DBやストレージ) *6)

・運用管理が楽
 →最適化や最新パッチの適用が自動でされる *6)

・関数実行回数に応じて課金されるので、小規模サービスではコスパ良い *6)

EC2を使うメリット

・ミドルウェアを自分で選定できるので、自由度高い *6)

・Lambdaは関数の実行時間に制限があるので、LambdaでできないことはEC2で行うようになる  *6)

3. Amazon Simple Queue Service (Amazon SQS)

・ソフトウェアコンポーネント間でメッセージを送信、保存、受信させるもの

・上記で触れたマイクロサービスの実現方法でプロトコルのようなもの *7)

・非同期通信が可能
  → プロデューサーとコンシューマーがデータの送受信のためにお互いと同期を取る必要が無い。
  → プロデューサーがキューに送信したメッセージを、コンシューマーが任意のタイミングで取得できるようになります。


リンク

*1) マイクロサービスについて(耐障害性、スピード)

2) フォールバック
https://www.ap-siken.com/kakomon/24_haru/q16.html

3)フォールバック用のロジックを使って対処。

4) Pub/Sub

5) サーバーレス
https://blog.qbist.co.jp/?p=2654

6) EC2とLambdaのメリット・デメリットにおける違い
https://www.users-digital.com/2021/03/10/system_serverles_architecture/

7) Amazon SQSでマイクロサービスを構築する
https://aws.amazon.com/jp/builders-flash/202105/awsgeek-sqs/?awsf.filter-name=*all




いいなと思ったら応援しよう!

この記事が参加している募集