サービスとしての機能(FaaS):知っておくべきことすべて
公開: 2022-06-09SaaSについて聞いたことがあるかもしれませんし、PaaSとIaaSについて聞いたことがあるかもしれませんが、Function as a Service(FaaS)について聞いたことはありますか?
FaaS市場は急速に成長しています。 Allied Market Researchによると、2018年の市場価値は30.1億ドルでした。この数は、2026年までに240億ドルに成長すると予想されます。つまり、業界は2020年から2026年まで29.7%の複合年間成長率(CAGR)で成長します。
その成長を見ると、FaaSはかなり大きな問題であると言っても過言ではありません。
しかし、FaaSとは何ですか、そしてそれはどのように機能しますか? これらの質問に答えるのに役立つように、この記事では、FaaSの基本、人々がFaaSを使用する必要がある(および使用しない)理由、および2022年現在の世界のFaaS市場の状況について説明します。
さあ行こう。
サービスとしての機能(FaaS)とは何ですか?
Function as a Service(FaaS)は、開発者がアプリケーションインフラストラクチャを維持する必要をなくすことで、開発者の作業を改善するのに役立つクラウドコンピューティングの形式です。 開発者がFaaSを活用する場合、開発者はFaaSプラットフォームを使用して、アプリケーションパッケージを構築、実行、および監視します。
この時点で、FaaSはサーバーレスコンピューティングのように聞こえると思うかもしれませんが、そうです。 サーバーレスコンピューティングにより、開発者は管理データベース、APIゲートウェイ、ストレージ、メッセージング、およびその他のインフラストラクチャをサードパーティプロバイダーにアウトソーシングできます。 FaaSは、サーバーレスコンピューティングの一種です。

FaaSについて読むのはこれが初めてかもしれませんが、実際にFaaSに遭遇した可能性があります。 多くの人気のあるプログラムやアプリは、AmazonのAlexaのようにFaaSを使用しています。
Alexaに精通している場合は、「スキル」を構築することでAlexaの機能を拡張できることをご存知でしょう。 アプリのように、スキルはAlexaに基本構成以外のことをさせます。 アプリで通知を確認したり、新しいチャットを開始したり、カスタムオーディオを再生したりします。
Amazonは、AWSLambdaを通じてAlexaのすべてのスキルを実行します。 新しいスキルを構築するときは、AWSLambdaを介してデプロイする関数としてスキルを作成します。 次に、AWS Lambdaが関数を実行し、セキュリティやデータベース管理などのインフラストラクチャの問題を処理します。
では、FaaSはどのように段階的に機能するのでしょうか。 次にそれをカバーしましょう。
FaaSはどのように機能しますか?
FaaSを理解するには、次の2つの重要な用語を知っておく必要があります。
- 「モノリシックアーキテクチャ」 =他のアプリケーションから独立して実行される自己完結型のアプリケーション。 これらのアプリケーションは、ユーザーインターフェイス、ビジネス機能、およびデータインターフェイスを社内で管理します。 モノリシックアーキテクチャコードは、他のコードに依存しています。
- 「マイクロサービスアーキテクチャ」 =いくつかの小さなタスクを処理するコードの一部。 これらのマイクロサービスは別個のものです(ただし、アプリケーション全体を一緒に構成します)。
これは、モノリシックアーキテクチャとマイクロサービスアーキテクチャの違いを示す図です。

