ポイント: サービスとしての機能 (FaaS) は、開発者が独立したクラウド関数を作成・デプロイできるようにし、スケーラビリティと柔軟性を向上させます。このサーバーレスアーキテクチャはさまざまなプログラミング言語をサポートし、イベントによってトリガーされることができ、コスト効率を促進します。
- FaaSはハードウェア依存なしでオンデマンド実行を可能にします。
- 主な利点には、スケーラビリティと開発者の柔軟性が含まれます。
コンピュータは非常にシンプルです。情報を保存したり、移動させたり、その情報に対して操作を行ったりすることができます。サービスは、これらの3つの活動を管理するために人々を助けるために登場しました:
- データセンター
- ネットワークセキュリティ
- ソフトウェアアプリケーション
サービスとしての機能 (FaaS) は、ソフトウェアの世界のブティック衣料品店のようなものです。各関数は非常に特定の操作を実行します。FaaSについて知っておくべきことと、それをどのように利用できるかを見てみましょう。
関数とは?
まず、関数を理解しましょう。関数は、1つの要素を別の要素に変える方法を定義します。関数は静的であり、通過する変数は変化する可能性があります。
クラウドサービスの登場により、サービスとしての機能が可能になりました。これは、クラウドが可能にした多くのサービスとしての提供の1つです。
サービスとしての機能とは?
サービスとしての機能は、あなた(およびあなたの組織)が以下を行う能力を提供します:
- 人々が自分で書けない高品質な関数を作成すること。
- その関数、または一連の関数を、他の人が使用できるサービスに変えること。
サービスとしての機能は、関数をクラウドインスタンスに配置し、開発者、アプリケーション、他の関数が使用できるようにします。クラウドインスタンスに関数を書くと、その関数はユーザーのシステムハードウェアやソフトウェアに依存することなく、任意のコンピュータに提供されることができます。
レストランからテイクアウトを注文するのに似ています。料理を美味しく準備するために、あなたのキッチンの道具に頼る必要はありません。
クラウド関数は以下を可能にします:
- 関数がクラウドのリソースで動作すること—個々のコンピュータではなく
- コードを任意の言語で記述すること
- ネットワーク接続がある場所ならどこでもサービスにアクセスできること
これらの関数は、機械学習においてますます一般的になっています。ここでは、MLモデルの時間、開発リソース、才能がすべて非常に貴重であり、彼らの努力の結果は再現が難しく、役に立つ関数となります。ML FaaSの例としては、Open-AIのGPT-3が挙げられます。REST APIを介してアクセスできます。
FaaSの仕組み
関数には、作成時に定義した複数のトリガーを介してアクセスできます。アプリで使用する場合、関数はデータベースで発生するイベントに基づいて発生することがあります。たとえば、新しいアイテムがデータベースに書き込まれたとき、変更されたとき、またはデータベースから削除されたときに関数がトリガーされることがあります。
「on-event」関数は、アカウントが作成されたときにユーザーにメールを送信することがあります。関数は、新しいメッセージが部屋に書き込まれたときにユーザー、またはユーザーのセットに通知を送信するように書くこともできます(データベースでの新しい書き込みに相当します)。
関数は一部の入力を受け取り、出力を返すため、関数を使用するには、次のことを知っておく必要があります:
- 関数が適切に入力データを処理できるように、入力のデータスキーマ。
- データから何を探すかを知るために、出力のデータスキーマ。
関数は使用ケースごとに完全に異なります。以下はその例です:
- 関数は画像の入力を受け取り、猫または犬のラベルを出力することができます。
- 関数はトピックの入力を受け取り、一連の単語を出力することができます。
- 関数はYouTubeビデオのURLを受け取り、そのビデオのすべての統計のJSONを出力することができます。
- 関数はWord文書を入力として受け取り、フォーマットされたPDFを出力することができます。
大手クラウドプロバイダーは、彼らの関数と対話するためのソフトウェア開発キット(SDK)を構築しています。あなたが関数を書いて、他の企業に使用させたい場合、一般的にはREST APIまたは単にURLを通じて関数を公開することができます。
FaaSの利点
FaaSの最大の2つの利点は、全体的なスケーラビリティと開発者の柔軟性です。
スケーラビリティ
クラウド上の関数(特にKubernetesアーキテクチャを使用している場合)は、必要なユーザー数に合わせてスケールできます。また、他のサービスから独立してスケールします。
検索関数が突然、アルファベット順に並べる関数よりも人気が出た場合、検索関数はアルファベット順に並べる関数とは別にスケールでき、サービスをクライアントに提供しながら、検索関数自体のリソースに対してのみ支払うことによってコストを節約できます。
このスケーラビリティは、以下を意味します:
- アイドルリソースに対して支払うことはありません。
- クラウドリソースがサーバーを管理する場合、ロジスティクスが少なくなります。
開発者の選択
FaaSは開発者が慣れている任意のコーディング言語で作業することを可能にします。ほとんどの開発者が操作するコンテナフレームワークのため、ターゲット顧客の主要オペレーティングシステムを決定し、その顧客に合わせて開発スキルを調整する必要はありません。
これにより、OSからOSへの通信が翻訳されないため、より多くの人々にサービスを提供できるようになります。
FaaSの欠点
サービスとしての機能の欠点は、コーディングの透明性の欠如とコードベースの整理です。
コーディングの透明性
クラウド上でのコードのテストは、まだ完全に開発されていません。バグは、ローカルでコードを書いて実行するよりも見つけるのが難しい場合があります。
今日のほとんどのクラウドシステムでは、関数の運用性をテストする良い方法がなく、デプロイされるまでテストすることができません。これには、以下が必要です:
- より多くのテスト時間
- デプロイ前にエラーを見つけるためのより熟練した開発者
コードベースの整理
サービスとしての機能を設定すると、新たなニーズが生まれます:関数をモジュラー方式で整理することです。多くの関数をデプロイしたときに、その関数を追跡するのは難しい場合があります。
Googleは最近、開発者がアプリをローカルでテストできるようにするために、Firebase Local Emulator Suiteをリリースしました。他のプロバイダーも同様のことを行っている可能性があります。これは、開発者がクラウドコンピューティングフレームワークと対話するインターフェースを改善しようとしていることを示しています。
FaaSを作成・管理する方法
関数は、すべての主要なクラウドサービスプロバイダーでデプロイできます。人々が関数にアクセスする必要があるため、サービスプロバイダーは以下を行うことができます:
- 関数へのアクセス制限を作成する
- その使用に対して料金を請求する
- ユーザーの活動を計測する(例:1日あたり20回の使用)
- 関数のコストについて良いアイデアを持つ
関数の作成
GUIから関数を作成するか、コマンドラインからデプロイすることができます。主要なクラウドプロバイダーの各社は、プロセスに関与する非開発者のためのアクセスを可能にするために、GUIインターフェースを改善しています。
関数を作成する際、一般的には選択して定義するオプションが5つあります:
- 関数名
- リージョン
- トリガータイプ
- メモリアロケーション
- タイムアウト値
その後、インスタンスにはコードが必要です。GCPでの例は以下の通りです:
関数の管理
デプロイ後、次のようなリストから関数を管理できます:
デプロイされると、Googleの監視ツールは関数のコンテナに関する多くの情報を提供します:
- 呼び出し回数
- 実行時間
- メモリ使用量
- アクティブインスタンス
- エラー
- ログ
これがGCPでの関数ダッシュボードの見た目です:
関連する読書
- BMC DevOpsブログ
- Google Cloud Functions: 入門
- FaaSとサーバーレス: 違いは何ですか?
- サーバーレスパーティにKubernetesを持ち込む
- Snowflakeにおけるユーザー定義関数 (UDF)、私たちのSnowflakeガイドの一部
- API/開発者ポータル: 優れたAPIポータルを作成する方法
これらの投稿は私自身の意見であり、BMCの立場、戦略、または意見を必ずしも代表するものではありません。