SaaSやPaaS、IaaSなど、XaaS(X as a Service:サービスとしてのICT利用)の普及は進んでいます。今回取り上げたいのは、その中でもサーバーレスの実現に寄与するFaaS(Function-as-a-Service:サービスとしての機能・関数)です。
クラウドの普及とシステム内製化の需要増が同時に進む環境下で、サーバーレスアーキテクチャとしてのFaaSの存在感は近年高まっています。FaaSはほかのクラウドサービスと何が異なり、どのような特徴を持つのか、メリット・デメリットは何かなど、基本事項を押さえましょう。
FaaSは、アプリケーション・システムの開発・実行・運用をサーバーレスで行うことを可能にするクラウドサービスの一種です。ハードウエア、仮想環境、OS、ミドルウエアなどサーバー、開発環境の構築・管理が不要である点、リクエストに応じてFunction(機能・関数)が実行される「イベントドリブン方式」で駆動する点がその特徴といえるでしょう。 FaaSの例としては、AWS Lambda、Google Cloud Functions、Azure Functions、IBM Cloud Functionsなどが挙げられます。
PaaSは、リクエストに応じてFunction(機能・関数)が実行されるFaaSに対し、リクエストに対し常時起動されているアプリケーションが応答する方式であるという点で異なります。FaaSのイベントドリブン方式に対し、PaaSの方式は「リクエストリプライ方式」といい、システム開発のためのプラットフォームがサービスとして提供される点はFaaSと共通しています。
IaaSは、その名の通りシステム開発に必要なインフラ環境(ハードウエア、OS、ネットワークなど)がまとめて提供されるクラウドサービスです。FaaSやPaaSとは異なり、データベースや実行環境などのミドルウエアは提供されません。その分、システム開発の自由度は高まります。
CaaSはIaaSとPaaSの間に位置し、ハードウエアやOSに加え、コンテナの管理機能を提供します。ただし、そのほかのミドルウエアは自社管理のため、PaaSよりは自由度が高いといえます。コンテナについて詳しくは『「仮想化」とは? コンテナとの違いとともに解説』をご一読ください。
SaaSは、ビジネスチャットや会計ソフトに代表されるようにアプリケーションが丸ごとサービスとして提供されるクラウドサービスです。FaaS、PaaS、IaaS、CaaSはシステム開発のためのサービスであるのに対し、SaaSはアプリケーションとして提供されるため、情報システム部門以外の部門にとっても身近な存在です。
FaaSの定義やほかのXaaSとの違いは分かりましたが、FaaSの導入によって結局どのようなメリットが企業・エンジニアにもたらされるのでしょうか。
特有のメリットとして挙げられるのは以下の2点です。
サーバーレスの最大のメリットは、サーバーの構築や運用、保守にかかる人的、あるいは金銭的コストがかからないということです。
「オートスケーリング」とは、負荷に応じて自動的にサーバーの性能や台数が引き上げられる機能を指します。イベントに応じて、必要な分だけ自動的に機能が提供されるFaaSは、サーバーの構築だけでなくスケーリングに割かれるエンジニアの負担を減らすことにも貢献します。
FaaSにこれだけのメリットがあれば、その分のデメリットも存在するだろうと考える方は少なくないでしょう。
まずFaaSのデメリットとして挙げられるのは、FaaS特有の知識・ノウハウが必要になるということです。
クラウド全般にいえることではありますが、FaaS上でさまざまな機能を実現させるため、使いこなすまでには慣れと経験が求められます。また、サーバーを丸ごとサービスとして利用する関係上、パフォーマンス・セキュリティ性がベンダーに依存してしまう側面があることは否めません。また、特定のサービスに依存してしまうクラウドロックインにより、将来的な業務環境の自由度が下がってしまうことへの懸念もあるでしょう。
いずれの項目を見ても分かる通り、サーバーレスによって得られるメリットとデメリットは表裏の関係にあります。FaaSの普及とともに増加する成功事例を、いかに自社の施策に反映できるかが、その導入成功のカギとなるでしょう。
サーバーレスアーキテクチャの中心的存在であるFaaSについて解説してまいりました。必要なときだけ機能が提供され、バックエンド開発の負担を軽減してくれるFaaSは、クラウド利用の一形態として今後も広がり続けていくはずです。今やりたいことと、FaaSに適したシステムに合致する点はないか、ぜひ一度検討してみてください。