【51CTO.com クイック翻訳】概要 今日、サーバーレスはさまざまなクラウド アプリケーションで最も一般的なデプロイメント モデルになっています。この分野では、AWS Lambda が最も「ハードコア」なツールです。ほとんどの開発者は、Lambda を使用してクラウド関数コードをすばやく構築および実行した経験を多かれ少なかれ持っています。 ただし、AWS は、すべてのクラウドネイティブ メトリックを改善するために構成を自己学習して最適化する AI ロボットのように、スケーラビリティ、高可用性 (HA)、セキュリティ、パフォーマンスを管理および処理するわけではありません。したがって、開発者は設計時にコストとパフォーマンスのバランスをとる方法に特別な注意を払い、それを学ぶ必要があります。この記事では、Lambda の仕組みを理解して、Lambda を合理的かつ十分に使用する方法を紹介します。 高可用性 Lambda 関数を実行すると、実際にはデフォルトで外部ネットワークにアクセスできる VPC (仮想プライベートクラウド) 上で実行されます。ただし、同時に他のプライベート VPC にアクセスすることはできません。ここでの「外部ネットワークへのアクセス」とは、S3 や DynamoDB などの AWS サービスにのみアクセスできることを意味します。他の VPC で実行されている AWS リソース (RDS、Elasticsearch など) にアクセスすることはできません。 関数が Lambda によって管理される VPC 上で実行される場合、Lambda は VPC リージョン内の複数の AZ (アベイラビリティーゾーン) でのその可用性を担当します。しかし、ほとんどのエンタープライズ アプリケーション シナリオでは、RDS とその他の VPC リソースに同時にアクセスする必要があります。したがって、次の 2 つの側面を確保する必要があります。
同時実行性 AWS Lambda は独自の方法でスケーラビリティを実現しますが、限られたリソースに対しては、Lambda は次の同時実行制限に従います。
注意 - AWS は、特別に設定されていない関数リクエストを処理するために、少なくとも 100 の同時実行の予約されていない同時実行プールを常に保持します。つまり、最大 900 までしか割り当てることができません。 Lambda を専用 VPC で実行している場合はどうなりますか? この場合、関数の ENI (Elastic Network Interfaces) のスケーラビリティに基づいて、十分な IP アドレスを要求する必要があります。次の式を使用して、ENI のおおよその容量を見積もることができます。
で:
Lambda の同時実行性を設計するときは、DynamoDB、RDS などの他の統合サービスの制限も常に考慮する必要があります。これらのサービスが処理できる最大接続数に基づいて、関数の同時実行性の制限を調整する必要があります。 スロットリング 上記の「同時実行」で述べたように、関数イベントが急増して同時実行制限を超えると、Lambda は新しいリクエストを処理できなくなります。時間内に対処しないと、業務システムに影響が出てしまいます。
メモリとコストのバランス Lambda では、メモリと CPU は密接に関連しており、メモリを増やすと CPU の割り当ても増えるはずです。したがって、Lambda の実行時間を短縮する必要がある場合は、メモリと CPU を増やす必要があります。ただし、詳細な実験を行うと、一定の範囲内でメモリを単純に追加しても、実行時間が大幅に短縮されることなく、取得コストが増加するだけであることがわかります。 現在、最適なリソース構成を見つけるのに役立つオープンソース ツールは市場にほとんどありません。個人的には、さまざまな CloudWatch ログを使用してメモリ使用量と実行時間を監視し、対応する構成を調整することを好みます。メモリパラメータを微調整すると、AWS の全体的なコストに大きな影響を与える可能性があるため、これを使用して最適なバランスを見つけます。 パフォーマンス - コールド スタートとウォーム スタート Lambda を初めて呼び出すと、コードとすべての依存関係が S3 からダウンロードされ、コンテナが作成され、コードを実行する前に対応するアプリケーションが起動されます。このプロセス全体にかかる時間 (コードの実行を除く) は、コールド スタート時間と呼ばれます。コンテナが起動して実行されると、Lambda は後続の呼び出しのためにすでに初期化されており、アプリケーション ロジックを実行するだけで済みます。したがって、この期間はウォーム スタート時間と呼ばれます。 そこで質問ですが、コールド スタート時間を短縮するべきか、それともホット スタート時間を短縮するべきかということです。原則として、全体の実行時間の一部として、コールド スタートがほとんどの時間を占めるため、それを短縮する方法を見つける必要があります。ただし、実際には、高品質のコードを使用することでホット スタート時間を短縮できます。 次に、Lambda の全体的なパフォーマンスを向上させる方法について説明します。
例、元のコード:
縮小後:
醜化後:
インターネット上の多くの記事では、Lambda の実行環境にはすでに Nodejs および Python 用の AWS SDK が備わっていると述べられています。したがって、依存関係にそれらを追加する必要はありません。この機能はパフォーマンスの向上に役立ちますが、SDK ライブラリは定期的に新しいパッチでアップグレードされるという問題が隠れています。 Lambda のさまざまな動作に影響を与えないようにするには、独自の依存関係管理方法を採用する必要があります。 安全
テスト可能性 AWS Lambda を使用すると、ユーザーはクラウドでコードを実行できますが、ローカルでテストするにはどうすればよいでしょうか? Lambda は直接的なテスト URL を提供しませんが、起動するイベント ソース システムに基づいてテストを実行できます。
ブルー/グリーンデプロイメント Lambda に含まれるバージョニング機能とエイリアス機能を使用すると、関数の複数のバージョンを公開できます。同時に、各バージョンを別のコンテナで並行して呼び出すことができます。デフォルトでは、バージョン機能は $LATEST で表されます。開発プロセスでは、これらのバージョンを使用して、dev/UAT などの複数の環境を作成できます。ただし、新しいコードをアップロードするたびにバージョンが増加するため、お客様には最新バージョンが提示されます。したがって、本番環境ではバージョン管理を直接使用するのではなく、エイリアスを使用する必要があります。 エイリアスは関数の特定のバージョンを指すことができます。したがって、コードが変更され、更新されたバージョンがリリースされた場合でも、イベント ソースは引き続き同じエイリアスを指します。エイリアスを新しいバージョンにポイントする必要があるタイミングを管理するだけです。これにより、ブルー/グリーン展開が可能になります。いくつかのサンプル イベントを使用して、新しいバージョンをテストできます。正常に動作することを確認した後、Alias の方向を変更することでアクセストラフィックを切り替えることができます。同時に、問題が見つかった場合は、すぐに元のバージョンにロールバックできます。 モニター 個人的には、CloudWatch は Lambda とうまく連携し、Lambda 実行のさまざまな詳細をユーザーに提供すると思います。 Lambda は、リクエストの数、各リクエストの実行時間、エラーになったリクエストの数を自動的に追跡し、関連する CloudWatch メトリクスを公開できます。同時に、これらのインジケーターを使用して、さまざまな CloudWatch アラーム機能をカスタマイズすることもできます。 さらに、X-Ray を使用して、Lambda 実行におけるさまざまな潜在的なボトルネックを特定できます。関数の実行で時間が費やされている場所を視覚化しようとするときに非常に便利です。さらに、X-Ray は、プロセス全体に接続されているすべての下流システムを追跡するのに役立ちます。 その他の提案
要約する この記事では、Lambda を設計およびデプロイする際に参照して使用する価値のあるさまざまなベスト プラクティスについて説明しました。実際のアプリケーションのコーディング言語やユースケースに基づいて、業務システムのパフォーマンスを継続的に向上させることができます。もちろん、他のクラウド プラットフォームや Kubernetes のサーバーレス プラットフォームでも、これらのベスト プラクティスから学ぶことができます。これらの実践概要を、皆さん自身の成熟した本番環境とアプリケーションに適用していただければ幸いです。 原題: AWS Lambda ベストプラクティス、著者: Rajesh Bhojwani [51CTOによる翻訳。パートナーサイトに転載する場合は、元の翻訳者と出典を51CTO.comとして明記してください。 |
<<: 華雲データハイパーコンバージェンスが広東建築設計研究所のデジタル変革を推進
多くの初心者ウェブマスターにとって、SEO という言葉は非常に意味が深いものです。著者もまた草の根の...
昨夜、多くのウェブマスターがため息をついたかもしれません。「夜は長くて眠れない」。百度は昨夜、もう一...
自分のウェブサイトがなぜ Baidu に登録されないのか、特に Baidu ではなぜ登録に時間がかか...
張大宜、魏亜、李佳奇…次々と人気が出る神話が世間の注目を集める中、ネットセレブやKOL、ブロガーは「...
新規にオープンしたタオバオストアが直面する最大の課題は、トラフィックがない、知名度がない、顧客基盤が...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスインターネットが発展して...
[[397257]] SigNoz は、開発者が最小限の労力で迅速に観測可能性の目標を達成できるよう...
香港恒創科技は、香港データセンター、米国データセンター、CN2+BGPネットワークを活用した年末プロ...
Alpharacks ではクリスマス プロモーションを実施しています。メモリの少ない VPS で、年...
今回百度に収録されたウェブサイトはブログです。検索エンジンに公開されてから収録されるまでに合計半月か...
セキュリティベンダーは、Putty および WinSCP ソフトウェアの一部の中国版にバックドアが組...
stablehost の Web サイトは、同社のサービス評判と同様に、シンプルで信頼性の高い新しい...
2019年6月5日、世界環境デーの世界的なメインイベントが中国で開催されました。 「私は青空を守る戦...
Kubernetes をベースとした CI/CD というと、Jenkins、Gitlab CI、Dr...
zji.net は現在、台湾の cn2+bgp 回線に接続された台湾サーバー (物理マシン) と、香...