Alibaba Cloud Function Compute (FC) の関数をバックエンドサービスとして使用するには、Application Load Balancer (ALB) インスタンスに FC タイプのサーバーグループを追加します。ALB インスタンスはリクエストを FC に転送し、FC が関数呼び出しを実行して、実行結果をリクエスト元に返します。
概要
Alibaba Cloud FC は、フルマネージドのイベント駆動コンピューティングサービスです。FC を使用すると、サーバーなどのインフラストラクチャを管理することなく、コードを作成してアップロードできます。FC はコンピューティングリソースをプロビジョニングし、コードを伸縮性と信頼性を備えた形で実行します。また、ログクエリ、パフォーマンス監視、アラートなどの機能も提供します。FC を使用すると、あらゆる種類のアプリケーションやサービスを迅速に構築でき、実際に消費したリソースに対してのみ料金が発生します。
ALB は、FC をバックエンドサービスとして追加することに対応しています。ALB インスタンスがリクエストを受信すると、そのリクエストを FC に転送して関数呼び出しをトリガーします。FC はその後、実行結果をリクエスト元に返します。
ALB は、FC 3.0 と 2.0 の両方をバックエンドサービスとして追加することに対応しています。
使用する前に FC を有効化する必要があります。2024 年 8 月 27 日以降に Alibaba Cloud アカウントを登録し、実名認証を完了した場合は、有効化せずに FC を直接使用できます。
ALB と FC は、Alibaba Cloud 内部ネットワーク経由で安全に通信します。
主な機能
サーバーレス:ALB インスタンスに FC をバックエンドサービスとして追加してサーバーレスアプリケーションを構築し、O&M コストを削減します。
オートスケーリング:FC はトラフィックに基づいてコンピューティングリソースを自動的にスケールアウトまたはスケールインし、ピーク時に十分なキャパシティを確保しつつ、オフピーク時にはリソースを節約します。
高可用性とフォールトトレランス:ALB と FC は連携して高可用性とディザスタリカバリを提供し、アプリケーションの安定性を確保します。
ユースケース
マイクロサービス:ALB の高度なルーティング機能を使用して、リクエストを異なるマイクロサービス関数に分散します。FC は、同時実行数の多いリクエストを処理するために動的にスケールでき、システムの伸縮性と信頼性を向上させます。
リアルタイムデータ処理:ALB を使用して、データ処理リクエストを適切な関数に分散します。FC は、数行のコードと簡単な設定だけでデータをリアルタイムに処理できます。
イベント駆動シナリオ:ALB インスタンスがイベントをトリガーとするリクエストを受信し、対応する関数に転送します。FC はイベントを処理し、結果をデータベースに保存するか、他のサービスに送信します。これにより、動的なイベント駆動処理を実現できます。
画像および動画処理:ALB インスタンスが画像または動画のアップロードリクエストを受信し、適切な処理関数に分散します。FC はタスク負荷に応じて自動的にスケールする伸縮性のあるコンピューティングリソースを提供し、効率的なタスク完了を実現します。
制限事項
ALB インスタンスと関数は同じリージョンに存在する必要があります。
Function Compute タイプのサーバーグループには、関数を 1 つのみ含めることができます。
Function Compute 2.0 の場合、[ハンドラータイプ] が [イベントハンドラー] に設定されている場合は、HTTP トリガーを設定して関数を ALB インスタンスに関連付けます。
シナリオ例
ある EC 企業が、Alibaba Cloud リージョンに ALB インスタンスをデプロイし、プラットフォーム上の大量のユーザーリクエストを処理しています。事業の成長とユーザー数の増加に伴い、同社は動的コンテンツ生成、ユーザー行動分析、パーソナライズされたレコメンデーションなどのタスクを処理するために、柔軟で効率的な方法を必要としています。
この要件を満たすために、同社は ALB インスタンスを FC と統合します。このソリューションにより、これらのタスクを効率的に処理し、ユーザー体験を向上させることができます。
前提条件
操作手順
手順 1:関数の作成
このトピックでは FC 3.0 コンソールを使用します。FC 2.0 を使用する場合は、コンソール右上の [Back to Function Compute 2.0] をクリックしてから、関数を作成 します。
Function Compute コンソールにログインします。 左側のナビゲーションウィンドウで 関数リスト をクリックします。 関数リスト ページで、リージョンを選択し、関数を作成 をクリックします。
関数を作成 ページで、関数タイプを選択し、関数コードを設定してから、作成 をクリックします。
この例では、関数タイプとしてイベント関数が選択され、コードにはサンプルコードの使用が選択されています。その他のイベント関数パラメーターは、デフォルト値のままにすることも、変更することもできます。


