AWSラムダ関数を加速する戦略


この記事では、AWS上のサーバーレスアーキテクチャから抜粋したPeter Sbarski氏の著作が、ラムダ関数のパフォーマンスを改善するために開発者が使用できる5つのコツを紹介します。

AWS上でサーバレスアーキテクチャを実行するITチームは、従来のサイロとサーバに代わるアプリケーションを大規模に構築できます。AWSは、コンプライアンス、セキュリティ、メンテナンス、および稼働時間のニーズを満たすサーバレス環境を開発者が作成するのに役立ちます。

クラウドプロバイダのサーバレスコンピューティングサービスであるAWS Lambdaは、より効率的なアーキテクチャを作成します。しかし、そのアーキテクチャ効率は、期待どおりに機能する機能に依存します。開発者は、コールド関数の実行にかかる時間など、AWSラムダ関数のテストを実行する必要があります。最初のテストでは、ラムダ関数はcoldです。2回目のテストでは関数(ウォーム関数)を利用し、実行時間を短縮します。

Peter Sbarski氏によるAWS Lambda関数を記述し、アーキテクチャ内の様々なパターンを認識するために取ることができるステップを紹介します。第6章、オーケストレータのラムダからのこの抜粋は、ラムダ内の関数がコンテナ内でどのように動作し、コンテナの再利用がAWSラムダ関数の継続時間をどのように減らすことができるかを見ています。

冷たく暖かいラムダ

AWSコンソールに簡単なHello World機能を作成して実行します。Hello Worldの青写真を使用して、コンソールでTestボタンをクリックすることで、簡単にこれを行うことができます。左下隅のサマリーの期間を見てください。

The time it takes to run a cold function is nearly 90 milliseconds.

関数がcoldである場合、接続時間(89.29ミリ秒)が遅くなります。

次にテストをもう一度実行し、要約の期間を確認します。

A warm function runs much quicker than a cold one.

機能がwarmの時の接続時間(0.48ミリ秒)。

両方の実行時間を比較すると、最初に関数を実行するのにかかる時間は、2回目の実行よりもずっと長いことが分かります。これは、前のセクションで説明したコンテナの再利用の結果です。初めて関数が実行されたとき(coldの時)、コンテナを作成して環境を初期化する必要があります。長い初期化時間は、複数の依存関係を持つ複雑な関数で特に顕著になります。コンテナの再利用と関数の再実行は、ほとんどの場合ずっと速くなります。

アプリケーションをより応対性のあるものにするためには、コールドスタート(機能が長時間実行されていないため、完全に初期化する必要がある場合)を減らすようにしてください。コールドスタートが多い場合は、いくつかの手順を試してパフォーマンスを向上させることができます。

  1. (スケジュールされたイベントを使用して)機能を定期的に実行して暖かく保つようにスケジュールします(http://amzn.to/29AZsuX)。スケジュールされたイベントを使用して機能をスケジュール設定し、定期的に実行して暖かく保ちます。
  2. 初期化とセットアップコードをイベントハンドラから移動します。コンテナが温かい場合、このコードは実行されません。
  3. ラムダ関数に割り当てられるメモリの量を増やします。CPU共有は、機能に割り当てられたメモリの量に基づいて(比例して)使用されます。AWSでは、「ラムダ関数に256MB割り当てると、128MBを割り当てた場合の2倍のCPUシェアを受け取る」(http://amzn.to/23aFKif)。関数のメモリとCPUの共有が増えるほど、初期化が速くなります。
  4. できるだけ多くのコードを減らしてください。不要なモジュールとrequires()import文を削除してください。インクルードして初期化するモジュールが少なくても、起動時のパフォーマンスが向上します。
  5. ほかの言語を試してみてください。Javaは最も長いコールドスタートを持ちます。これは将来変更される可能性がありますが、Javaを使用して長い間コールドスタートする場合は、ほかの言語を試してみてください。

Manning Publicationsは、AWS for SearchAWSリーダでSercerless Architecturesを39%割引しています。チェックアウト時にコード”serverlesstt”を入力して割引価格を受け取ります。

関連トピックス:

カテゴリー: AWS パーマリンク

コメントを残す

メールアドレスが公開されることはありません。

 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

この記事のトラックバック用URL