ホーム Topics FaaS(Function-as-a-Service)とは? FaaS (Function-as-a-Service) とは何ですか?
FaaS を使用すると、クラウド アプリケーション開発者はマイクロサービス アプリケーションを簡単に実行および管理できます。
IBMニュースレターの購読
相互接続された幾何学的形状を持つ黒と青の背景
FaaS とは何ですか?

FaaS(Function-as-a-Service)は、マイクロサービス ・アプリケーションの 構築と起動に関連する複雑なインフラを管理することなく、顧客がイベントに応じてコードを実行できるように する クラウドコンピューティングサービス です。

インターネット上でソフトウェア アプリケーションをホストするには、通常、仮想サーバーまたは物理サーバーのプロビジョニングと管理、およびオペレーティング システムと Web サーバーのホスティング プロセスの管理が必要です。FaaS を使用すると、物理ハードウェア、仮想マシンのオペレーティング システム、Web サーバー ソフトウェアの管理はすべてクラウド サービス プロバイダーによって自動的に処理されます。これにより、開発者はアプリケーション コード内の個々の機能のみに集中できるようになります。

 

FaaS とサーバーレスの違い

サーバーレスと Functions-as-a-Service (FaaS) はよく混同されますが、実際のところ、FaaS は実際にはサーバーレスのサブセットです。

サーバーレスは、コンピューティング、ストレージ、データベース、メッセージング、API ゲートウェイなど、あらゆるサービス カテゴリに焦点を当てています。ここでは、サーバーの設定、管理、課金がエンドユーザーには見えない。

一方、FaaS はおそらくサーバーレス アーキテクチャの最も中心的なテクノロジーですが、アプリケーション コードまたはコンテナーがイベントまたはリクエストに応答してのみ実行されるイベント駆動型コンピューティング パラダイムに焦点を当てています。

FAAのメリット

FaaS は、アプリケーションを効率的かつコスト効率よくクラウドに移行したい場合に貴重なツールです。以下はあなたが享受するいくつかの利点です:

  • インフラストラクチャではなくコードに重点を置く: FaaS を使用すると、サーバーを機能に分割し、自動的かつ独立して拡張できるため、インフラストラクチャを管理する必要がなくなります。これにより、アプリのコードに集中できるようになり、市場投入までの時間を大幅に短縮できます。

  • 使用したリソースに対してのみ、使用時に支払います。FaaS では、アクションが発生したときにのみ支払います。アクションが完了すると、すべてが停止します。コードは実行されず、サーバーがアイドル状態になることもなく、コストも発生しません。したがって、FaaS は、特に動的なワークロードやスケジュールされたタスクに対してコスト効率が高くなります。FaaS は、高負荷のシナリオに対して優れた総所有コストも提供します。

  • 自動的にスケールアップまたはスケールダウン: FaaS を使用すると、機能は必要に応じて自動的に、独立して、瞬時にスケールされます。需要が減少すると、FaaS は自動的にスケールダウンします。

  • 堅牢なクラウドインフラストラクチャのメリットをすべて享受できます: FaaSは、地域ごとに複数のアベイラビリティ・ゾーンに分散されているため、固有の高可用性を提供し、コストを増加させることなく、任意の数の地域に展開することができます。
FaaS の原則とベスト プラクティス

FaaS の導入を容易にし、より効果的に使用するために従うことができるベスト プラクティスがいくつかあります。

  • 各関数が 1 つのアクションのみを実行するようにする: FaaS 関数は、イベントに応答して 1 つの作業を実行するように設計する必要があります。コードのスコープを制限し、効率的かつ軽量にすることで、関数の読み込みと実行が迅速に行われます。

  • 関数に他の関数を呼び出させないでください。FaaS の価値は関数の分離にあります。機能が多すぎるとコストが増加し、機能を分離することの価値が失われてしまいます。

  • 関数内で使用するライブラリはできるだけ少なくします。 ライブラリが多すぎると、関数の速度が低下し、拡張が困難になる可能性があります。
FaaS ユースケース

FaaS はトランザクションを簡単に分離して拡張できるため、大量の並列ワークロードに適しています。バックエンド システムの作成や、データ処理、形式変換、エンコード、データ集約などのアクティビティにも使用できます。

FaaS は、Web アプリ、バックエンド、データ/ストリーム処理、またはオンライン チャットボットや IoT デバイス用のバックエンドを作成するための優れたツールでもあります。FaaS は、サードパーティ サービスの管理と使用に役立ちます。例えば Androidアプリの開発を検討している場合、FaaSアプローチを採用することでコストを抑えることができます。 アプリがバッチ処理などの特定の機能のためにクラウドに接続する場合にのみ料金が発生するため、従来のアプローチを使用する場合よりもコストを大幅に下げることができます。

FaaS はコンピューティング パフォーマンスを劇的に向上させることもできます。例えば、2人の学生は最近、IBMのエンジニアと協力して、 IBM Cloud Functionsを活用してモンテカルロ・シミュレーション(予測困難な特定の事象の将来の結果を推定するために使用される数学的手法)を行い、株価を推定する方法を探った。 モンテカルロ シミュレーションは、重要なハイパフォーマンス コンピューティング ワークロードとみなされます。モンテカルロと IBM Cloud Functionsの 組み合わせにより、チームは大規模な計算を実行できるようになり、ビジネスロジックに集中できるようになった。 FaaS を使用して、チームは 1,000 回の同時呼び出しによるモンテカルロ シミュレーション全体を約 90 秒で完了しました。比較すると、4 つの CPU コアを搭載したラップトップで同じフローを実行すると 247 分かかり、CPU 使用率はほぼ 100% になりました。

