FaaS(Function as a Service)とは?サーバー レス アプリケーションの一角としての概念、メリット、デメリットについての詳細解説
HC

Admina team
Jul 26, 2023
FaaSとは
「FaaS」とは、Function as a Serviceの略称で、クラウドコンピューティングの一つの形態です。FaaSにより、プログラマは自身が開発した個々の機能(関数) をクラウド上で実行することができ、必要に応じて、ほかの関数と組み合わせてアプリケーションを作成することができます。このように、FaaSを活用することで、アプリケーション開発に必要なサーバーのセットアップや、その管理にかかる手間などを省くことが可能です。本格的に普及し始めたFaaSに注目し、その基本的な概念や、どのようなメリットがあるのかを取り上げてみましょう。

"FaaS"(Function-as-a-Service)は、従来のアプリケーション開発には、自社内でサーバを用意する必要がありましたが、FaaSではインターネットを介してサーバを利用するため、サーバレスな開発が可能です。さらに、FaaSには以下のような機能や特徴があります。

サーバレスとは?
「サーバレス」とは、新しいコンピューティングモデルであり、アプリケーションを実行するために自社でサーバを構築する必要がなく、クラウドプラットフォームに完全に依存することができます。このモデルでは、インフラストラクチャマネージャがサーバの管理を引き受け、ローディング、スケーリング、パフォーマンスの最適化などの機能を自動的に処理します。また、コードの実行のみに課金され、アプリケーションの未使用時間にはコストがかからないため、コストを大幅に削減できます。さらに、クラウドサービスプロバイダーが提供する多数のサービスを利用することで、迅速で柔軟なアプリケーション開発を実現します。 FaaS(Function as a Service)は、サーバレスでアプリケーション開発ができるクラウドサービスのことで、サーバレスな開発が可能で、自動的にサーバーを拡大、縮小するオートスケーリング機能が備わっています。開発者はサーバの状態を気にする必要がなく、プログラミングに注力できます。ただし、FaaSはサービスによって仕様が大きく異なるため、慎重に選択する必要があります。

FaaSの特徴のオートスケーリングとは?
FaaSの特徴としいてオートスケーリングが挙げられます。この方式は、アプリケーションの負荷に応じて自動的にリソースを増減させることにより、常に最適なサーバー数を維持し、コストを抑えながら高性能なアプリケーションを実現できます。FaaS側でサーバの管理を行うため、開発者はサーバの状態を気にする必要がなく、開発に専念できます。
FaaSの特徴のイベントドリブン方式とは?
FaaSの特徴としてイベントドリブン方式が挙げられます。この方式は、特定のトリガーに対して関数を起動し、処理を行うことを指し、データ更新時に関数を起動し、処理を行うことができます。この方式により、必要になった時にだけ処理を行うことができ、コスト削減とスケーラビリティに優れています。FaaSは、イベントドリブン方式によって、スケーラビリティと高い効率を兼ね備えたサーバレスアーキテクチャを可能にしています。

FaaSとIaaS、PaaS、SaaS、iPaaS、DaaSとの違いとは?
FaaS (Function as a Service): これはサーバーレスアーキテクチャとも呼ばれ、開発者が特定の関数を実行するためのプラットフォームを提供します。開発者は、特定のイベントやリクエストが発生したときに実行される関数(つまり、コードの一部)を書くだけで、それがどのように実行され、スケールされるかについては心配する必要がありません。AWS Lambdaがこの例です。
IaaS (Infrastructure as a Service): このサービスモデルでは、ハードウェアリソース(ストレージ、ネットワーク、サーバーなど)が提供され、ユーザーはそれを基に自分でアプリケーションを開発、実行します。Amazon EC2やGoogle Compute Engineなどがこのカテゴリに該当します。
(Platform as a Service): これは開発者にアプリケーションを開発、テスト、デプロイするための環境(プラットフォーム)を提供します。ハードウェア管理はプロバイダー側が行い、ユーザーはアプリケーションの開発に集中できます。Google App EngineやHerokuがこれに該当します。
SaaS (Software as a Service): これはエンドユーザー向けのソフトウェアを提供します。ユーザーはブラウザやアプリを通じてソフトウェアにアクセスし、ソフトウェアの管理や運用はプロバイダーが行います。Google DocsやSalesforceがこの例です。
iPaaS (integration Platform as a Service): これは異なるアプリケーション、データ、プロセス間の連携を実現するプラットフォームを提供します。複数のシステムを統合し、一貫性と相互運用性を提供します。MuleSoftやDell Boomiがこれに該当します。
DaaS (Desktop as a Service): これはユーザーがインターネットを通じてアクセスできる仮想デスクトップ環境を提供します。DaaSプロバイダーは、ハードウェア、ソフトウェア、セキュリティ、アップデートの管理を行い、ユーザーは自身のデバイスからクラウドベースのデスクトップにアクセスできます。このサービスは、ユーザーが物理的なハードウェアやソフトウェアを購入または管理する必要がないため、コスト削減やメンテナンスの負担軽減につながる可能性があります。Amazon WorkSpacesやMicrosoft Windows Virtual Desktopがこのタイプのサービスの例となります。

FaaSのメリットとは?
従来はアプリケーション開発のためには自社内でサーバを用意する必要がありましたが、FaaSではインターネットを介してサーバを利用するため、サーバレスな開発が可能になります。FaaSにはオートスケーリング機能があり、プログラムに合わせて自動的にサーバを拡大・縮小できます。また、管理の負荷を軽減でき、開発者はインフラ周りを気にすることなくプログラムに注力できます。PaaSはOSやミドルウェアを提供し、SaaSのようにアプリケーションまで提供するわけではありませんが、それ以外はすべて提供されます。IaaSはサーバやストレージなどのインフラを提供し、サーバレスによってコストが削減できます。FaaSは料金体系や連携性など、サービスによって仕様が異なるため、慎重に選択する必要があります。

す。また、関数単位での課金が行われるため、効果的な関数の設計が求められます。さらに、コンテナ起動の遅延がある場合があるため、適切なテストと監視が必要です。
まとめ
FaaSはクラウドコンピューティングの一形態であり、プログラマが自身が開発した個々の機能をクラウド上で実行し、必要に応じてほかの関数と組み合わせてアプリケーションを作成できるようにします。そのため、FaaSを活用することで、アプリケーション開発に必要なサーバーのセットアップやその管理にかかる手間を省くことが可能となります。具体的には、スケーラビリティが向上し、手軽にアプリケーションを開発・運用できるようになるというメリットがあります。
他の記事

