Alibaba Cloud Function Compute (FC) をご利用の場合、Application Load Balancer (ALB) のバックエンドサービスとして使用してリクエストを処理する必要がある場合は、ALB インスタンスに Function Compute サーバーグループを追加できます。この構成により、ALB はリクエストを Function Compute に転送し、ご登録の関数を呼び出します。関数の実行後、Function Compute は結果をリクエスト元に返します。
概要
Alibaba Cloud Function Compute は、イベント駆動型かつフルマネージドのコンピュートサービスです。Function Compute を利用すると、サーバーなどのインフラストラクチャを管理する必要がなく、コードの記述とアップロードのみで済みます。Function Compute が必要な計算リソースを自動的に準備し、弾力的かつ信頼性の高い方法でコードを実行するとともに、ログクエリ、パフォーマンスモニタリング、アラート機能などの機能を提供します。Function Compute を活用することで、あらゆるタイプのアプリケーションおよびサービスを迅速に構築でき、実際に使用したリソース分のみ課金されます。
ALB がリクエストを受信すると、そのリクエストを Function Compute に転送し、関数呼び出しをトリガーします。関数の実行後、Function Compute は結果をリクエスト元に返します。
ALB では、Function Compute 3.0 および 2.0 をバックエンドサービスとして追加できます。
Function Compute を使用する前に、サービスの有効化が必要です。ただし、2024 年 8 月 27 日以降に Alibaba Cloud アカウントを登録し、実名登録を完了した場合、有効化せずに Function Compute を直接ご利用いただけます。
Application Load Balancer (ALB) と Function Compute (FC) は、Alibaba Cloud の内部ネットワーク上で安全に通信します。
主な特徴
サーバーレスアーキテクチャ対応:ALB のバックエンドサービスとして Function Compute を活用することで、サーバーレスアプリケーションを容易に構築し、運用コストを削減できます。
自動スケーリング:Function Compute はトラフィックに応じて計算リソースを自動的にスケールアップまたはスケールダウンし、ピーク時でも十分な計算能力を確保するとともに、オフピーク時にはリソースを節約します。
高可用性およびフォールトトレランス:ALB と Function Compute が連携して高可用性およびディザスタリカバリを実現し、アプリケーションの安定稼働を保証します。
適用範囲/利用シーン
マイクロサービス:ALB の高度なルーティング機能を活用して、リクエストを異なるマイクロサービス関数に分散させます。Function Compute は高同時実行数のリクエストに動的に対応し、システムの弾力性および信頼性を向上させます。
リアルタイムデータ処理:ALB がデータ処理リクエストを適切な関数に分散します。Function Compute は、わずか数行のコードと簡単な設定だけでリアルタイムでデータを処理します。
イベント駆動型アーキテクチャ:ALB がイベントトリガーによるリクエストを受信し、対応する関数に転送します。Function Compute はイベントを処理し、結果をデータベースに格納したり、他のサービスに送信したりすることで、動的なイベント駆動型処理を実現します。
画像および動画処理:ALB が画像または動画のアップロードリクエストを受信し、適切な処理関数に分散します。Function Compute は、タスクに応じて自動的にスケールする弾力的な計算リソースを提供し、タスクの効率的な完了を保証します。
制限事項
ALB インスタンスと関数は、同一のリージョン内に配置する必要があります。
Function Compute 型のサーバーグループには、1 つの関数のみを設定できます。
Function Compute 2.0 の場合、ハンドラータイプ が イベントハンドラー のときは、HTTP トリガーを設定して関数を ALB インスタンスに関連付ける必要があります。
利用例
ある電子商取引企業が、Alibaba Cloud のリージョン内で ALB インスタンスを展開し、自社プラットフォーム上の大量のユーザーからのリクエストを処理しています。事業およびユーザー数の拡大に伴い、動的コンテンツ生成、ユーザー行動分析、パーソナライズドレコメンデーションなどのタスクを柔軟かつ効率的に処理する仕組みが必要となっています。
このような要件を満たすため、同社は Alibaba Cloud の Function Compute サービスと ALB を組み合わせ、これらのタスクを効率的に処理し、ユーザー体験を大幅に向上させています。
前提条件
インターネット向けの ALB インスタンスが作成されています。
カスタムドメイン名を登録し、ICP 登録を完了している必要があります。
操作手順
ステップ 1:関数の作成
本トピックの手順は、Function Compute 3.0 コンソールで実行します。Function Compute 2.0 を使用する場合は、右上隅の Function Compute 2.0 に戻る をクリックして Function Compute 2.0 コンソールに戻り、関数を作成してください。
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、関数 を選択します。関数 ページで対象のリージョンを選択し、関数を作成 をクリックします。
関数を作成 ページで関数タイプを選択し、関数コードを構成してから、作成 をクリックします。
本トピックでは、イベント関数 の例を示します。コード にはデフォルトの サンプルコードの使用 を指定します。その他のイベント関数パラメーター については、デフォルト値をそのまま使用するか、必要に応じて変更してください。


