FaaSとは「サーバレスでアプリ開発可能なサービス」
FaaSとは、サーバーレスでアプリケーション開発できるサービスです。「Function as a service」の略で、「ファース」と読みます。
サーバー管理はベンダー(サーバーを提供してくれる会社)が行うため、アプリケーションの開発者がサーバーの状態を把握する必要はありません。
FaaSの代表的なサービスにAmazonが提供する「AWS Lambda」やGoogle Cloudが提供する「Cloud function」などがあります。
これらのサービスでは、基本的な機能は同じですが、一般に以下のような違いがあります。
- 対応言語
- 料金体系
たとえば、上述した二社間において対応言語は、次のような違いがあります。
- AWS Lambda:Java、Go、PowerShell、Node.js、C#、Python、Ruby
- Cloud function:Go、Python、Java、Node.js、PHP、Ruby、.NET Core
また、料金体系は利用した回数や時間に応じて請求される従量課金制で、毎月の無料枠があります。
選択の際には、使用したい言語が対応しているか、どの程度の使用量で料金が発生するかなど比較してみてください。
FaaSの3つの特徴
FaaSには以下のような特徴があります。
- サーバーレス
- オートスケーリング
- イベントドリブン方式
順番に説明していきます。
サーバレス
FaaSの最大の特徴は、サーバーレスである点です。サーバー管理から解放されることで、アプリケーション開発に注力できるようになります。
アプリケーション開発の際には、開発の土台となるサーバーの設置やOSのインストールなど多くの作業が必要ですが、FaaSを活用すればそれらの作業がなくなります。
結果、サーバー管理の部分以外に労力を割けるようになるので、開発の効率が良くなります。サーバーレスとは、サーバーが不要であるという意味ではないのでご注意ください。
サーバーはクラウド経由で使用し、管理自体はベンダー(サーバー管理の会社)に任せます。
オートスケーリング
2つ目の特徴は、オートスケーリングです。サーバーの使用負荷に応じて台数を自動で調整してくれる機能です。
サーバーに負荷がかかった時には、サーバー使用量を増やして、処理速度が遅くなるのを防いでくれます。反対に、サーバーへの負荷が小さい時には使用量を減らせるため、コストダウンにつながります。
たとえば、ECサイトだと1日の利用客の増減にばらつきがあるため、利用客が多い需要のピーク時にはサーバー使用範囲を拡大し、処理が遅れないようにします。
それ以外の時は、使用範囲を縮小しておけるので、コストを抑えられるのです。オートスケーリングによって、安定したサービスの提供と無駄なコストカットができます。
イベントドリブン方式
3つ目の特徴は、イベントドリブン方式である点です。
イベントドリブン方式とは、ユーザーやプログラミングによって指示されたとき(なんらかのイベントが発生したとき)にのみ機能が起動するシステムのことです。
イベントとは、「ホームページ上でボタンがクリックされる」や「データがアップロードされる」などを指します。指示されたときにのみ起動するため、サーバーを常に稼働しておくことで待機時間の短縮にもつながります。
FaaSを使ったアプリケーション開発には、機能の部分の開発と、その機能を実行するためのイベント部分の設定だけが必要となります。
FaaSのメリット3選
ここからはFaaSのメリットについて以下の3点を解説します。
- コストが削減できる
- サーバー管理から解放される
- 拡張性、柔軟性がある
順番に見ていきましょう。
コストが削減できる
1つ目のメリットは、コストが削減できる点です。
FaaSの特徴の一つにオートスケーリングがありますが、この機能は、サーバーの負荷によって自動で拡張したり縮小したりしてくれます。
サーバー代は使った分しかかからないので、自動調整機能によってコストが削減できます。
また、サーバーを設置したりアプリケーションの開発環境を整備したりといった初期費用の抑制も可能です。その後のサーバー管理費も不要となるため、ランニングコストの削減にもつながります。
サーバー管理から解放される
2つ目のメリットは、サーバー管理から解放される点です。サーバーレスであるFaaSは、サーバー自体が不要なのではなく、サーバーの管理の手間がなくなるのが特徴です。
サーバーの管理は、サーバーを提供している会社が担当してくれます。サーバーを気にせずにアプリケーション開発に集中できるため、開発者の負担が減り効率的です。
従来の自社でサーバーを管理する方法では、サーバーの容量を気にしたり、アップデートにかかる管理も気にしたりする必要がありました。FaaSではその手間がなくなるため、アプリケーション開発に注力できるのです。
拡張性・柔軟性がある
3つ目のメリットは、拡張性や柔軟性がある点です。
従来のコンポーネントやマイクロサービスサーバレスなどと組み合わせられるため、アプリケーションを構築する拡張性にも優れています。
また、あらゆるプログラミング言語に対応しており、使用範囲が広く柔軟性もあります。
FaaSのデメリット3選
FaaSには以下の3つのデメリットもあります。
- サービス終了の可能性がある
- 導入のハードルが高い
- 処理が遅れる場合がある
順番に説明していきます。
サービス終了の可能性がある
デメリットの1つ目は、サービス終了の可能性がある点です。
FaaSは、サーバーレスが特徴であるためサーバー管理はベンダーが実施します。
そのベンダーが突然サービス提供を終了する可能性も否定できません。
導入のハードルが高い
2つ目のデメリットは、導入のハードルが高い点です。
FaaSは、提供されているサービスに合わせた設計が必要であるため、専門知識を持ったアプリケーション開発者が必要です。そのため、設計に対して必要以上に労力をかけてしまう可能性があるでしょう。
また、業界事情として、FaaSを専門としている開発者が少ないことも、導入のハードルが高くなっている理由の1つです。
運用後は、複数のサービスを連携させる必要があるため、問題が発生した場合に原因追求も難しくなります。
処理が遅れる場合がある
3つ目のデメリットは、処理が遅れる可能性がある点です。
FaaSでは、サーバーの提供をネットワーク上でおこなっているため、サーバー接続が集中すると処理が遅れる場合があります。
基本的に多少の遅延は考慮して、適材適所で使用する必要があるでしょう。
FaaSと他サービスとの違い
FaaS以外に、「◯aaS」という言語を見たことがあるのではないでしょうか。
見た目が似ていて、違いがわかりにくいのですが、それぞれが提供しているサービスの範囲はまったく異なります。
FaaSに似ている以下の3点を、順番に説明します。
- IaaS(イアース/アイアース)
- PaaS(パース)
- SaaS(サース)
IaaS(イアース/アイアース)
IaaSとは、アプリケーション開発に必要なインフラ部分を提供するサービスです。「Infrastructure as a Service」の略で、「イアース」または「アイアース」と読みます。
インフラ部分のみの提供が特徴で、ミドルウェアやアプリケーション本体はアプリケーション開発者自身で自由に選択できます。
また、選択できるリソースの幅広さも特徴で、CPUやストレージなどのリソースの構成を自由に選択できます。開発の自由度を求める場合には、IaaSを選択するのがいいでしょう。
しかし、開発のためのスキル・労力やリソースの管理が必要となるため、開発者の業務負担は大きくなります。
PaaS(パース)
PaaSとは、IaaSのインフラ部分に加えて、OSやミドルウェアを提供するサービスです。「Platform as a Service」の略で、「パース」と読みます。
ソフトウェアの開発環境を提供できるのが特徴で、アプリケーション開発までの、サーバーの設置やOSのインストール、ネットワークの設定などを省略できます。
ただし、開発環境を提供してくれるベンダーによって、リソースやプログラミング言語は異なるため、自由度は低くなります。IaaSとSaaSの中間なので、SaaSよりも自由度が欲しいが、開発環境の整備までは手が回らない場合は、選択肢に入るのではないでしょうか。
SaaS(サース)
SaaSとは、PaaSで提供されているインフラ部分とOSなどのミドルウェアに加えて、ソフトウェアも提供しているサービスです。
「Software as a Service」の略で、「サース」または「サーズ」と読みます。インターネット上で利用できるアプリケーションのことを指します。
「Googleドキュメント」や「Microsoft 365」などが代表例です。ソフトウェアの開発も管理も必要ないため、コストを抑えられる点がメリットですが、サービスは提供されているソフトウェアに限定されるため、自由度は低くなります。
まとめ
FaaSとは、サーバーレスでアプリケーションを開発できるシステムです。
サーバーレスは、サーバー管理をベンダーが担うため、アプリケーション開発者はサーバーの存在を気にする必要がなくなる点がメリットです。その反面、専門知識が必要になり、導入のハードルが上がってしまう点はデメリットといえるでしょう。
FaaSはアプリケーション開発に専念できる環境が整っているため、活用できれば効率化も図れます。ぜひこの記事を参考にして、まずはFaaSを利用できるか検討してみてください。