SMTP・API連携で高速メール配信するならブラストエンジン

FaaSとは?特徴やメリット・デメリット、代表的なサービス例を解説

更新日: 開発技術

自社内でデータの管理・運用を行うオンプレミス型に代わって、インターネット上でデータを管理・運用できるクラウドサービスを活用する企業が年々増加しています。

クラウドサービスは、コスト削減やスケーラビリティの向上など多くの利点を持ち、特にアプリケーション開発の現場で活用が広がっています。

「IaaS」や「CaaS」など、多様な形式のクラウドサービスが提供される中、近年で特に注目を集めているのが「FaaS」(Function as a Service)です。

本記事では、FaaSの概要からメリット・デメリット、他のクラウドサービスとの違いを解説します。また、実際にFaaSが使われている例も紹介しているため、自社のデータ管理・運用を見直してみましょう。

FaaSの概要

FaaSは、アプリ開発に関わるクラウドサービスの一種です。まずは、FaaSとはどのようなものなのか見ていきましょう。

FaaSとは

FaaS(Function as a Service:ファース)とは、サーバーレスでアプリケーション開発が可能なクラウドサービスをいいます。開発者側はサーバーの管理を事業者に任せられるため、自社でサーバーを持っていなくてもFaaSを利用すればアプリ開発が可能です。

FaaSが登場する以前は、バックエンドのアプリケーションをインターネットを通じて提供してくれるサービスが主に使われていました。これが「 BaaS( Backend as a Service )」と呼ばれるサービスです。

この後、2014年にAmazon社から「AWS Lambda」というサービスが発表されます。BaaSではクラウドから提供される機能に限り利用できましたが、本サービスでは「任意のプログラムコードを実行できるサーバー」が提供されるようになりました。これがFaaSの始まりともいえるサービスであり、FaaSが登場してからは任意のアプリを実行できるようになったのです。

FaaSにおける「サーバーレス」とは

FaaSでいう「サーバーレス」とは、「アプリ開発者がサーバーを管理する必要がない」という意味です。「サーバーなしでアプリ開発ができる」という意味ではないため注意しましょう。

FaaSを利用すれば、サーバーはサービスベンダーが管理してくれます。開発者側からサーバーの管理・運用を意識することが減るため、サーバーレスと呼ばれるのです。

FaaSが注目を集めている背景として、こういったサーバーの管理・運用の手間やコスト、開発に関わる工数を削減し、アプリケーション開発に注力できることも理由の一つでしょう。

オートスケーリングとイベントドリブン方式

FaaSでは「オートスケーリング」と「イベントドリブン方式」という機能を備えていることも特徴です。

オートスケーリングとは、サーバーの負荷に応じて自動で処理能力を調節する機能のことです。例えば、アクセスが集中する際など使用負荷が大きいときにはサーバーの使用量を増やして処理の遅れを防止し、負荷が小さいときは使用量を減らしコスト削減を図れます。

また、イベントドリブン方式とは、必要なプログラムコードを記述し連携させることで処理を実行してくれる機能のことです。例えば、ボタンクリックやアップロードなどの操作(イベント)がトリガーとなって、処理が自動で実行されます。

また、イベントごとに自動で処理し、自動で終了してくれるため、サーバーを常に稼働させておく必要がありません。

Gmail送信者ガイドライン対応バナー

FaaSのメリット

FaaSは、サーバーレスであることが大きな特徴といえます。続いてはこのFaaSの特徴を踏まえながら、メリットを解説します。

コストを削減できる

FaaSは、一般的なものであれば従量課金制をとっていることが多く、稼働させているサーバーの分だけ利用料が生じます。そのため、機能を使わなければ費用が発生せず、サーバー利用料のコストを削減できます。

また、一時的にコストを抑えたい際には使用する機能を減らすなど、状況に応じて柔軟に運用することができ、コスト管理において非常に優れています。

エンジニアが開発に集中しやすい

FaaSは、エンジニアが開発に集中しやすい環境を提供します。前述の通り、FaaSはサーバーレスであるため、自社でサーバーを管理するケースと比較して、エンジニアのリソースを開発に注力できます

また、FaaSに搭載されているオートスケーリングとイベントドリブン方式の両方が、プログラムに対して自動で対応してくれることもあり、エンジニアはより開発に集中できるでしょう。

さらに、FaaSではサーバーのメンテナンスやアップデートなどもベンダーが行ってくれます。そのため、アプリケーション開発をスムーズに進められるほか、開発へ参入するハードルが下がります。

拡張性が高い

FaaSは、システムの拡張性が高い点でも優れています。FaaSでは、従来のシステム要素や、細かなサーバーレス機能を組み合わせることも可能です。そのため、システムの拡張性が高いという特徴があります。

