サーバーレス アーキテクチャの普及によりクラウド コンピューティングの発展が促進され、ロード バランサは高可用性、自動拡張、柔軟な分散を実現するための重要なコンポーネントになりました。 AWS Elastic Load Balancer (ELB) は、分散環境でのトラフィック分散をインテリジェントに管理し、アプリケーションのパフォーマンスと安定性を確保できる、サーバーレスアーキテクチャ向けの信頼性の高いソリューションを提供します。 ELB は、AWS Lambda や API Gateway などのサーバーレス サービスとシームレスに統合することで、開発者に効率的かつスケーラブルな負荷管理方法を提供します。
Elastic Load Balancer (ELB) とは何ですか?
ELB は、AWS が提供する負荷分散 (LB) サービスのセットです。これらにはクラシックロードバランサー、ゲートウェイロードバランサー、ネットワークロードバランサそしてアプリケーションロードバランサ。
各LBは異なるユースケースをカバーします
- クラシック ロードバランサEC2ベースのアーキテクチャに適した選択肢
- ゲートウェイロードバランサーVPC内のサードパーティの仮想マシンを支援できます
- ネットワークロードバランサUPDベースのゲームやIoT接続などの高性能な低レベルネットワークに焦点を当てる
- アプリケーションロードバランサHTTPプロトコルを使用するソフトウェア向けの高度なソリューション
サーバーレス アーキテクチャの場合、すべてのサービスが HTTP API を使用するため、ALB が最適な選択肢となります。したがって、この記事では ALB に焦点を当てます。
アプリケーション ロード バランサー (ALB) とは何ですか?
ALB は HTTP に重点を置いているため、プロトコルの一部を使用してキャッシュに関する決定を下すことができ、Lambda の実行時間を節約できます。つまり、Lambda 関数はキャッシュ ヘッダーを正しく設定する必要があります。
価格
ALB は Lambda と統合できますが、ALB はサーバーレス サービスではありません。従量課金制モデルではないため、使用していない時間に対して料金を支払う必要はありません。ただし、サービスのトラフィックが一定かつ安定している場合は、長期的には API Gateway よりも安価になる可能性があります。
制限
さらに、API Gateway では接続数が 10,000 に制限されていますが、ALB には制限がありません。これは、よりマイナーな機能を備えた API ゲートウェイです。機能はシンプルですが、パフォーマンスは優れています。大規模に展開したい場合、ALB が唯一の解決策となる可能性があります。
権限
ALB は、従来の「パブリック HTTP エンドポイントの前にストラップを置く」ようなものに似ています。したがって、Lambda と統合しますが、IAM ベースの権限は提供されません。これをサーバーレス関数で処理する必要があります。
変身
この従来の負荷分散アプローチでは、ALB はリクエストとレスポンスの変換を行うことができません。単にデータをパイプラインに渡すだけです。繰り返しになりますが、これにより ALB の柔軟性は API Gateway よりも低くなり、より多くの作業が Lambda に移行します。
マルチリージョン
ALB は一度に 1 つのリージョンにデプロイします。繰り返しますが、これはサーバーレス サービスではないため、さらに作業を行う必要があります。複数のゾーン間でトラフィックを分散するには、Route53 の DNS ベースの分散が必要です。
信頼性またはコスト構成
Lambda ターゲットで ALB を使用すると、Lambda は自動的にスケーリングされるため、通常は優れた信頼性が得られます。すぐに使用できる信頼性以上のものが必要な場合は、ALB を複数のリージョンにデプロイし、Route53 の背後に配置する必要があります。
コストに関して言えば、Lambda が主な原因となる可能性があります。すべてのリクエストを大容量メモリ構成の Lambda 関数にルーティングすると、コストがすぐに高くなる可能性があります。したがって、サーバーレスのベストプラクティスに従い、Lambda 関数を小さく目的指向に保ってください。可能な限り、ALB リスナーがメモリ フットプリントの小さい関数を使用するための条件を設定します。
ヘルスチェックのベストプラクティス
EC2 ターゲットは簡単に過負荷になる可能性がありますが、Lambda ターゲットには固有の自動スケーリング機能があるため、より多くのバッファがあります。サーバーレス システムでも、問題が発生する可能性があります。
AWS は、Lambda ターゲットの ALB ヘルスチェックをデフォルトで無効にしているため、ここでオプトインする必要があります。
一部の問題は Lambda にプッシュされた誤ったコードによって発生する可能性がありますが、ほとんどの問題は関数で使用されるアップストリーム サービスから発生します。したがって、ヘルスチェックをパイプし、アップストリーム サービスからの結果で応答するように Lambda を設定します。
何か問題が発生した場合、唯一の迅速な解決策は、Route53 に次のリクエストを別のデプロイメントにルーティングするように指示することです。
AWS でのログ分析
AWS では、Amazon Athena を使用して ALB ログを分析できます。 Athena はサーバーレス クエリ サービスです。クエリ ログをアクティブ化して S3 に保存し、Athenas SQL クエリを使用して調査する必要があります。
AWS Elastic Load Balancer はサーバーレスアーキテクチャにおいて重要な役割を果たし、自動化されたトラフィック管理、柔軟なスケーラビリティ、他の AWS サービスとの緊密な統合を通じて、開発者がさまざまなビジネスニーズを簡単に満たせるよう支援します。高同時リクエストの処理やリソース使用率の最適化など、ELB はサーバーレス アーキテクチャに信頼性の高いサポートを提供できるため、開発者はコア ロジックの実装と革新に集中できます。