関数を実行または更新すると、マイクロサービスアーキテクチャとモノリシックアーキテクチャの実際の主な違いがわかります。 モノリシックアーキテクチャでは、プログラム全体が関数を一度に実行します(たとえば、アプリの更新など)。 マイクロサービスアーキテクチャを使用すると、マイクロサービス機能を個別に実行できます。
FaaSは、マイクロサービスアーキテクチャの機能を支援するものです。
新しいマイクロサービス関数を実行するたびに、関数を作成するだけで済みます。 次に、FaaSプロバイダーが関数を取得して実行し、それ以降、関数の管理を処理します。
FaaSはユーザーからの入力を処理するツールであるため、各FaaS機能が1つのタスクのみを担当する必要があることに注意することが重要です。 このタスクは、トリガーがアクティブ化されたときに実行されます。 たとえば、ユーザーの領収書のコピーを作成する機能は、ユーザーが「領収書のダウンロード」を押した場合にのみ機能します。
FaaSは「イベント駆動型実行モデル」を使用します。つまり、関数はトリガーされたときにのみアクティブになります。 同様に、それらはバックグラウンドで実行されません。
では、FaaSは他に何ができるでしょうか?
FaaSにはどのようなサービスが含まれていますか?
すべてのプロバイダーは異なりますが、FaaSプロバイダーは通常次のサービスを提供します。
- 認証サービス。 これらは、プログラムのユーザーのログインおよび認証プロセスを処理します。
- データベースサービス。 これらは、プログラムが情報を使用できるように、データベースに情報をファイルするのに役立ちます。 FaaSプロバイダーは、データベースのメンテナンスを管理します。
- ファイルストレージ。 FaaSプロバイダーはアプリのデータとファイルを保存できるため、独自のサーバーでホストする必要はありません。
- 報告。 FaaSプロバイダーは、プログラムのエラーやセキュリティの脅威を監視し、何か問題を見つけたときにアラートを出すことができます。
全体として、これらのサービスは開発者がよりスマートに作業するのに役立ちます。 次に、FaaSの長所について説明します。
FaaSモデルの長所
FaaSを使用すると、開発者はインフラストラクチャやデプロイメントについて心配する必要がなく、アプリケーションロジックを作成するだけで済みます。 したがって、現在実装されている場合、FaaSはプログラムの構築と展開にかかる時間を大幅に短縮できます。
FaaSを使用すると、構築と展開も簡単になります。 プロビジョニング時間は、一度に数時間ではなく、数秒しかかかりません。 また、特定の言語やリソースに制限されていません。 FaaSプロバイダーはほとんどの言語でコードを実行でき、プロバイダーが提供するキャッシュとデータベースを使用して構築プロセスをスピードアップできます。
FaaSモデルは非常にスケーラブルであり、容量計画ははるかに簡単です。 より多くのリソースが必要な場合は、FaaSプロバイダーの指示を参照して使用をアップグレードできます。 多くのFaaSプロバイダーは水平スケーリングを提供します。つまり、使用量が急増した場合、プロバイダーは急増に対処するために追加のリソースをプロビジョニングするだけです。
さらに、メンテナンス、ディザスタリカバリ(DR)、またはセキュリティについて心配する必要はありません。
最後に、FaaSは非常に効率的です。 プロバイダーは、使用したリソースに対してのみ料金を請求するため、FaaSの料金は、独自のハードウェアよりもはるかに少なくなる可能性があります。 同様に、関数はバックグラウンドで実行されず、代わりにアイドル状態になります。 アイドル状態にするためにお金を払う必要もありません。
では、FaaSはすべてプロですか? 完全ではありません。
FaaSモデルの短所
FaaSモデルは、プログラム開発に関連する最大の課題のいくつかを取り除きますが、制御を大幅に制限する必要もあります。 コードが使用するサーバー、セキュリティ、またはデータベースについて多くの決定を下すことはできません。 代わりに、それはあなたのプロバイダー次第です。
同様に、システムを完全に制御できないため、デバッグは少し難しいことがよくあります。 FaaSコードが常にテスト環境にスムーズに変換されるとは限らないため、テストも困難です。
さらに、FaaSベンダーの厳格な要件を順守する必要があります。 FaaS関数は1つのアクションしか完了できないため、これに慣れていない場合は、自分とチームがコードを記述する方法を変更する必要があります。 同様に、FaaSの展開に適したものにするために、既存のアプリのコードを書き直す必要がある場合があります。そのため、FaaSは、多くの場合、古いプログラムよりも新しいプログラムに適しています。
最後に、FaaSを選択することは、多くの場合、単一のベンダーに長期的にコミットすることを意味します。 プログラムを作成するときは、プロバイダーのシステムと要件を使用します。 当然、プロバイダーを変更すると、作業の一部をやり直し、機能を中断する可能性があります。
長所と短所
長所 | 短所 |
コードをより速くデプロイする プロビジョニングにはミリ秒かかります 任意の言語のコード 自動ディザスタリカバリ(DR) 効率的なコスト スケーラブル | サーバーの制御を失う デバッグは難しい テストに時間がかかる あなたはあなたのベンダーに閉じ込められています FaaSに適したコードを作成する必要があります |
FaaSとSaaS、PaaS、およびIaaS
FaaSについて詳しく知ったので、FaaSがIaaS、SaaS、PaaSなどの他のAnything as a Service(XaaS)オプションとどのように関連しているか疑問に思うかもしれません。
IaaS、PaaS、およびFaaSサービスには、同様の目的があります。これらは、企業がアプリケーションをより安価かつ効果的に管理するのに役立ちます。 ただし、各オプションは異なるものを提供します。
サービスとしてのインフラストラクチャ(IaaS)を使用すると、コンピューティング能力(RAMやCPUなど)を貸し出すことができます。 IaaSを使用する場合でも、一部のアプリケーション機能(セキュリティなど)を社内で管理する必要があります。
Platform as a Service(PaaS)を使用すると、ハードウェアおよびソフトウェアツールをレンタルしてアプリを構築できます。 一般的な例は、AWSElasticBeanstalkです。
IaaSやPaaSとは異なり、FaaSではスペースを借りて機能を独立して実行できます。 この機能により、よりスケーラブルになります。
3つの動作の違いについて簡単に説明します。

