アジアクエスト クラウドインテグレーション部の須藤匠です。
この記事では、各クラウドサービスにおけるサーバーレスについてご紹介します。
この記事を読むことで、サーバーレスのメリット・デメリット、各種○aaSの違い、各クラウドサービスのサーバーレスの特徴を知ることができます。
使用するサービスを検討する際に最適なものを選択する一助となれば幸いです。
サーバーレスとは「サーバーが無い」という意味になりますが、普段使っているwebサイトやプログラムを実行するためにはサーバーが必要なはずです。
しかし、サーバーが無いのであれば何とやりとりしているのでしょうか?
実際にはサーバーレスといってもサーバーが存在しないわけではなく、サーバーの管理・運用を開発側ではなくサービス事業者側が担うということを意味しています。
サーバーレスとは:
サーバーの構築、バグ対応や脆弱性対策などの運用にかかるコストや手間を省けます。
サーバーレスを導入することで、アプリケーションの開発に注力しやすくなります。
サーバーレスは、利用した時間もしくはプログラムの実行回数に応じた課金体系のため、実行しなければ料金は発生しません。
使った分だけ課金されるため、コスト削減を狙うことができます。
例えばEC2などの場合、サーバーの利用契約を1年単位で結ぶと、使用しなくても1年間は料金が発生してしまいます。
サーバーレスは、実際のデータ量などに応じて自動的にリソースの性能をアップ・ダウンしてくれる「オートスケール機能」でコストを抑えながら、常に最適なリソースで処理を実行できます。
一般的にシステムを構築する場合、処理に必要となるCPUやデータ量などをもとに計算し、あらかじめ必要なリソースを見積もらなければなりません。
性能が不足した場合は処理が滞るリスクもあり、高い利用料を払って高性能なリソースを用意しても結局使用しなかったというケースもあると思います。
サーバーレスのサービスでは、クラウドベンダ側が可用性を考慮した構成を提供しています。
そのために、サービスそのものを利用できなくなるリスクが低く、安定した稼働が可能です。
サーバーレスは、実行対象の機能以外は全てクラウドベンダ側のリソースを活用するため、万が一クラウド側で障害が発生した場合は大きな影響を被ります。
クラウドは信頼性が高いという特長を有しており、いずれのサービスも100%に近い稼働率を誇っています。
ただし、規模の差はあれど各クラウドベンダが提供するクラウドサービスも障害自体は発生しています。
直近では、大きな障害がAWSの2023年6月14日バージニアリージョンで発生しました。
Lambdaが原因で合計104のサービスに障害が発生した事例です。
このAWSの障害により、家電をスマートフォンから操作するIoT系やニューヨーク州都市交通局(MTA)がウェブサイトとアプリで運行状況を利用できない状況になったそうです。
リクエストを受けてからサーバーを起動するため、レスポンスタイムが少し遅くなります。
即応性が必要なシステムを構築する場合には、サーバーレスサービスとの相性は良くありません。
サーバー導入コストがかからないので、新規サービスの開発に気軽に挑戦できます。
サーバーレスは処理に使えるメモリや時間に制約がある場合が多いため、データ処理に多くのメモリや時間を必要としないシンプルな作業に適しています。
ネットワーク経由でサーバーに接続するサーバーレスでは、イベント発生から処理が実行されるまで、最大で数秒程度の遅延が発生する可能性があります。
遅延が発生すると問題があるシステムでは通常サーバーの方を検討しましょう。
『〇aaS(〇〇 as a Service)』という言葉を聞いたことがあるかもしれません。ひとことで言えば、これらは「クラウドサービスを利用形態で分類したもの」です。
様々な種類があるのですが、今回は以下3種類を紹介します。
IaaSの特徴は、自社で機材を購入・構築する必要があった情報システムをインターネット上でサービス・アプリ開発に必要な環境をすぐに利用できることです。 またIaaSでは、利用する環境のスペックやOSをユーザーが自由に選定して構築することができます。
代表的なサービス:AWS EC2、GCP Google Compute Engine、Azure Virtual Machines
PaaSの特徴は、アプリの開発環境がプラットフォーム化されているため、サービス開発に集中しやすくなることです。
IaaSよりも自由度やカスタマイズ性は劣りますが、その分インフラの設計や、保守・管理を気にすることなくサービス開発に注力できます。
代表的なサービス:AWS Elastic Beanstalk、GCP Google App Engine、Azure App Service、kintone
余談ですが、弊社アジアクエストのインドネシア海外支部がCYBOZU AWARDにて海外市場におけるサイボウズ製品(kintone)の販売、導入活動で実績を残したパートナーに贈られるグローバル賞を受賞しました。
プレスリリース:アジアクエストがサイボウズアワードにてグローバル賞を受賞
FaaSは主に「サーバーレスコンピューティング」のことを指します。
ソフトウェアやミドルウェア、プログラミング言語の実行環境が準備されており、開発者はコードをアップロードするだけで即座にプログラムを実行できます。
サーバーのメンテナンス・ソフトウェアアップデートなどもクラウド事業者側が行うため、ユーザーはサーバーの運用や保守に労力をかけず、プログラム開発に集中できます。
代表的なサービス:AWS Lambda、GCP Google Cloud Functions、Azure Functions
現実の貨物のコンテナと同様に、ITの世界の「コンテナ」も中にアプリケーションやWebサイトを乗せたまま自由に場所を移動でき、オンプレミスやクラウドなどの環境を問わずに実行することができます。
AWS Fargate
Azure Container Instances(ACI)
Google Cloud Run
性能・コスト比較
AWS | Azure | Google Cloud | |
---|---|---|---|
サービス名 | AWS Fargate | Azure Container Instances | Google Cloud Run |
CPU料金(VCPU/h) ※2024年10月時点 |
$0.05056 | $0.04660 | $0.0648 ※毎月無料利用枠あり |
メモリ料金(GB/h) ※2024年10月時点 |
$0.00553 | $0.00511 | $0.0072 ※毎月無料利用枠あり |
最大CPU | 16vCPU | 8vCPU | 8vCPU |
最大メモリ | 120GB | 32GB | 32GB |
可用性 | 99.99% ※年間約53分停止 |
99.90% ※年間約525分停止(約8.76時間) |
99.95% ※年間約262分停止(約4.38時間) |
現実世界では、何かの出来事が起こると、それに対して反応があります。システムでも同じように、出来事や通知を受け取ったら、それに応じた処理を行う仕組みを作ります。
AWS Lambda
Azure Functions
Google Cloud Functions
各クラウドにおけるFaaSの性能コスト比較
AWS | Azure | GoogleCloud | |
---|---|---|---|
サービス名 | AWS Lambda | Azure Functions | Google Cloud Functions |
対応言語 | Java, Go, PowerShell, Node.js, C#, Python, Ruby | C#, Java, JavaScript, TypeScript, PowerShell, Python | Node.js, Python, Go, Java, NET, Ruby, PHP |
OS | Amazon Linux | Linux | Linux |
最大実行時間 | 900秒 | 従量課金プラン:600秒 Premiumプラン:無制限 |
540秒 |
100万リクエストあたりの料金(東京リージョン) | 0.20USD ※2024年10月時点 |
0.20USD ※2024年10月時点 |
0.40USD ※2024年10月時点 |
無料枠 | 毎月40万GB/秒、100リクエスト | 初回40万GB/秒、100万リクエスト | 毎月40万GB/秒、20万GHz/秒、200万リクエスト |