ログイン / 登録 アカウント

クラウドネイティブ・アプリケーション

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

Function-as-a-Service (FaaS) は、ステートレスなコンテナで実行されるイベント駆動型コンピュート実行モデルで、これらの機能はサービスの使用を通じてサーバーサイド・ロジックと状態を管理します。 

開発者は、これらのアプリケーション・パッケージを機能として構築、実行、管理できます。独自のインフラストラクチャを維持する必要はありません。

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

通常、このプラットフォームはクラウド内にありますが、モデルは拡張されて、オンプレミスおよびハイブリッドデプロイを含みます。

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

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

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

一般的な FaaS の例

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

Function-as-a-Service の仕組み

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

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

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

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

クラウドプロバイダーはユーザーが機能を使用できる状態にし、リソース割り当てを管理します。機能はイベント駆動型でリソース駆動型ではないため、容易に拡張できます。

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

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

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

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

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

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

FaaS を使用してサーバーレス・アプリケーション全体を構築することも、サーバーレスと従来のマイクロサービス・コンポーネントを組み合わせてアプリケーションを構成することもできます。

FaaS のメリット

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

FaaS とサーバーレスの違い

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

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

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

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

サーバーレス・コンピューティングを支える Kubernetes 基盤

Red Hat OpenShift Logo

コンテナと Kubernetes のプラットフォームにより、クラウドネイティブ・アプリケーションのデプロイを迅速化します。

Red Hat OpenShift Application Runtimes logo

クラウドネイティブ・アプリケーションの開発に適したアプリケーション・ランタイムとフレームワークを提供します。

FaaS についてさらに詳しく知る