BLOG

コストの削減、ユーザー、開発者の利便性。AWSレガシーとAWSサーバーレスアーキテクチャで優位性があるのはどっち?

on 20/07/03 7:30
サーバーレスアーキテクチャでは、サードパーティ製の「Backend as a Service」(BaaS)サービスが組み込まれており、「Functions as a Service」(FaaS)プラットフォーム上のマネージドドッカーコンテナで実行されるカスタムコードが含まれています。このアーキテクチャを使用することで、従来の常時稼働型のサーバーコンポーネントの必要性をなくすことができます。サーバーレス・アーキテクチャは、運用コスト、複雑性、エンジニアリングのリードタイムとメンテナンスタイムを大幅に削減できるというメリットがありますが、その一方で、ベンダーへの依存度が高まり、サポートサービスが比較的未熟であることが問題となります。サーバーレスは、クラウド・プロバイダーがサーバーの割り当てとプロビジョニングを動的に管理するクラウド・コンピューティングの実行モデルです。

English below Japanese

ほとんどのクラウドプロバイダーは、サーバーレスコードベースを統合する手段を提供しています。

ここでは、AWSのサーバーレスモードに焦点を当て、どのように実現できるのか、どのようなメリットがあるのかを紹介します。

 

 

レガシーサーバーアプリ

 

1) ELB - 弾力性のあるロードバランサーを作成します。設定します。このELBは常にオンになります。そのコストは、大規模なEC2マシンのインスタンスと同じです。

 

2) EC2 - サーバーアプリケーションとウェブサイトをホストするインスタンスを作成します。あなたが一度にアプリケーションを使用すると予想されるクライアントの数に対応するために、十分に高い数のインスタンスを保持します。これらのインスタンスにWebサーバとアプリケーションをインストールします。これらのインスタンスは常にオンになります。アプリケーションのランニングコストに大きく貢献する

 

3) データベース - データベースをホストする別のEC2インスタンスを保持します。メモリとディスクの使用量を処理します。バックアップとリストアを作成します。

データ用のスクリプトを使用します。これらはすべて、追加のコストとオーバーヘッドを追加します。通常のRDBMSは水平方向にはスケールしない。クラスタを作成することはできません。

 

4) 自動スケーリンググループ - アプリケーション用の自動スケーリンググループを作成する。これは、いくつかのインスタンスがCPUとメモリを使い果たした場合にインスタンスを管理し、アプリケーションのクラスタサイズを動的に増減させます。自動スケーリンググループを管理し、その活動を追跡することは、通常、レガシーシステムが負担する大きなオーバーヘッドです。

 

5)監視とメンテナンス - レガシーシステムのすべてのコンポーネント(ELB、EC2、ASG、データベース)は、スクリプトを使用して一定の監視とメンテナンスチェックを必要とします。監視とメンテナンスのインフラストラクチャを作成すること自体が、多くのリソースを消費し、アプリケーション開発者をコアアプリケーションロジックに集中することから遠ざけるタスクです。

 

 

 

サーバーレスアプリ

 

AWS上でのサーバーレスアプリケーションはこのようになっています。

以下はその主要なコンポーネントです。

 

1. クライアントアプリケーション - アプリケーションのUIは、Modern Frontend Javascript Appでクライアント側にレンダリングされ、シンプルで静的なWebサーバーを使用することができます。これはAWS S3上でCloudfrontを使ってホストされます。

 

2. Webサーバー - Amazon S3は、堅牢でシンプルなWebサーバーを提供します。私たちのアプリケーションのための静的なHTML、CSS、JSファイルはすべてS3から提供することができます。Next.js/React.jsはコンパイルしてS3にアップロードします。

 

3. Amazon CloudFront - 静的なWebコンテンツと動的なWebコンテンツの配信を高速化するWebサービスです。クラウドフロントは、エッジロケーションと呼ばれる世界中のデータセンターのネットワークを介してコンテンツを配信しています。ユーザーがCloudFrontで提供しているコンテンツをリクエストすると、ユーザーは、レイテンシー(時間的な遅延)が最も低いエッジロケーションにルーティングされるため、最高のパフォーマンスでコンテンツを配信することができます。

 

