Function as a Service(FaaS)とは何ですか

2021年7月10日

FaaS とは何ですか?

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

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

高速道路の空撮

クラウドで夢を広げる


Thinkニュースレターでは毎週、AI時代のマルチクラウド設定の最適化に関する専門家のガイダンスをご覧いただけます。

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コアを搭載したノートPCで同じフローを実行すると247分かかり、CPU使用率はほぼ100%になりました。

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のメリットと組み合わせることができることを意味します。

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

関連ソリューション
クラウド・コンサルティング・サービス

IBM Consulting Advantageプラットフォームを活用したクラウド・サービスを使用して、ハイブリッドクラウドへの移行を加速し、コスト効率と生産性を高め、サステナビリティーを実現し、商品化までの時間を短縮します。

クラウド・サービスはこちら
専用サーバー・ホスティング・ソリューション

IBMの専用サーバー・ホスティングは、カスタマイズ可能なオプションを備えており、ミッションクリティカルなワークロードの完全な分離、制御、セキュリティーを実現します。

専用サーバー・ソリューションの詳細はこちら
IBM Cloud Virtual Server for VPC

IBM Cloud Virtual Server for VPCは、IBM Cloud Virtual Private Cloud上に構築されたIntel x86、IBM Z、IBM LinuxONEの仮想マシンのファミリーです。

Cloud Virtual Serverの詳細はこちら
次のステップ

信頼性が高く安全なIBM CloudのWebホスティング・ソリューションで、Webプレゼンスを強化しましょう。トラフィックの多いWebサイトからエンタープライズ・アプリケーションまで、IBM Cloud Bare Metal Serverは、ホスティングのニーズに合わせた柔軟性、無制限のデータ転送、世界中への展開力を提供します。

IBM Cloudウェブ・ホスティングの詳細はこちら 無料のIBM Cloudアカウントを作成