この記事の目次
AWS Serverless Api
結論から言うとAWS Serverless ApiとはAWSを通じてServerless:でApi:を公開することです。
では、AWS Serverless Apiを詳しく言うとなんなのか、AWSとServerless:とApi:に分けて説明します。
AWSとは?
Amazon Web Servicesの略称で、Amazonが提供する100以上のサービスをクラウド上で行うことの総称です。
では、AWSのメリットとはなんでしょうか?
それを知るためにはまずクラウドコンピューティングへの理解が必要になります。
クラウドコンピューティングについて
従来の物理サーバーでは、まず機械を購入するための「初期投資」が必要となります。
また、機械を置く「スペース」が必要となります。
そして、機械が動くまでの「時間」が必要となります。
クラウドコンピューティングでは、サーバーが仮想となるため、これらの「初期投資」、「スペース」、「時間」を必要としません。
それを実現できるのがAWSなのです。
AWSでの代表的な4つのサービス
前述したとおり、AWSにおけるサービスは100以上ありますが、それぞれ実現できることが異なります。
そのAWSにおけるサービスの中でも代表的なサービスを4つ紹介します。
Amazon EC2
Amazon Elastic Compute Cloudの略称で、サイズを変更可能な仮想サーバーを提供するウェブサービスです。
クラウドの中でも最速の400Gbpsイーサネットでのネットワークを備えております。
画面上の操作だけで簡単に作成、利用が可能となっております。
出典:Amazon EC2セキュアでサイズ変更が可能なコンピューティング容量で、事実上すべてのワークロードをサポート|Amazon
参照:https://aws.amazon.com/jp/ec2/?ec2-whats-new.sort-by=item.additionalFields.postDateTime&ec2-whats-new.sort-order=desc
Amazon S3
Amazon Simple Storage Serviceの略称で、業界をリードするセキュリティを兼ね備えたオブジェクトストレージサービスです。
ウェブサイト、モバイルアプリケーションはもちろん、バックアップおよび復元のデータなどにも使われており、静的なコンテンツの配信が可能となっております。
出典:Amazon S3どこからでも簡単に、お好みの量のデータを保存したり取得できるオブジェクトストレージ|Amazon
参照:https://aws.amazon.com/jp/s3/
Amazon RDS
Amazon Relational Database Serviceの略称で、MySQLやPostgreSQLやOracleなどの主要なデータベースサービスです。
簡単な操作で作成でき、監視、バックアップも常に行います。
AWS Lambda
AWS Lambda はサーバーレスコンピューティングサービスです。
100以上の任意のプログラムを実行できる環境にするサービスです。
コードをZIPファイルなどでアップロードするだけで、実行能力を割り当て、コードを実行します。
Serverless:とは?
Serverless:とはいえ、どこにもサーバーが存在しないわけではありません。開発者にとってサーバーの保守などについて考える必要がなくなったことを意味します。
Serverless:という言葉は、AWS Lambdaが広く普及したことで注目を浴びるようになりました。今後もServerless:のサービスが増えていくと考えられます。
このようなServerless:のサービスは、後述するApi:サービスを利用するのに長けています。
Serverless:のメリット
Serverless:のメリットは、コードを実行することに特化しているので、開発速度が速くなり、企業の競争力に貢献することです。
また、Serverless:にすることにより、サーバー管理における人件費などを削減できます。
Api:とは?
Api:は、「Application Programming Interface」の略称で、アプリケーション同士を繋げることを表します。
Api:を公開するということは、アプリケーションにApi:という外部とやりとりする窓口を作り、外部アプリケーションと連携ができる状態にすることを指します。
Apiの例
Api:にもいくつもの種類がありますが、特に多いのがWebApi:です。
例えばAmazonやGoogleといったものがあります。
買い物をする場合などに、GoogleアカウントやAmazonアカウントを連携することで登録ができた、という経験はありませんか?
これは、別アプリケーションログイン機能により、ログイン認証ができるようになっています。
これがWebApi:の例です。
AWS Severless Apiにおけるコスト
Serverless:での運用では、どのくらいのコストがかかるのか検証してみます。
特にAmazon EC2とAWS Lambdaを使ったときの比較をしていきます。
API ゲートウェイコスト、データベースサービスコストについては、両方に等しく適用されます。
また、AWS側で値段や計算方法が変わったりすることがあります。
インフラストラクチャコスト
インフラストラクチャコストは実行コストとも言い、AWSでクラウドコンピューティングをするときのコストとなります。
これは月額ではありますが、最初にかかるコストと考えても良いでしょう。
Amazon EC2の場合
Amazon EC2環境のインフラストラクチャコストは、処理のために実際に動かしたサーバーの数と実体がアクティブな期間に基づいて計算します。
インフラストラクチャコストには関しては、AWS Lambdaに比べケースにも依りますが安いコストとなっています。
AWS Lambdaの場合
AWS Lambda環境のインフラストラクチャコストは、リクエストの数とリクエストの期間によって課金されます。つまり、実際の実行時間に基づいて計算します。
インフトストラクチャコストに関しては、Amazon EC2に比べケースにも依りますが若干高めのコストとなることが多いでしょう。
開発コスト
開発コストは達成コストとも言い、アプリケーション構築の前の計画に必要な時間と労力を意味する、本番運用の前に発生するコストです。
AWSのどのサービスを使えば、要件を満たせるのか考えます。
Amazon EC2の場合
AWSのどのサービスを使うかと、そのキャパシティーを設定します。十分に活用されていないキャパシティーを設定すると、必要以上の費用がかかるので注意が必要です。
また、計画に費やされた開発者の時間により、追加費用が発生します。
AWS Lambdaの場合
開発者はAWSのどのサービスを使うかと、そのキャパシティーをあまり堅実に計画をしなくても、アプリケーションの開発を開始できます。
そのため、時間が開発の開始までの時間が短縮され、その時間分の人件費などの節約をすることができます。
メンテナンスコスト
メンテナンスコストはサポートコストとも呼び、開発者がセキュリティの実装や新機能の追加などをする際にかかるコストのことです。
これは、アプリケーションが運用環境に移った後の継続的な作業に費やされる時間と資源を考慮に入れます。
Amazon EC2の場合
サービスチケットというものを開く必要があり、開発者は環境にパッチを適用する必要があります。
そのため、アプリケーションの監視、ログ記録、検証、およびテストに時間を費やしてしまいます。
これらが原因で開発の遅れにつながる可能性があります。
AWS Lambdaの場合
パッチ適用などがバックグラウンドで発生し、開発に影響を与えません。
そのため、開発者はメンテナンス作業のほとんどが不要となり、時間と資源を、ビジネスを生み出すための機能の開発に集中的に使うことができます。
総合でコストを考える
前述しました、インフトストラクチャコストと開発コスト、およびメンテナンスコストを総合的にみてAmazon EC2サービスかAWS Lambdaサービスかを考える必要があります。
全体的なコストのことを総所有コスト (TCO)と言い、3つのコスト要素すべてを包括的に比較する必要があります。
AWS Serverless Apiのまとめ
AWSServerlessApiは、Amazonが提供するServerless:のクラウドコンピューティングサービスにおいて、アプリケーション同士を繋げる窓口を作り、外部アプリケーションとの連携を行うことです。
経費はインフトストラクチャコストと開発コスト、およびメンテナンスコストを総合的にみた、TOCで考えることが大事になります。