blog.seike460.com

Serverless three tier architectures

2020/01/02  Serverless  AWS 

AWS サーバーレス 多層アーキテクチャを元に、WEBアプリケーションエンジニアの目線で
AWSにおけるサーバーレス3層アーキテクチャについて纏めます。

3層アプリケーション

プレゼンテーション層、ロジック層、データ層で構成されるアプリケーションです。

  • プレゼンテーション層

    • ユーザーへからの入力、ユーザーへの出力等のインターフェイスを受け持つ
  • ロジック層

    • 入力を元に、アプリケーション動作の制御を受け持つ
  • データ層

    • ロジック層からの要求に応じてデータの保存、変更、削除、参照を受け持つ

この3層アプリケーションをサーバーレスにて実現します。

プレゼンテーション層

ユーザーインターフェイスを提供する様々なクライアントが想定できます。

  • ウェブサイトの静的コンテンツ

    • Amazon S3 や Amazon CloudFront 等で配信される静的コンテンツ
  • モバイルアプリケーション

    • ユーザーデバイスにインストール済のモバイルアプリケーション
  • クライアントデバイス

WEBアプリケーションエンジニアの目線ではウェブサイトの静的コンテンツから
インターフェイスを提供する事が一般的では無いかと思います。

Amazon S3、Amazon CloudFrontが配信した静的コンテンツから、
ロジック層へのエンドポイントへ接続するのをイメージです。

ロジック層

プレゼンテーション層から渡される入力を受け取り、入力に応じた処理を行います。
Amazon API Gateway と AWS Lambda を統合することで実現する事が多いです。

Application Load Balancer と AWS Lambda でも実行することは可能です。
それぞれの違いがあるため、基本的にはユースケースに応じて選択をすることになります。

こちらに関しては有用な記事がありました。
参考:AWS Lambda:API GatewayとApplication Load Balancerの違い

特に厳しい要件が無ければ、Amazon API Gatewayを利用する事が良いように個人的には思えます。

Application Load BalancerやAmazon API Gatewayが入力を受け取り、
AWS Lambdaが処理するのがロジック層の役割となります。

データ層

ロジック層からの様々なデータストアが選択出来ます。

ロジック層の中核を担うAWS Lambdaから利用するデータストアは
Amazon VPCにAWS Lambdaを展開するか否かで接続出来るデータストアが変わります。

VPCに展開する場合

  • Amazon RDS
  • Amazon ElastiCache
  • Amazon Redshift
  • Amazon EC2

VPCに展開しない場合

  • Amazon DynamoDB
  • Amazon S3
  • Amazon Elasticsearch Service

AWS Lambdaから様々なデータストアを利用してロジックを作成し、
サーバーレスなシステムを構築出来ます。

次回はこれらの3層を実際にサンプルアプリケーションとして構築してみようと思います。


@seike460
Written by @seike460
TechSlides
TagsList