4. APIゲートウェイ - すべてのクライアントのシングルエントリーポイントとなるAPIゲートウェイを実装する。API ゲートウェイは、2 つの方法のいずれかでリクエストを処理します。いくつかのリクエストは、単に適切なサービスにプロキシされたりルーティングされたりする。他のリクエストは、複数のサービスへのファニングアウトによって処理します。アプリケーションによって提供されるすべての Rest エンドポイントは、API ゲートウェイによって提供されます。これはLambda Custom AuthorizersやAWS Cognitoを使ったリクエストの適切な認証と承認を提供します。APIゲートウェイは、コスト面で大きなメリットがあります。

リクエストに対応するためのロードバランサーを維持するための要件です。これらは常に”オン”で、完全に管理され、負荷分散された Rest APIs です。

 

5. Lambda functions (FaaS) - サーバーレスアーキテクチャの重要なキーです。FaaSの代表的な例としては、AWS Lambda、Google Cloud Functions、Microsoft Azure Functionsなどがあります。このフレームワークではAWS Lambdaが使われている。ログインやデータへのアクセスを行うアプリケーションサービスは、Lambda関数として構築されます。これらの関数はデータベースから読み書きし、JSONレスポンスを提供します。これが提供する利点は、AWS上のEC2インスタンスのように常に稼働中であるわけではないことです 。Lambdaは、クライアントからのリクエストが来たときにトリガーされ、実行されます。

 

6. セキュリティトークンサービス(STS) - アプリケーションのユーザーのために一時的にAWSの認証情報(APIキーとシークレットキー)を生成します。これらの一時的なクレデンシャルは、クライアントアプリケーションがAWS APIを呼び出すために(Lambdaを呼び出すために)使用されます。

 

7. ユーザー認証 - AWS CognitoはAWS Lambdaと統合されたアイデンティフィケ―ションサービスです。Amazon Cognitoを使えば、モバイルアプリやWebアプリにユーザーのサインアップやサインインを簡単に追加することができます。また、FacebookやTwitter、Amazonなどのソーシャルアイデンティティプロバイダを介して、SAMLアイデンティティソリューションを利用してユーザーを認証したり、独自のアイデンティティシステムを利用してユーザーを認証したりするオプションもあります。

 

8.データベース - AWS DynamoDB/ Amazon RDS(MySQL,Postgresなど)は、完全に管理されたNoSQLとリレーショナルデータベースのインフラストラクチャを提供します。クラスタ化、スケーリング、バックアップ、設定による安全性の確保が可能です。

 

Laptops against globe blue illustration. Globalization concepts

レガシーサーバーアーキテクチャと比較したサーバーレスアーキテクチャの主な利点

 

ビジネスの視点から

1. コスト面 : サーバーレスアプリケーションで発生するコストは、機能の実行回数に応じて、時間ではなくミリ秒単位で計測されます。再帰的にコストが加算されるELBやマシンを常時稼働させる必要がありません。サーバーレスアプリケーションの運用コストは安価であることが期待できます。

 

2. プロセスの俊敏性:展開可能なユニットが小さいため、市場への機能の迅速な提供が可能となり、変化への適応能力が向上します。このようなアプリケーションでは、ダウンタイムなしで変更を適応することができます。

3.メンテナンスコスト: バックエンドインフラストラクチャエンジニアの雇用コストが下がります。最小限のメンテナンスが必要であり、アプリケーションは必要とされるメンテナンス活動なしで何年も実行し続けることができます。

 

4. 運用コストの削減 サーバーレスアプリケーションの運用コストは、通常のレガシーサーバーベースのアプリケーションの5分の1程度に抑えることができます。

 

開発者の視点から

1. 開発者の責任が軽減され、開発者はバックエンドインフラストラクチャの実装と改善に専念することができます。開発者は、アプリケーションロジックの実装と改善に専念できます。

2. 管理:システム管理の必要がありません。

3. 運用:運用管理が容易になります。

4. 容易なマイクロサービス : - ナノサービス、マイクロサービス、SOA原則の導入が容易。

5. セットアップ : - 迅速なセットアップが可能です。

6. 拡張性 : - 同時リクエスト数を気にする必要がない。

7. 監視 : - クラウドプロバイダーが提供する監視機能をすぐに利用できます。

 

 

ユーザーの視点から

 

1. アプリケーションがその競争力を利用して機能をより速く出荷している場合、顧客は以前よりも早く新機能を受け取ることができます。