また、プログラムに対して自動で対応してくれることで、利用状況に応じてサービスの拡大または縮小も容易に行えます。

このように、FaaSはコスト効率、開発の効率化、そして高い拡張性を提供し、現代のアプリケーション開発において強力なツールとなっています。

FaaSのデメリット

FaaSには上記のようなメリットがある一方で、デメリットもあります。どのような点がデメリットとなるか、例を挙げて解説します。

運用に専門知識が必要

FaaSは多くのプログラミング言語に対応し、自由度が高い一方で、構築や運用に際してはさまざまな専門知識が欠かせません。なぜなら、サーバーレス実現に関するコードの追記や、アプリケーションのコードを変換する必要があるためです。

サーバーレスの構築に強いエンジニアは多くないため、こういったケースに対応できる知識と技術が求められます。また、FaaSでは複数のサービスを連携させて動かすため、従来のシステムと比較してモニタリングが複雑になってしまうのも難点といえます。

処理の遅延が生じる場合がある

FaaSはインターネットを介し、さまざまなシステムがサーバーに接続するため、アクセスが集中すると処理が遅延する恐れがあります。

遅延のリスクを減らすためには、サーバーの接続状況、ネットワーク環境といった条件を考慮して、都度状況をみながら使用する必要があるでしょう。

ベンダーをまたがった開発が難しい

FaaSの広がりに対し、サーバーレスに関する技術や仕様の標準化は進んでいるとは言い切れません。そのため、ベンダー間で仕様が統一されておらず、ベンダーをまたがった開発が難しいケースもあります。

現在では標準化が進んできていますが、サービス間の連携や乗り換えについては、実現可能かあらかじめ十分に確認することが重要です。

サービス終了の可能性がある

提供する事業者がサービスを終了してしまった場合、どうすることもできないのが最大のデメリットでしょう。サービスの終了が発生すると、既存のシステムやアプリケーションを他のプラットフォームに移行する必要が生じ、これには多大な時間とコストがかかる可能性があります。これは、ほかのクラウドサービスにも同様のことがいえます。

めったに起こるケースではないかもしれませんが、クラウドサービスの性質を理解したうえでサービスを利用しましょう。

FaaSとその他クラウドサービスとの違い

FaaSのほかにも、アプリケーション開発をスムーズに行うためのサービスはいくつかあります。ここでは「IaaS」「PaaS」「CaaS」「SaaS」「DaaS」といった既存のサービスを、FaaSと比較して見ていきましょう。

IaaSとの違い

IaaS(Infrastructure as a Service:イアース)とは、アプリケーションの稼働に必要なOS・サーバー・仮想マシンなどを、クラウド上で提供するサービスです。ユーザーに仮想化されたインフラストラクチャを提供し、サーバー構築の自由度が高い点が特徴です。

OSの種類やストレージのスペックを選択できるため、システムのカスタマイズが可能であり、ユーザーはより高度なコントロールを持つことができます。しかし、この自由度の高さはFaaSとは異なり、構築や運用の負荷も相対的に高くなります。FaaSがサーバー管理をクラウドプロバイダーに任せるのに対し、IaaSではユーザーがインフラの設定と管理を行う必要があります。

CaaSとの違い

CaaS(Container as a Service:カース)とは、OSにあるアプリケーションの動作環境を仮想化し区切る「コンテナ技術」をクラウド上で提供するサービスです。アプリケーションを構築する環境という点ではIaaSや後述するPaaS、FaaSと同じですが、オートスケーリング機能がない点でFaaSと異なります。

また、CaaSでは、ユーザーはコンテナの管理やオーケストレーションを自社で担う必要があるため、FaaSほど手軽に利用できるわけではありません。FaaSはサーバー管理を意識せずにコードを実行できるのに対し、CaaSではアプリケーションのパッケージ化とその管理が求められます。

PaaSとの違い

PaaS(Platform as a Service:パース)とは、IaaSが提供するものに加え、ミドルウェアやプログラミング言語、管理システムといったアプリケーション開発に必要なものを提供するサービスです。

構築に手間がかかるFaaSと異なり、PaaSではすぐに開発に取り掛かれますが、FaaSよりカスタマイズ性は少なく、提供されているサービスも多くはありません。

SaaSとの違い

SaaS(Software as a Service:サース)とは、従来パッケージとして購入・インストールする必要があったソフトウェアを、クラウド上で提供するサービスです。例として、クラウド型の勤怠管理システム、Google WorkspaceやMicrosoft 365といったサービスがSaaSに相当します。