Software as a Service(SaaS)は、アプリやプログラムの構築を対象としていません。 代わりに、アプリケーションをレンタルできるため、社内でアプリケーションを構築する必要はありません。 データ分析ツールからWordPressSEOプラグインまで、何千ものSaaSオプションを利用できます。
市場規模、シェア、および主要ベンダー
FaaSの成長は、組織が新しいプログラムを開発する方法の全体的な変化を反映しています。
過去数十年間、開発者は複数年のプロジェクトとして大規模なシステムを作成していました。 今日、多くの組織は開発への開発オペレーション(DevOps)アプローチを支持しています。 DevOpsは、プログラムの継続的な開発と改善を少しずつ優先します。

同様に、組織はますますクラウドサービスを使用して、物事をより安全かつ効率的にしています。 Oracleによると、組織はまもなく600倍の機密データをクラウドに保存する予定です。
この傾向は、Statistaの7,164人のCスイートの幹部から収集されたデータで確認できます。 2019年から2021年にかけて、単一のパブリックまたはプライベートクラウドサービスの使用が減少し、ほとんどの組織が複数のクラウドソリューションを採用しました。

クラウドコンピューティングへの投資も増えています。 世界中の何百もの大企業に関するStatistaの別の調査によると、調査対象企業の83%がパブリッククラウドコンピューティングに年間120万ドル以上を投資しています。 この数字は2019年の50%から増加しています。
FaaSは将来にわたって利用でき、スケーラブルであるため、人々はFaaSに目を向けています。 同様に、生産性とパフォーマンスが向上し、アプリの市場投入までの時間が短縮され、新しいプログラムを作成するための費用対効果の高い方法が提供されます。
これらのメリットは、銀行の組織(または「BFSI」組織)、消費財および小売、エンターテインメント、電気通信、情報技術対応サービス(ITES)、ヘルスケア、製造業など、多くの業界を魅了しています。 各業界がFaaS市場にどれだけ貢献しているかは次のとおりです。

SaaSとは異なり、組織が選択できるFaaSベンダーは数千社もありません。 FaaSの大部分は、AWS Lambda、Azure Functions、IBM Cloud Functions、Google Cloud Functions、Alibaba Cloud、CloudflareWorkersなどの主要なプレーヤーが提供するソリューションを使用しています。
ここでは、これらの各プロバイダーについて説明します。
AWS Lambda
2014年11月にAmazonによってリリースされたAWSLambdaは、非常に人気のあるFaaSツールです。 2021年第4四半期の時点で、クラウドユーザーの33%がAWSサービスを使用していました。


AWS Lambdaは、Node.js、C#、Python、Ruby、Go、Java、Powershellなどの多くのプログラミング言語のネイティブサポートを提供します。 「サービスとしての機能(FaaS)とは」で述べたようにAlexaはスキルにAWSLambdaを使用しています。
特徴と機能:
- 他のAWSツールに接続します
- AmazonCloudWatchを使用してプログラムのパフォーマンスを監視します
- SaaSツールとの200を超える統合
- Dockerコンテナをデプロイできます(AWSは2020年12月にこの機能を導入しました)
長所:
- LambdaAPIまたはAmazonAPIゲートウェイを使用して独自のバックエンドを構築できます
- 関数をコンテナイメージとしてデプロイできます
- AmazonRDSプロキシを使用してリレーショナルデータベースに接続できます
- 各機能に割り当てるメモリの量を選択できます
短所:
- AWSをまだ使用していない場合は、セットアップに多くの時間と労力がかかります
MicrosoftAzureの機能
Microsoft Azure Functionsは、Microsoftが2010年2月に「WindowsAzure」として最初にリリースしたMicrosoft Azureの機能です。AzureFunctionsを使用すると、FaaSを介してイベント駆動型コードを実行できます。 2021年第4四半期の時点で、クラウドユーザーの21%がAzureを使用しています。