関数の詳細ページで、コード タブに移動し、関数のテスト をクリックします。
関数が正常に実行されると、レスポンス セクションで結果を確認できます。この例では、結果は
hello worldです。
手順 2:FC サーバーグループの作成
Application Load Balancer コンソールにログインします。 左側のナビゲーションペインで、サーバーグループ をクリックします。 上部のナビゲーションバーでリージョンを選択し、サーバーグループの作成 をクリックします。
サーバーグループの作成 ダイアログボックスで、サーバーグループタイプ として Function Compute を選択し、作成 をクリックします。

表示されるサーバーグループが作成されましたメッセージで、バックエンドサーバーの追加をクリックします。
バックエンドサーバーの追加 パネルで、作成した関数を選択し、OK をクリックします。
この例では、設定方法 は {value, select, service {サービス} arn {ARN}} other { {value} に設定され、関数名 には作成した関数が選択され、バージョンを指定 は [LATEST] に設定されています。{value, select, service {サービス} arn {ARN}} other { {value} 方式を使用する場合は、まず 関数の ARN を取得する必要があります。

手順 3:リスナーの設定
左側のナビゲーションペインで、 を選択し、管理する ALB インスタンスの ID をクリックします。
リスナー タブをクリックし、次に リスナーの作成 をクリックします。
「リスナーの設定」ステップで、リスナープロトコルとポートを設定し、次へ をクリックします。
この例では、[HTTP] プロトコルとポート [80] を使用します。その他の HTTP リスナーのパラメーター はデフォルト値のままにするか、必要に応じて変更できます。

サーバーグループ ステップで、サーバーグループ ドロップダウンリストから、お客様の [Function Compute] サーバーグループを選択し、次へ をクリックします。

設定の確認 ステップでは、設定を確認し、送信 をクリックします。
手順 4:ドメイン名前解決の設定
本番環境では、カスタムドメイン名を使用し、CNAME レコードを作成して ALB インスタンスのドメイン名にマッピングすることを推奨します。
左側のナビゲーションペインで、 を選択します。インスタンス ページで、ALB インスタンスの DNS 名をコピーします。
CNAME レコードを追加するには:
Alibaba Cloud DNS コンソールにログインします。ドメイン名を見つけ、Actions 列の 解決設定 をクリックします。
説明ドメイン名を Alibaba Cloud で登録していない場合は、まず 追加 して Alibaba Cloud DNS コンソールに登録する必要があります。
「設定」ページで、Add Record をクリックして CNAME レコードを設定し、OK をクリックします。
この例では、レコードタイプ を CNAME に、レコード値 を ALB インスタンスの DNS 名に設定します。その他の DNS レコードパラメータは、デフォルト値のままにするか、変更することができます。

手順 5:接続性のテスト
前述の操作を完了すると、ALB と Function Compute の間に接続が確立されます。 コマンドラインウィンドウを開き、curl <your custom domain name> コマンドを実行して、ALB と Function Compute 間の接続性をテストできます。
次の図に示すレスポンスは、ALB インスタンスがリクエストを Function Compute に転送し、関数を呼び出せることを示しています。

よくある質問
Function Compute の使用時に QPS が期待値より低くなるのはなぜですか?
アップグレードされた単一の ALB インスタンスは、最大 100 万 QPS のパフォーマンスを実現できます。ただし、バックエンドサービスが FC の場合、次の理由により FC サービスの QPS が想定を下回ることがあります。
単一の関数インスタンスの QPS:単一の関数インスタンスが同時に処理できるリクエスト数には上限があります。リクエスト数が現在のインスタンスで処理可能な最大 QPS を超えると、リクエストがキューに入るか、スロットリングされる場合があります。
FC のインスタンス上限:インスタンス上限は、同時に実行できるインスタンス数の最大値を指定します。インスタンス数が不足している場合、各インスタンスの QPS が高くても、全体の QPS は制限されます。
必要なインスタンス数の見積もり方法については、インスタンス上限とサービス QPS の関係をご参照ください。
ビジネス要件に基づき、インスタンスの同時実行数やインスタンスタイプと仕様などのパラメーターを設定します。必要に応じて、インスタンス数の上限を増やし、最適な QPS を達成することもできます。
関連ドキュメント
コンソールドキュメント
関連 API
CreateServerGroup:
ServerGroupTypeパラメーターをFcに設定して、Function Compute サーバーグループを作成します。AddServersToServerGroup:
ServerTypeパラメーターをFcに設定して、Function Compute バックエンドサーバーを追加します。RemoveServersFromServerGroup:
ServerTypeパラメーターをFcに、ServerIdパラメーターを関数の ARN に設定して、サーバーグループからバックエンドサーバーを削除します。DeleteServerGroup:指定したサーバーグループを削除します。