LLRT: サーバーレス関数のための低遅延JavaScriptランタイム
LLRT(Low Latency Runtime)は、Amazon Web Servicesから提供される、最小限のコールドスタートレイテンシを必要とするサーバーレス関数のために構築された実験的なJavaScriptランタイムです。従来のランタイムと比較して、起動時間とメモリ使用量を削減するために、Rustコア内のQuickJSエンジンでJavaScriptを実行します。主な機能には、超高速のコールドスタート、低メモリプロファイル、部分的なNode.js API互換性、およびAWS SDK v3の事前コンパイルされたサブセットが含まれます。サーバーレス開発者とクラウドアーキテクトは、LLRTから最も価値を得ることができます。
LLRTはコールドスタートのレイテンシをどのように削減しますか?
LLRTは、非必須のプラットフォーム機能を省略し、コンパクトな実行パスを使用することでコールドスタートをターゲットにしています。このプロジェクトはスクリプト実行にQuickJSを使用し、初期化オーバーヘッドを最小限に抑えるためにRustコアを使用しています。この組み合わせにより、著者たちはNode.jsより最大10倍速く起動することができると報告しています。この設計は、短命なサーバーレス関数にとって重要な初回呼び出しレイテンシを削減するために、プラットフォームの完全性を犠牲にしています。
LLRTは一般的なLambdaプラットフォームの要件に合致していますか?
このランタイムは、サーバーレス実行環境に合わせて主にLinux x86_64およびARM64を対象としています。公式のプリビルドバイナリはLinuxとmacOSに集中しており、これによりこれらのターゲットへのクラウドデプロイが簡素化されます。Windowsでのテストにはソースからのコンパイルが必要で、ビルドステップが追加されます。アーキテクトは、Lambda互換環境用のデプロイメントパッケージを準備する際に、Linuxターゲットのビルドを含めるか、提供されたmacOS/Linuxアーティファクトを使用する必要があります。
LLRTは本番のワークフローで採用しても安全ですか?
AWSはLLRTを実験的プロジェクトとしてラベル付けしているため、重要なサービスに採用するには検証が必要です。このプロジェクトはパフォーマンスに関して称賛されていますが、完全なNode.js標準ライブラリを実装していないため、ドロップインの置き換えにはなりません。チームは、LLRTベースの関数にライブトラフィックをルーティングする前に、現実的な負荷の下で統合テストと依存関係テストを実行し、サービス統合全体での動作を確認する必要があります。
既存の関数を移行するために追加のツールや専門知識が必要ですか?
移行にはビルドパイプラインとAPIチェックが必要です。LLRTはJavaScriptのみを実行するため、TypeScriptはデプロイ前にesbuildやswcなどのバンドラーでトランスパイルする必要があります。また、Node標準ライブラリの呼び出しを置き換える必要があるかもしれません。推奨される移行ステップは次のとおりです:
- TypeScriptをトランスパイルし、依存関係をバンドルする
- サポートされていないNode特有の呼び出しを置き換える
- ステージング環境で統合テストとコールドスタートテストを実行する
採用に関する実用的な推奨事項
LLRTは、ビルドステップを追加し、徹底的なステージングテストを実行することに慣れているチームに適しています。まずは、重要でないレイテンシに敏感な機能に使用し、より広範な展開の前にエンドツーエンドの動作を検証してください。ロールバックプランを保持し、各デプロイメント後に呼び出しメトリクスを監視して、回帰を早期に検出できるようにします。CIパイプラインに自信を持つまで、ランタイムを実験的なものとして扱ってください。推奨します。
高評価
- Node.jsよりも最大10倍速いコールドスタートが報告されています。
- 小さな Lambda 関数に適した低メモリフットプリント
- AWS SDK for JavaScript v3 のプリコンパイルされたサブセットが含まれています
- Rustで構築され、コンパクトな実行のためにQuickJSを使用
低評価
- 実験プロジェクトのステータスは、生産前に徹底的なテストを必要とします。
- 部分的なNode.js APIのカバレッジは、ドロップインの置き換えを妨げます
- 公式のプリビルドバイナリはLinuxとmacOSに焦点を当てています