- IT・トレンド記事
FaaSとは. 意味や主要サービスを5分でわかりやすく解説
こんにちは、クラウドエース編集部です。
アプリ開発の現場において最近よく耳にする「 FaaS 」という言葉。ひとことで言えば、「サーバーレスでアプリ開発ができるサービス」です。これだけ聞いても、いまいちピンとこないという人も多いですよね。
この記事では、FaaS の具体的な内容について、IaaS や PaaS、SaaS などと比較しながら解説し、FaaS のメリットやデメリット、代表的なサービスまで紹介していきます。
目次
FaaS( Function as a Service )とは
FaaS とは「 Function as a Service 」の略称で、アプリケーション開発などに必要な関数をクラウド上のサーバーで利用するサービスのことで、「ファース」と読みます。
指定したイベントをトリガーとして関数を実行するイベントドリブン方式のサービスであり、プログラムのコードを書いて連携するだけで処理されます。また、各アプリケーションの実行に必要なサーバーを自動で振り分けてくれ、スケーラビリティに優れることも特徴です。
サーバーの存在を意識することなく開発ができるサービスであることから、「サーバーレス」と呼ばれることもあります。
FaaS が登場する前は、システムのバックエンド機能をアプリケーションサーバーが代行するクラウドサービスとして「 BaaS( = Backend as a Service )」や「 MBaaS( = Mobile Backend-as-a-Service )」が利用されることが主流でした。
しかし、Amazon が 2014 年に「 AWS Lambda 」というサービスを発表しました。BaaS や MBaaS は、クラウドが提供する機能のみが利用可能であったのに対して、AWS Lambda では任意のプログラムコードを実行できるサーバーを提供します。これが FaaSの始まりであり、近年では各クラウド事業者が同様のサービスを提供するようになっています。
FaaS と似た言葉に「 IaaS 」「 PaaS 」「 CaaS 」「 SaaS 」などがあります。これらは、全てクラウド上で提供されるサービスですが、提供される機能の範囲が異なります。それぞれのサービスの違いについて見てみましょう。
IaaS との違い
IaaS とは「 Infrastructure as a Service 」の略称で、情報システムの稼働に必要な OS、仮想マシン、ネットワーク、機器などをクラウド上で提供するサービスです。
サーバーを利用する際に必要なハードウェアのスペックや OS、CPU 、ストレージなどをユーザーが任意に選択でき、環境構築の自由度が高いことが特徴です。ただし、自由度が高い分、構築や運用の負荷も他のサービスに比べて高いと言えます。
PaaS との違い
PaaS とは「 Platform as a Service 」の略称で、アプリケーションを開発・実行するためのプラットフォームをクラウド上で提供するサービスです。
アプリケーション開発に必要な OS、ミドルウェア、データベースなどが全て揃っているため、インフラ構築や運用の必要なく開発に集中できることが特徴です。ただし、開発環境がパッケージングして提供されるため、カスタマイズ性は高くありません。
CaaS との違い
CaaS とは「 Container as a Service 」の略称で、OS 上のアプリケーションの動作環境を仮想化して区切る「コンテナ技術」をクラウド上で提供するサービスです。
具体的には、コンテナのデプロイ・稼働やクラスタの管理、スケーリングや障害対応の自動化、インフラストラクチャレイヤーの共通化などを行い、アプリケーションの携帯性を高めるという特徴があります。
ただし、環境に依存せず利用できるアプリを開発できるようになる一方で、開発者が管理すべき項目も増えるでしょう。
SaaS との違い
SaaS は「 Software as a Service 」の略称で、これまでパッケージとして購入、インストールして利用する必要があったソフトウェアをクラウド上で提供するサービスです。
インターネット環境さえあれば、クラウド事業者が提供するさまざまなアプリケーションをいつでも、どのデバイスからでもアクセスできることが特徴です。管理やアップデートもクラウド事業者が行うため、運用の負担もありません。
ただし、原則としてサービスのカスタマイズや、サービス同士での連携はできません。
FaaS のメリット・デメリット
ここまで、FaaS の概要や他のサービスとの違いについて紹介してきました。ここからは、より具体的な FaaS の利用メリットについて解説していきます。
FaaS のメリット
FaaS のメリットは、主に以下の 3 つです。
- 従量課金制でコスト削減しやすい
- インフラ管理が不要で開発に集中できる
- 拡張性が高い
1 つ目は、従量課金制の料金体系であり、使った分に応じて請求金額が決まるため、コスト最適化しやすいことです。常に稼働してインスタンスの維持の必要がある IaaS や PaaS とは異なり、FaaS は処理の実行中のみサーバーを利用するため、待機時間が短く料金を抑えやすくなります。
2 つ目は、インフラ管理が不要で開発に集中できることです。FaaS ではサーバーのメンテナンスやアップデートなどもクラウド事業者が管理します。自社でサーバーを管理・運用する必要がなくなり、エンジニアはコードをデプロイするだけで良くなるということです。開発者の負荷が大幅に下がるため、迅速なアプリケーション開発に繋げられるでしょう。
3 つ目は、拡張性が高いことです。FaaS では、サーバーの管理が不要であるだけでなく、自動でコードを実行するサーバーを見つけ、必要に応じてスケールしてくれます。また、従来のコンポーネントやマイクロサービスサーバレスなどとの組み合わせも可能であることからも、アプリケーションを構成できる拡張性にも優れていると言えます。
FaaS のデメリット
このように、さまざまなメリットのある FaaS ですが、以下のようなデメリットもあります。
- 処理が遅れる場合がある
- 運用には専門知識が必要
FaaS はクラウド上で提供されるサービスである以上、サーバー接続が集中した場合などにレイテンシーが生じ、処理速度が低下してくる可能性があります。
また、FaaS は多様な言語に対応しており自由度が高い一方で、構築のためには専門知識が必要となります。サーバーレス・アーキテクチャで適切に開発できるエンジニアはまだ少なく、人材確保が難しい場面もあるでしょう。
また、FaaS では複数のサービスが関連して動くため、従来のアプリケーションよりもモニタリングなどが複雑になります。
サービスの導入前には、このようなデメリットも理解しておくことが大切でしょう。
3 大クラウドのFaaS比較
3 大クラウドと呼ばれている AWS、Google Cloud、Azure では、それぞれ FaaS を提供しています。基本的な機能や実現できることは共通していますが、対応言語や料金などが以下の通り異なります。
AWS Lambda | Azure Functions | Google Cloud Functions | |
---|---|---|---|
対応言語 | Java、Go、PowerShell、Node.js、C#、Python、Ruby | C#、JavaScript、F#、Java、PowerShell、Python、TypeScript | Go、Python、Java、Node.js、PHP、Ruby、.NET |
OS | Amazon Linux | Windows | Linux |
最大実行時間 | 900秒 | 600秒 | 540 秒 |
100万リクエストあたりの料金 | 0.2 ドル | 22.4 円 | 0.4 ドル |
GB-秒あたり使用料金 | 0.0000166667ドル | 0.001792 円 | 0.0000025 ドル |
毎月の無料枠 | 100 万回、400,000 GB-秒 まで無料 | 100 万回、400,000 GB-秒 まで無料 | 200 万回、400,000 GB-秒、200,000 GHz-秒 まで無料 |
なお、Azure Functions では同じ機能を PaaS として提供する「 App Service プラン」も提供されています。
Cloud Functions のニーズが急増中
各社で FaaS が提供されており、どのサービスを利用すべきか迷うこともあるかもしれません。サービス選びで迷った場合、特に初めて FaaS を利用する場合は、Google Cloud Functions がおすすめできます。
その理由は、Google Cloud Functions は他社サービスに比べて、マニュアルが充実しており操作がわかりやすいことと、毎月の無料枠が充実していることです。これらの条件から、初めて FaaS を利用する人であっても、安心して使い始めることができます。
また、Google Cloud では、初めてアカウント登録をする人に向けた、90 日間利用可能な 300 ドルのクレジットも進呈しています。「まずは使い心地を試したい」というような場合にもぴったりでしょう。
まとめ
ここまで、FaaS の概要や他のサービスとの違い、メリット・デメリットについて紹介してきました。この記事を参考に、開発に集中できる FaaS の導入を検討してみてください。
この記事を共有する