2. ユーザーが独自のストレージバックエンド(例:Dropbox、Google Drive)をより簡単に提供できるようになる可能性があります。

3. この種のアプリはクライアント側のキャッシングを提供する可能性が高く、オフラインでの体験を向上させることができます。

 

まとめ

サーバーレスアーキテクチャは、確かにはるかにエキサイティングで、信頼性が高く、実装やアップグレードが簡単で、スケーラブルでコストを節約できるアーキテクチャです。それは事実上の制限がありません。採用するのは非常に簡単です。

ビジネス担当者はビジネスに集中でき、開発者はアプリケーションのコードと機能に集中できます。

 

S3はファイルへの高速アクセスのためのリージョン単位のキャッシングを提供出来ます。

  • Cognito - API上のセキュリティ、認証、認証。
  • API Gateway - APIパス
  • Lambda - PHP関数
  • RDS/Dynamo - セキュリティ、バックアップ、ロールバックなどのデータベース
  • Cloudwatch - ログ
  • STS - トークン

 

サーバーレスアーキテクチャはどのようなアプリケーションにも簡単に統合可能で、作成、テスト、保守が非常に簡単です。

NADJAでは優秀なエンジニアとインド、フィリピン、パキスタンの拠点で開発をすることが可能です。

クラウド化であれば是非NADJAにお任せください。

アプリ、ウェブの開発に関して聞いてみたい!

 

 

AWS Legacy Vs AWS Serverless Architecture

 

 

Serverless architectures incorporate third-party “Backend as a Service” (BaaS) services that include custom code run in managed docker containers on a “Functions as a Service” (FaaS) platform. By using this architecture we can remove the need for a traditional always-on server​ component. Serverless architectures benefit from ​significantly reduced operational cost, complexity, and engineering lead and maintenance time, at a cost of increased reliance on vendor dependencies​ and comparatively immature supporting services. Serverless is a cloud computing execution model where the cloud provider dynamically manages the allocation and provisioning of servers

 

Most of the cloud providers provide means to integrate a serverless code base.

 

 

 

We will focus on the AWS Serverless mode, how it can be achieved and what benefits it can provide.

 

The legacy server app

 

1) ELB -​ Create an elastic load balancer. Configure it. This ELB will be always on. Its cost is equal to a large EC2 machine instance.

 

2) EC2 -​ Create instances that will host our server applications and our website. Keep a sufficiently high number of instances to cater to the number of clients you expect to use the application at a time. Install your web server and applications on these instances. These instances will be always on. Contribute to a lot of running cost of an application

 

3) Database - ​Keep a separate EC2 instance that hosts the database. Handle memory and disk usage. Keep extra disk space as it may get full. Create backup and restore

scripts for data. All this adds additional cost and overhead. Normal RDBMS do not scale horizontally. Not possible to create a cluster.

 

4) Auto Scaling Group -​ Create an auto-scaling group for your applications. This will manage the instances in case some instances go out of CPU and memory, it will dynamically increase and decrease the application cluster size. Managing an auto-scaling group and tracking its activities, costs are normally a big overhead that legacy systems bear.

 

5) Monitoring and Maintenance - ​All components in the legacy system (ELB, EC2, ASG, Database) need constant monitoring and maintenance checks with scripts. Creating a monitoring and maintenance infrastructure is in itself a task that consumes a lot of resources and moves application developers away from focussing on the core application logic.

 

The serverless app

 

This is how a serverless application looks like on AWS.

 

Following are its key components:-

 

1. Client Application ​— The UI of your application is rendered client-side in Modern Frontend Javascript App which allows us to use a simple, static web server. This can be hosted on AWS S3 with Cloudfront

 

2. Web Server​ — Amazon S3 provides a robust and simple web server. All of the static HTML, CSS, and JS files for our application can be served from S3. Next.js/React.js will compile and upload to S3.

 

3. Amazon CloudFront​ - is a web service that speeds up distribution of your static and dynamic web content. This is the user’s interface where the site DNS A-name and/or C-name records are pointed.CloudFront delivers content through a worldwide network of data centers called edge locations. When a user requests content that you're serving with CloudFront, the user is routed to the edge location that provides the lowest latency (time delay), so that content is delivered with the best possible performance.

 