FaaSの使用例については、"IBM Cloud Functionsが提供する主な利点のまとめ"をご覧ください。

FaaS と PaaS、コンテナー、VM の比較

FaaS、PaaS(Platform-as-a-Service)コンテナ、 仮想マシン(VM )はすべて、サーバーレスのエコシステムにおいて重要な役割を果たしています。FaaS はサーバーレス スタックの最も中心的で最も定義的な要素であるため、FaaS が現在市場にある他の一般的なコンピューティング モデルと主要な属性に関してどのように異なるかを検討する価値があります。

  • プロビジョニング時間: 他のモデルの分と時間と比較して、ミリ秒。

  • 継続的な管理: なし。PaaS、コンテナー、および VM のそれぞれについて、簡単なものから難しいものまでスライド スケールで比較します。

  • 弾力的なスケーリング: 自動スケーリングを提供する他のモデルと比較して、各アクションは常に即時かつ本質的にスケーリングされますが、自動スケーリング ルールの慎重な調整が必要です。

  • キャパシティ プランニング: 自動スケーリングとキャパシティ プランニングの組み合わせが必要な他のモデルと比較して、必要ありません。

  • 永続的な接続と状態: 接続と状態を永続化する制限された機能は、外部サービス/リソースに保持する必要があります。他のモデルは http を活用し、ソケットまたは接続を開いたまま長期間維持し、呼び出しの間に状態をメモリに保存できます。

  • メンテナンス: すべてのメンテナンスは FaaS プロバイダーによって管理されます。これは PaaS にも当てはまります。コンテナと VM には、オペレーティング システム、コンテナ イメージ、接続などの更新/管理を含む大規模なメンテナンスが必要です。

  • 高可用性(HA)と 災害復旧(DR) 繰り返しになるが、HAはFaaSモデルに内在しており、余分な労力やコストはかからない。 その他のモデルでは、さらなるコストと管理努力が必要となる。 VM とコンテナの両方の場合、インフラストラクチャは自動的に再起動できます。

  • リソースの使用率: リソースはアイドル状態になることはなく、要求があった場合にのみ呼び出されます。他のすべてのモデルは、少なくともある程度のアイドル容量を備えています。

  • リソース制限: FaaSは、コードサイズ、同時起動、メモリ、実行長などの リソース制限が ある唯一のモデルである。

  • 課金の粒度と請求: 他のモデルの時間単位 (場合によっては分単位) と比較して、100 ミリ秒のブロック単位。
Kubernetes/Knative および FaaS

Kubernetes と Knative は、FaaS の背後にある「配管」の実装の 1 つです。Kubernetesは オープンソースのコンテナオーケストレーションツールで、クラウドアプリケーションの管理には欠かせない。 Knativeを 使えば、Kubernetesクラスタ内でサーバーレスを実行できます。

KnativeとKubernetesの組み合わせは、モニタリング、セキュリティ、ロギング、認証といったKubernetesの機能を活用し、自動コンテナビルド、完全な移植性、 ハイブリッド環境での作業といったKnativeの利点と組み合わせることができることを意味します。

このテクノロジーの作成者は、開発者がクラウド アプリを構築するときにサーバーレスとコンテナーのどちらかを選択する必要はないと考えていました。目標は、サーバーレスの強力なスケーリングとオンデマンド アクセスにより、コンテナーの可用性と一貫性を強化することでした。

Knativeの詳細については、このビデオをご覧ください。

関連ソリューション
IBM Cloud Code Engine

コンテナー イメージ、バッチ ジョブ、またはソース コードをサーバーレス ワークロードとして実行します。サイジング、デプロイ、ネットワーク、スケーリングは必要ありません。

IBM クラウド・コード・エンジンの詳細
IBM Cloud Functions

この Functions-as-a-Service (FaaS) プログラミング プラットフォームを使用して、オンデマンドでスケーラブルに実行される軽量コードを開発します。

IBM Cloudの機能を詳しく見る
参考情報 サーバーレスとは何ですか?

サーバーレスは、開発者がサーバーやバックエンド インフラストラクチャのプロビジョニングや管理を行わずにアプリケーション コードを構築および実行できるクラウド アプリケーションの開発および実行モデルです。

コンテナとは何ですか?

コンテナーは、アプリケーション コードをライブラリの依存関係とともにパッケージ化するソフトウェアの実行可能な単位であり、デスクトップ、従来の IT、クラウドなど、どこでも実行できます。

PaaS とは何ですか?

PaaS (Platform-as-a-Service) は、アプリケーションの開発、実行、管理のための、完全かつ柔軟でコスト効率の高いクラウド プラットフォームを提供します。

次のステップ

フルマネージドのサーバーレス・プラットフォームである IBM Cloud® Code Engine を使用すると、インフラストラクチャーの管理ではなく、コードの作成に集中できます。コンテナー・イメージ、バッチ・ジョブ、またはソース・コードを使用して、IBM Cloud Code Engine に基盤となるインフラストラクチャーを管理および保護させます。コンテナ クラスターのサイズ設定、デプロイ、スケールを自分で行う必要はありません。また、ネットワーキングスキルも必要ありません。

IBM クラウド・コード・エンジンの詳細