FaaSとSaaSの大きな違いは、SaaSがすでに構築されたソフトウェアを提供するものであるのに対し、FaaSはユーザーが自らのコードを実行するための環境を提供する点です。また、SaaSでは、サービスそのもののカスタマイズや機能の追加は基本的にできませんが、FaaSではコードの記述によって柔軟にアプリケーションを開発・実行できます。

DaaSとの違い

DaaS(Desktop as a Service:ダース)とは、クラウドサービスを利用して仮想デスクトップ環境を提供するサービスのことです。DaaSは、ユーザーがリモートでデスクトップ環境にアクセスできるようにするもので、テレワークの普及に伴って注目されました。

DaaSはFaaSと本質的に異なり、アプリケーション開発のための環境を提供するものではなく、仮想デスクトップの提供に特化しています。そのため、FaaSがコードの実行を支援する一方で、DaaSはユーザーの作業環境そのものを提供するという点で根本的に異なるサービスです。

FaaSの例

最後に、FaaSを利用した実際のサービス例を3点紹介します。FaaSを導入する際の参考にしてみましょう。

AWS Lambda

「AWS Lambda(ラムダ)」とは、Amazon社が提供するAWS(Amazon Web Services)の一部として提供されるサーバーレスコンピューティングサービスです。「Amazon S3」「Amazon DynamoDB」といったほかのAWSサービスと組み合わせて、AWS Lambdaの関数を起動できます。

例として、AWSのEventBridgeと組み合わせて毎日決められた時間に一定の処理を行うといった使い方が可能です。そのため、AWSを主に利用している企業や開発者にとっては、特に使いやすいサービスでしょう。

OSはAmazon Linux、プログラミング言語もNode.js、Python、Java、Ruby、C#、Go、PowerShellといった主要な言語をサポートしており「Runtime API」を利用すればそのほかの言語にも対応できます。

料金も従量課金制で、かつ1か月あたり100万件のリクエスト分が無料枠として設けられており、安価で利用できる点も魅力です。

参考:https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html

Google Cloud Functions(GCF)

「Google Cloud Functions(GCF)」とは、Google Cloudが提供するGCP(Google Cloud Platform)の一部として提供されるFaaSサービスです。

GCP上で提供される他のサービスやサードパーティのサービスとシームレスに統合でき、AWS Lambdaと同様に、クラウドイベントに応じて関数を実行できます。現在GCPをメインで使用しているのであれば、まずはGCFを検討するとよいでしょう。

OSはLinux、プログラミング言語はNode.js(JavaScript)、Python、Go、Java、.NET、Ruby、PHPをサポートしており、この点でAWS Lambdaとは異なります。

無料利用枠はAWS Lambdaと比較すると大きくとられており、1か月あたり200万件のリクエストが無料で利用できる点も特筆すべき点です。

参考:https://cloud.google.com/functions/docs/concepts/overview?hl=ja

Azure Functions

「Azure Functions」とは、Microsoft社が提供するAzureプラットフォームの一部として提供されるFaaSサービスです。同じくMicrosoft社のOfficeやMicrosoft 365のほか、Windowsアプリ開発に使用される「Visual Studio」といった統合開発環境(IDE)などのサービスと親和性があることが大きな特徴です。

上記二つのサービスとは料金体系が大きく異なり、「従量課金プラン」「Premiumプラン」「専用プラン(App Service プラン)」と3種類のプランから選べます。従量課金プランはコストを抑えられる料金プランです。Premiumプランでは大きな処理を行ったり、処理時間を短くしたりできるため、Premiumプランが推奨される場面も少なくないでしょう。

OSはWindows、プログラミング言語はC#、Node.js(JavaScript)、F#、Java、PowerShell、Python、TypeScriptをサポートしています。

なお、従量課金プランでは1か月あたり100万件の無料枠が利用可能です。

参考:https://learn.microsoft.com/ja-jp/azure/azure-functions/

まとめ

FaaSを運用するためにはさまざまな課題がありますが、必要な知識と技術を身につけられれば、よりスムーズなアプリケーション開発が可能です。

現在では、さまざまな企業から FaaSが提供されていることもあり、どのサービスを選べばよいか迷うことも少なくないでしょう。まずは自社で使用しているアプリケーション開発サービスを確認し、使われているOSやプログラミング言語、ほかに利用中のサービスと親和性の高いものを選ぶのがおすすめです。この機会に、FaaSの導入を検討してみてはいかがでしょうか。

Gmail送信者ガイドライン対応バナー

blastengine(プラストエンジン)ロゴ

エンジニアを面倒なメールに関するトラブルから解放するために作られたブラストエンジン
まずは無料トライアルで、その使いやすさを実感してみませんか?

\メールアドレス入力のみ/

無料トライアル