さまざまなシナリオにおけるユーザーニーズを満たすために、Function Compute は、イベント関数、Web 関数、タスク関数、GPU 関数の 4 種類の関数を提供しています。さまざまな開発ワークフローに対応するため、Function Compute は、組み込みランタイム、カスタムランタイム、カスタムイメージの 3 種類のランタイムを提供しています。さまざまなリソース使用率と課金のプリファレンスを考慮して、Function Compute は、弾性インスタンスとプロビジョニング済みインスタンスの 2 種類のインスタンスタイプを提供しています。このトピックでは、Function Compute の特徴と適用シナリオについて説明し、適切なテクノロジーを選択できるよう支援します。
選択の概要
Function Compute を使用する際、ビジネスシナリオと技術スタックに基づいて適切な関数タイプとランタイムを選択し、パフォーマンスとコストを最適化するためにインスタンスタイプを選択できます。
Web アプリケーションと API サービス:Web 関数と [カスタムランタイム] を使用します。この関数タイプは、多くの一般的な Web アプリケーションフレームワークをサポートし、ブラウザからアクセスしたり、URL で呼び出したりできます。
ファイル処理とデータストリーム処理:イベント関数と [組み込みランタイム] を使用します。イベントトリガーを設定して、Object Storage Service、ApsaraMQ for RocketMQ、Simple Log Service (SLS) などのさまざまな Alibaba Cloud 製品と連携できます。
チャットボットや text-to-image などの AI 推論シナリオ:GPU 関数と [カスタムイメージ] を使用します。ComfyUI、RAG、TensorRT などの一般的な AI プロジェクトのコンテナイメージに基づいて、AI モデル推論サービスを迅速に構築できます。
非同期タスク:スケジュールされたタスクや動画トランスコーディングなどのシナリオでは、タスク関数と [組み込みランタイム] を使用します。
[組み込みランタイム] と [カスタムランタイム] はどちらもコードパッケージとして関数にデプロイされ、軽量なアプリケーションに適しています。
コンテナ化されたデプロイには、[カスタムイメージ] を使用します。[GPU 関数] は [カスタムイメージ] のみをサポートします。
関数タイプの選択
比較項目 | [イベント関数] | ウェブ機能 | タスク機能 | [GPU 関数] |
特徴 | ファイルとデータストリームを処理します。OSS トリガー、Kafka トリガー、SLS トリガーなど、さまざまなクラウド製品のイベントによってトリガーできます。 | 一般的な Web アプリケーションフレームワークをサポートします。ブラウザからアクセスしたり、URL で呼び出したりできます。 | 非同期リクエストを処理します。非同期呼び出しの各段階の状態を追跡し、保存できます。 | Stable Diffusion WebUI、ComfyUI、RAG、TensorRT などの一般的な AI プロジェクトのコンテナイメージをサポートし、AI モデル推論サービスを迅速に構築します。 |
シナリオ |
|
|
|
|
ランタイム | 推奨:組み込みランタイム | 推奨:カスタムランタイム | 推奨:組み込みランタイム | カスタムイメージ のみをサポート |
デフォルトで無効 | デフォルトで無効 | デフォルトで有効 | デフォルトで無効 |
ランタイムの選択
比較項目 | 組み込みランタイム | カスタムランタイム | カスタムイメージ |
開発ワークフロー | FC が定義したインターフェイスに基づいてハンドラを記述します。 | フレームワークテンプレートに基づいて Web アプリケーションを開発し、パブリックエンドポイントで結果をすぐに確認します。 | カスタムイメージを ACR にアップロードしてからイメージを使用するか、ACR 内の既存のイメージを使用します。 |
サポートされるインスタンスタイプ | CPU インスタンス | CPU インスタンス | CPU インスタンスと GPU インスタンス |
サポートされていません | サポートされています | サポートされています | |
最速。コードパッケージにランタイムが含まれていないため、コールドスタートが最速になります。 | 高速。コードパッケージは HTTP サーバーです。サイズは大きいですが、イメージをプルする必要がないため、コールドスタートは高速です。 | 低速。イメージのプルが必要なため、コールドスタートが遅くなります。 | |
コードパッケージ形式 | ZIP、JAR (Java)、またはフォルダ | コンテナイメージ | |
一部のリージョン (中国 (杭州) など) では最大サイズが 500 MB、その他のリージョンでは 100 MB です。 説明 依存関係を追加し、コードパッケージのサイズを削減するために、レイヤーを設定できます。 |
説明 AI 推論アプリケーションの場合、イメージサイズを削減するために、NAS または OSS に大規模モデルを保存できます。 | ||
サポートされるプログラミング言語 | Node.js、Python、PHP、Java、C#、Go | 制限なし | 制限なし |
インスタンスタイプの選択
CPU 関数は弾性インスタンスのみをサポートします。GPU 関数では、リソース使用率、遅延、コストの安定性に関するニーズに応じて、弾性インスタンスとプロビジョニング済みインスタンスから選択できます。詳細な選択ガイドについては、次のフローチャートをご参照ください。
プロビジョニング済みインスタンスは、Ada、Ada.2、Ada.3、Hopper、または Xpu.1 シリーズに属する GPU 関数にのみバインドできます。
弾性インスタンス
関数の最小インスタンス数を 0 に設定すると、インスタンスはリクエスト量に基づいて自動的にスケーリングされ、リクエストがない場合はリリースされます。これは、使用量に応じた課金となり、関数が使用されていないときは何も支払わないことを意味し、コスト削減を最大化します。ビジネスリクエストが頻繁であるほど、リソース使用率が高くなり、弾性仮想マシンを使用する場合と比較してコスト削減が大きくなります。
コールドスタートはありますか?
はい。遅延の影響を受けやすいビジネスの場合、最小インスタンス数を 1 以上に設定してコールドスタートを緩和できます。このメソッドは弾性リソースを事前に割り当てます。リクエストが到着すると、インスタンスは迅速にアクティブ化されてリクエストを実行します。
課金 (従量課金)
関数の使用コストは、アクティブな弾性インスタンスとシャローハイバネーション (旧アイドル) 弾性インスタンスの料金の合計です。最小インスタンス数を 1 以上に設定した場合、シャローハイバネーションモードを有効にできます。シャローハイバネーション状態では、vCPU の使用は無料で、GPU の使用料金は通常料金の 20% のみです。このコストは、アクティブな弾性インスタンスのコストよりもはるかに低くなります。
アクティブおよびシャローハイバネーション弾性インスタンスのシナリオの詳細については、「弾性インスタンス」をご参照ください。
プロビジョニング済みインスタンス
このインスタンスタイプは GPU 関数にのみ適用されます。事前にプロビジョニング済みリソースプールを購入し、リソースプールから特定の数とタイプのプロビジョニング済みインスタンスを関数に割り当てることができます。このメソッドは、予測可能で固定された使用コストを提供し、高いリソース使用率、厳しい遅延要件、または安定したコストが必要なシナリオに適しています。
コールドスタートはありますか?
いいえ。プロビジョニング済みインスタンスを使用する場合、関数が同時に処理できる最大リクエスト数は、次の数式によって決定されます:= 割り当てられたプロビジョニング済みインスタンス数 × インスタンスの同時実行数。この制限を超えるリクエストはスロットリングされます。制限内のリクエストはリアルタイム応答を受け取り、コールドスタートを完全に排除します。
課金 (サブスクリプション)
関数コストは、購入したすべてのプロビジョニング済みリソースプールの合計サブスクリプション料金です。