Jump to section

FaaS (Function-as-a-Service) とは

URL をコピー

FaaS (Function-as-a-Service) はクラウド・コンピューティング・サービスの一種で、開発者はアプリケーション・パッケージを機能として構築、計算、実行、管理でき、独自のインフラストラクチャを維持する必要がありません。

FaaS は、ステートレスなコンテナで実行されるイベント駆動型実行モデルで、これらの機能は FaaS プロバイダーが提供するサービスの使用を通じてサーバーサイド・ロジックと状態を管理します。

FaaS ソリューションは主なパブリッククラウドで使用でき、オンプレミスでプロビジョニングでき、エンタープライズ IT がアプリケーション開発に使用できる重要な新機能が追加されます。クラウドネイティブ戦略ガイドを読み、FaaS によるサーバーレスアプローチの導入を準備しましょう。

一般的な FaaS の例

  • IBM Cloud Functions
  • Amazon の AWS Lambda
  • Google Cloud Functions
  • Microsoft Azure Functions (オープンソース)
  • OpenFaaS (オープンソース)

FaaS は、開発者がビジネスロジックを作成するサーバーレス・コンピューティングを実装する手段です。このビジネスロジックはプラットフォームによって完全に管理される Linux コンテナで実行されます。

通常、クラウド・コンピューティング・プラットフォームはクラウド・コンピューティング・サービスを使用しますが、このモデルは拡張され、現在ではオンプレミスおよびハイブリッド環境のデプロイを含むようになっています。

サーバーレスによって、サーバーの管理やプロビジョニング、およびリソース割り当てなど、インフラストラクチャに関する懸念が抽象化され、開発者からプラットフォーム (Red Hat® OpenShift® など) に渡されるので、開発者はコードの作成とビジネス価値の実現に集中できます。

機能とは、オペレーティングシステム上でビジネスロジックを実行するソフトウェアの断片です。アプリケーションは多数の機能から構成されます。

FaaS モデルの使用は、サーバーレス・アーキテクチャを持つアプリケーションを構築する 1 つの方法です。しかしサーバーレスパラダイムが普及してきたため、開発者はサーバーレス・マイクロサービスとステートレスコンテナの構築をサポートするソリューションを求めています。

FaaS によって、サーバーを管理しなくても、開発者はイベントに応じて実行する Web アプリケーションを抽象化できます。たとえば、ファイルのアップロードをトリガとして起動される、ファイルをさまざまな形式に変換するカスタムコードを実装できます。

FaaS インフラストラクチャは通常、サービスプロバイダーによって、主にイベント駆動型実行モデルを通じてオンデマンドで測定されるので、必要なときに使用でき、Platform-as-a-Service (PaaS) のようにバックグラウンドで常時サーバープロセスを実行する必要はありません。 

先進的な PaaS ソリューションには、アプリケーションをデプロイするために開発者が使用できる共通ワークフローの一部として、サーバーレス機能が含まれています。このため、PaaS と FaaS の境界は曖昧になります。 

実際には、アプリケーション全体は、機能、マイクロサービス、長期間実行されるサービスというソリューションが混在して構成されています。

プロバイダーはアプリケーション・プログラミング・インタフェース (API) を介してユーザーが機能を使用できる状態にし、リソース割り当てを管理します。機能はイベント駆動型でリソース駆動型ではないため、容易に拡張でき、そのスケーラビリティによって効率と価値が向上します。

これらのメリットの一部を実現するには、機能実行の時間制限など、アーキテクチャ上の制約があります。そのため、機能はすばやく起動および実行できるものでなくてはなりません。 

機能はミリ秒単位で起動し、個々の要求を処理します。機能に複数の同時要求がある場合、システムは必要なだけ機能のコピーを作成して要求に対応します。

要求が低下すると、アプリケーションは自動的にスケールダウンします。動的スケーリングは FaaS のメリットで、コスト効率にも優れています。プロバイダーは使用されたリソースについてのみ課金し、アイドル時間は課金しないからです。

オンプレミスで実行すると、動的であることからプラットフォームの密度が高まり、実行するワークロードを増加でき、リソース消費および機能性が最適化されます。

水平方向のスケーリングを必要とするイベント駆動型サービスは、機能としてうまく機能し、RESTful アプリケーションも同様に機能します。 

FaaS は、大量のトランザクションや、レポート生成、画像処理、スケジュールされたタスクなど発生頻度の低いワークロードに適しています。FaaS の一般的な用途は、データ処理、IoT サービス、モバイルまたは Web アプリケーションです。

FaaS を使用してサーバーレス・アプリケーション全体を構築することも、サーバーレスと従来のマイクロサービス・コンポーネントを組み合わせてアプリケーションを構成し、Kubernetes などの新しいテクノロジーやコンテナ・オーケストレーション・システムを利用することもできます。

  • 開発者の生産性の向上と開発時間の短縮
  • サーバー管理が不要
  • スケーリングが容易、水平方向のスケーリングはプラットフォームが管理
  • 必要なときのみリソースを購入または使用
  • 機能はほぼあらゆるプログラミング言語で作成可能

当初、FaaS とサーバーレスはほぼ同じ意味を持っていましたが、サーバーレスのほうはその後拡張され、FaaS でエンコードされるカスタムビジネスロジックに加えて共通サービスを広範に使用するアーキテクチャ上のパターンと手法からなる広い意味を指すようになりました。

サーバーレスはマイクロサービスによって使用できますが、コンテナ化されて動的スケーリングと状態管理要件を満たしていれば、従来のアプリケーションでも使用できます。 

「サーバーレス」という用語は、データベースやメッセージングシステムなどのマネージドサービスを表現するためにも使用されています。この場合、システムはクラウドプロバイダーまたはサードパーティ企業が管理するため、開発者または管理者はシステムを運用する必要はありません。  

FaaS を、主にイベント駆動型アーキテクチャを通じて接続される共通バックエンドサービス (データベース、メッセージング、認証など) と組み合わせると、サーバーレスの開発者が受けるメリットが最大になります。

関連資料

記事

ステートフルとステートレス

あるものがステートフルかステートレスかは、別の何かとの通信の状態が記録される期間と、その情報をどのように保存する必要があるかによって決まります。

記事

Quarkus とは

Quarkus は、Java 仮想マシン (JVM) およびネイティブコンパイルのために作成された Kubernetes ネイティブの Java スタックで、Java をコンテナに最適化します。

記事

サーバーレスとは

サーバーレスは、開発者がサーバーを管理する必要なくアプリケーションを構築および実行できるようにするクラウドネイティブ開発モデルです。

クラウドネイティブ・アプリケーションの詳細はこちら

製品

統合されたテスト済みのサービス一式を備えたエンタープライズ・アプリケーション・プラットフォームであり、ユーザーの選ぶインフラストラクチャを使ってアプリケーションを市場に投入するために活用できます。

リソース

トレーニング

無料のトレーニング

Developing Cloud-Native Applications with Microservices Architectures