4. API Gateway​ - Implement an API gateway that is the single entry point for all clients. The API gateway handles requests in one of two ways. Some requests are simply proxied/routed to the appropriate service. It handles other requests by fanning out to multiple services. All Rest endpoints to be served by the application are served by API gateway. It provides for proper authentication and authorization of requests with Lambda Custom Authorizers or AWS Cognito. API Gateways provide a major advantage in cost as they remove the

requirement for keeping a load balancer to serve requests. These are always on, completely managed, and load-balanced Rest APIs.

 

5. Lambda functions (FaaS)​ — They are the key enablers in Serverless architecture. Some popular examples of FaaS are AWS Lambda, Google Cloud Functions and Microsoft Azure Functions. AWS Lambda is used in this framework. The application services for logging in and accessing data will be built as Lambda functions. These functions will read and write from your database and provide JSON responses. The benefits this provides is these are not always on services (like an EC2 instance on AWS). These are triggered and removed as and when client requests come.

 

6. Security Token Service (STS)​ — generates temporary AWS credentials (API key and secret key) for users of the application. These temporary credentials are used by the client application to invoke the AWS API (and thus invoke Lambda).

 

7. User Authentication​ — AWS Cognito is an identity service which is integrated with AWS Lambda. With Amazon Cognito, you can easily add user sign-up and sign-in to your mobile and web apps. It also has the option to authenticate users through social identity providers such as Facebook, Twitter, or Amazon, with SAML identity solutions, or using your own identity system.

 

8. Database ​— AWS DynamoDB/ Amazon RDS (MySQL,Postgres etc) provides a fully managed NoSQL and relational database infrastructure. They can be clustered, scaled, backed up and secured with configuration.

 

 

Key Benefits of Serverless Architecture over a Legacy Server Architecture

 

From a business perspective

1. Cost:​ The cost incurred by a serverless application is based on the number of function executions, measured in milliseconds instead of hours. No need to keep always on ELBs and machines that add up to the cost recursively. Operating costs of serverless applications are considerably low.

 

2. Process agility:​ Smaller deployable units result in faster delivery of features to the market, increasing the ability to adapt to change. Changes can be rolled out with no downtime with such applications.

 

3. Maintenance Cost:​ Cost of hiring backend infrastructure engineers goes down. Minimal maintenance is required and the applications can keep running for years without any maintenance activity being required.

 

4. Reduced operational costs​ Operating costs for serverless applications can be al low as one-fifth of the normal legacy server-based applications.

 

 

From a developer perspective

1. Reduced liability​, no backend infrastructure to be responsible for developers. They can focus on implementing and improving the application logic.

2. Administration​ : No system administration required.

3. Operation​ : Eases out operational management.

4. Easy Microservices​ :- Easy to adopt Nanoservices, Microservices, SOA Principles.

5. Set up​ :- Fast set up.

6. Scalable ​- No need to worry about the number of concurrent requests.

7. Monitoring​ :- Monitoring provided out of the box by cloud providers.

 

 

From a user perspective

 

1. If applications are using that competitive edge to ship features faster, then customers are receiving new features quicker than before.

 

2. It is possible that users can more easily provide their own storage backend(i.e Dropbox, Google Drive).

 

3. It’s more likely that these kinds of apps may offer client-side caching, which provides a better offline experience.

Summary

Serverless architecture is certainly far exciting, reliable, easy to implement and upgrade, scalable and cost-saving architecture. It has virtually no limitations. Very easy to adopt. Allows businesses to focus on business and developers to focus on application code and functionality. With the power of S3 - for frontend files Cloudfront - provide region-wise caching for faster access to files Cognito - Security, authentication and authorization on API. API Gateway - API Paths Lambda - PHP functions RDS/Dynamo - Database with security, backup, rollback etc Cloudwatch - logs STS - Token

 

 

It is easily integrable in any application and very easy to create, test and maintain

 

We highly recommend using serverless architecture in the Apaman Networks Application.

マニッシュ・コードハリー
Posted by マニッシュ・コードハリー

クラウドサーバーのスペシャリスト。プロジェクトマネージメントも。 フロントエンドの開発は本人曰く「プロ」しかしやらせないほうがいいのはチーム内での共通認識。 何かとうさんくさいけど技術は信頼できる。 割とムードメーカー。 インド在住

Topics: ソフトウェア開発, エンジニア