特徴と機能:
- AzureLogicAppsの250以上のコネクタに機能を接続できます
- JavaScript、C#、F#、Powershell、PHP、Python、およびJavaをサポートします
- 新規ユーザー向けの多くのチュートリアルを提供します
- AzureApplicationInsightsを介してプログラムを分析するのに役立ちます
長所:
- AzureFunctionsは統合プログラミングモデルを使用します
- DevOpsを使用するチームに最適
- 利用可能な複数のプラン
短所:
- AzureFunctionsはNode.jsまたはRubyをサポートしていません
Google CloudFunctions
Google Cloudは、AWSとAzureに次ぐ3番目に人気のあるクラウドコンピューティングソリューションです。 現在、10%の市場シェアを持っています。 Google Cloud Functionsは、Google CloudのFaaS機能です。これは、幅広い用途に100を超える製品を提供するサービスです。

特徴と機能:
- デバッグとロギングはGoogleCloudFunctionsに統合されています(CloudTraceとCloudDebuggerを介して)
- Googleアシスタント、Google Cloud、Firebase、またはHTTPを使用する任意のアプリケーションからのトリガーを使用します
- GoogleCloudFunctionsは多くのGoogleパートナーと統合されています
長所:
- マルチクラウドまたはハイブリッド機能が必要な場合は、それを使用できます
- オープンソースなので、必要に応じて別のFaaSプラットフォームに簡単に移行できます
- とても使いやすいです
- Googleは新しいユーザーに多くの無料のリソースを提供しています
短所:
- Google Cloud Functionのコンテナベースのサービスは、他のFaaSプロバイダーほど高度ではありません
IBM Cloud
IBM Cloudは、IBMが2013年6月に購入したパブリッククラウドプラットフォームであるSoftLayerから生まれました。IBMはプラットフォームをBluemixに変え、2014年7月にPaaSツールとしてリリースしました。 FaaS。

2021年第4四半期の時点で、クラウドユーザーの4%がIBMCloudを使用しています。 ApacheOpenWhiskエコシステムで実行されます。
特徴と機能:
- ビデオコンテンツを検索できます
- IBM Watson APIを介して、プログラムを他のプログラムに接続できます。
- IBMは、いくつかの一般的なタスクのために事前に構築された機能を提供しています
- Node.js、Python、Swift、PHP、Go、Ruby、Java、および.NETCoreをサポートします
長所:
- モバイルアプリケーションの構築に最適
- 使い方を学ぶのは簡単
- IBMCloudMonitoringを介してアプリを監視します
短所:
- 関数のメモリ時間を10分または2048MBに制限します
Alibaba Cloud
Alibaba Cloudは、他のクラウドコンピューティングオプションほど広く知られていませんが、それでも6%のまともな市場シェアを保持しています。 2008年にAlibabaによって立ち上げられたAlibabaCloudは、オンラインビジネスおよびAlibabaの他のサービスを使用するビジネスを対象としています。

FaaSは、コンテンツ配信ネットワーク(CDN)、データストレージ、ビッグデータ処理と並んで、AlibabaCloudが提供するサービスの1つです。
特徴と機能:
- アリババの他のコンピューティングサービスと統合
- アリババが複数のエリアのクラスターで機能をホストしているため、災害に強い
- ビデオトランスコーディング
- AI推論
- Node.js、Python、Java、PHP、およびC#をサポートします
長所:
- 多くのコードを実行する必要がない人のための無料のオプションを提供します
- 高度にスケーラブル
- 多くの種類のトリガーを使用できます
短所:
- 機能をAlibabaから別のFaaSプロバイダーに移動するのは難しい場合があります
Cloudflareワーカー
Cloudflareによって実行されるCloudflareWorkersは、新しい開発者やコードをほぼ瞬時に実行したい人に適したFaaSシステムです。 Cloudflare Workersは、無料プランとスケーラブルな価格設定を提供します。