関数の詳細ページで、コード タブをクリックし、関数のテスト をクリックします。
関数が正常に実行された後、レスポンス 領域に結果が表示されます。本例では、結果は
hello worldです。
ステップ 2:Function Compute サーバーグループの作成
Application Load Balancer コンソールにログインします。左側のナビゲーションウィンドウで、サーバーグループ を選択します。上部のナビゲーションバーから対象のリージョンを選択し、サーバーグループの作成 をクリックします。
サーバーグループの作成 ダイアログボックスで、サーバーグループタイプ に Function Compute を選択し、作成 をクリックします。

サーバーグループが作成されました ダイアログボックスで、バックエンドサーバーの追加 をクリックします。
バックエンドサーバーの追加 パネルで、作成した関数を選択し、OK をクリックします。
本例では、設定方法 に {value, select, service {サービス} arn {ARN}} other { {value} を指定し、関数名 には作成した関数を選択し、バージョンを指定 に LATEST を設定しています。ARN を使用して関数を構成する場合は、構成方法 に {value, select, service {サービス} arn {ARN}} other { {value} を選択してください。その際は、事前に 関数の ARN を取得 しておく必要があります。

ステップ 3:リスナーの構成
左側のナビゲーションウィンドウで、 を選択し、対象のインスタンスの ID をクリックします。
リスナー タブをクリックし、リスナーの作成 をクリックします。
リスナーの設定 ページで、リスナーのプロトコルおよびポートを構成し、次へ をクリックします。
本例では、HTTP プロトコルおよびポート 80 を使用します。その他のパラメーターについては、デフォルト値をそのまま使用するか、必要に応じて変更してください。詳細については、「HTTP リスナーの追加」をご参照ください。

サーバーグループ 構成ウィザードで、サーバーグループ のドロップダウンリストから Function Compute を選択し、対象のサーバーグループを選択して、次へ をクリックします。

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

ステップ 5:接続性のテスト
上記の操作を完了すると、ALB と Function Compute の間で接続が確立されます。コマンドラインウィンドウを開き、curl <カスタムドメイン名> コマンドを実行して、ALB と Function Compute の接続性をテストできます。
以下の図に示すような応答メッセージが受信された場合、ALB がリクエストを Function Compute に転送し、関数を呼び出せていることを示します。

よくある質問
Function Compute をバックエンドに使用した場合、QPS が低くなるのはなぜですか?
単一の ALB インスタンスは最大 100 万 QPS を処理できます。ただし、Function Compute をバックエンドサービスとして使用する場合、以下の理由により、全体の QPS が期待通りにならないことがあります:
単一 Function Compute インスタンスの QPS:単一のインスタンスは、同時に一定数のリクエストしか処理できません。リクエスト量が現在のインスタンスの最大 QPS を超えると、リクエストがキューに積まれたり、スロットルされたりすることがあります。
Function Compute のインスタンス制限:インスタンス制限とは、同時に実行できるインスタンスの最大数を定義するものです。利用可能なインスタンス数が不足している場合、単一インスタンスの QPS が高くても、全体の QPS が制限されます。
最大必要なインスタンス数の見積もり方法については、「インスタンス制限とサービス QPS の関係」をご参照ください。
ご自身のビジネス要件および
参照情報
コンソール操作
ALB の情報:
Function Compute の情報:
API リファレンス
CreateServerGroup:パラメーター
ServerGroupTypeをFcに設定して Function Compute サーバーグループを作成します。AddServersToServerGroup:パラメーター
ServerTypeをFcに設定して Function Compute のバックエンドサーバーを追加します。RemoveServersFromServerGroup:パラメーター
ServerTypeをFcに、ServerIdを関数の ARN に設定して、サーバーグループからバックエンドサーバーを削除します。DeleteServerGroup:指定されたサーバーグループを削除します。