特徴と機能:
- JavaScript、C ++、Rust、およびCをサポートします
- 画像、PDF、その他のファイルをCloudflareワーカーに保存して、静的アセットとしてデプロイできます
- Cloudflareワーカーはサーバーのグローバルネットワークを使用するため、災害に強い
- 他のCloudflare製品と統合します
長所:
- 他の多くのFaaSオプションよりも安価です
- 新しい開発者が使い方を学ぶのは簡単です
- あなたは非常に迅速に始めることができます
- Cloudflareは、アプリケーションの構築に役立つ詳細なチュートリアルとリソースを提供します
短所:
- Cloudflareワーカーは他のオプションよりも堅牢性が低く、小規模プロジェクトのユーザーに適しています
Faasのベストプラクティス
はい、FaaSはテクノロジーですが、開発者がプログラムやアプリケーションの開発に採用する必要がある考え方でもあります。
FaaSを最大限に活用するには、次のベストプラクティスに従ってください。
- FaaSの制限を忘れないでください。 FaaSはすべてのプログラムに適しているわけではなく、FaaSを使用してFaaSに対応していないプログラムを作成しようとすると、時間、労力、および費用がかかります。
- FaaSでのみシングルアクション関数を実行します。 複数のアクションで関数を実行すると、FaaS関数が最適に機能する分離環境が中断されます。この中断により、アプリケーションの速度が低下し、効率が低下します。
- 依存関係のある関数を実行しないでください。 依存関係により、後でエラーとスケーラビリティの問題が発生します。
- ロード時間を注意深く監視してください。 ロード時間は、大量のメモリを必要とするライブラリまたは関数から発生します。 読み込み時間が長いと、プログラムの速度が低下し、最終的にユーザーを苛立たせます。
- 使用するリレーショナルデータベース管理システム(RDBMS)接続の数を減らします。 これらの接続により、関数が機能するのにかかる時間が長くなり、プログラムに単一障害点が導入されます。
FaaSが必要ですか?
FaaSは革新的でゲームを変えるテクノロジーである人もいますが、すべての人に役立つわけではありません。
FaaSを最大限に活用する組織は、各機能が1つのことだけを実行するマイクロサービスアーキテクチャを使用してプログラムを構築する用意があります。 これらの機能は独立して機能する必要があります—依存している場合、スケーラビリティの問題が発生します。
モノリシックアーキテクチャまたは相互に描画する機能を備えたアプリケーションを構築する場合、FaaSはうまく機能しない可能性があります。 同様に、単一のベンダーに長期的にコミットしたくない場合は、FaaSが近視眼的な選択肢になる可能性があります。
もちろん、FaaSがなくてもクラウドテクノロジーを活用できます。 たとえば、PaaSまたはIaaSに投資して、アプリケーションの機能の一部をクラウドにアウトソーシングすることができます。 このオプションは、クラウドコンピューティングのコストと効率の利点の一部を提供しますが、FaaSモデルの制限内でプログラムを構築する必要はありません。
または、非常にニッチなことや専門的なことを行うプログラムを作成する必要がない場合は、SaaSツールへの投資を検討してください。 一部のSaaSツールはオープンソースでさえあるため、既存のツールをニーズに合わせて調整できる場合があります。
概要
FaaSはテクノバブルでも新しいトレンドでもありません。 これは、今後10年間でさらに多くのことが期待できるスケーラブルなテクノロジーです。
FaaSの説明は難しいように思われることもありますが、FaaSは、開発者が他の誰かによって維持されているインフラストラクチャを使用してコードを記述および実行できるようにするサービスにすぎません。 Alexaなど、定期的に使用する多くのサービスはFaaSを使用しています。 一般的なFaaSベンダーには、IBM Cloud Functions、AWS Lambda、Alibaba Cloud、Google Cloud Functions、およびMicrosoftAzureFunctionsが含まれます。
FaaSは一部の企業にとって非常に効果的ですが、すべての人に適しているわけではありません。 FaaSは、単一の機能を実行する分離されたステートレスコードを実行するのに最適です。
マイク(またはキーボード)をお渡しします。 あなたのビジネスでFaaSをどのように使用していますか?また、このテクノロジーを初めて探求する他の人にアドバイスはありますか? 以下のコメントで教えてください。