AWS、高速起動にこだわった軽量なJavaScriptランタイム「LLRT」をオープンソースで公開 AWS Lambdaでの利用にフォーカス
この記事は新野淳一氏のブログ「Publickey」に掲載された「AWS、高速起動にこだわった軽量なJavaScriptランタイム「LLRT」(Low Latency Runtime)をオープンソースで公開。AWS Lambdaでの利用にフォーカス」(2024年2月15日掲載)を、ITmedia NEWS編集部で一部編集し、転載したものです。
米Amazon Web Services(AWS)は、実験的な実装としてサーバレス環境のAWS Lambdaで使うことにフォーカスした軽量なJavaScriptランタイム「LLRT」(Low Latency Runtime)をオープンソースで公開しました。
LLRTはRustで開発され、JavaScriptエンジンにはQuickJSを採用しています。
LLRTの最大の特徴は、現在のJavaScriptランタイムにおいて性能向上のために搭載されているJITコンパイラをあえて搭載せず、よりシンプルで軽量なランタイムとして実装することで高速に起動することにこだわっている点です。
これにより(Node.jsやDenoやBunなどの)既存のJavaScriptランタイムと比較して起動速度が10倍高速で、AWS Lambdaでのコスト低減効果が最大で2倍になっていると説明されています。
AWS Lambdaでは、小さな関数となったJavaScriptコードが何らかのイベントをトリガーにして起動され、処理が終わればすぐに終了する、という動作を何度も繰り返します。
AWS Lambdaの料金はランタイムの起動にかかる時間も含まれるため、ランタイムの起動が遅いと、何度も起動と終了を繰り返すたびにその起動にかかる時間分の料金が発生してしまいます。そのためAWS Lambdaにおけるランタイムは、より高速に起動することが重視されます。
一方で、コードの実行そのものは短時間ですぐに終了してしまうため、コードの実行速度の優劣がそこまで大きなコストの差にならない可能性が高いわけです。
JITコンパイラは複雑でランタイムを肥大化させてしまう
LLRTがこのようなAWS Lambdaでの使用にフォーカスした結果、JITコンパイラを搭載しないという決断に至った背景についてはREADMEの中で次のように説明されています。少し長いのですが、分かりやすい内容ですのでそのまま引用します。
Node.js, Bun, and Deno represent highly proficient JavaScript runtimes. However, they are designed with general-purpose applications in mind. These runtimes were not specifically tailored for the demands of a Serverless environment, characterized by short-lived runtime instances. They each depend on a (Just-In-Time compiler (JIT) for dynamic code compilation and optimization during execution. While JIT compilation offers substantial long-term performance advantages, it carries a computational and memory overhead.
Node.js、Bun、そしてDenoは、非常に高性能なJavaScriptランタイムですが、これらはさまざまな用途のアプリケーションを念頭に置いて設計されています。
つまりこれらのランタイムは、ごく短時間だけ実行されるインスタンスを特徴とするサーバレス環境の要求に合わせて特別に作られてはいないのです。
これらのランタイムはそれぞれ、実行中のコードの動的なコンパイルと最適化をJITコンパイラに依存しています。JITコンパイルは、長時間に実行されるアプリケーションでは性能面で非常に有利ですが、計算量とメモリ消費の点で大きなオーバーヘッドを伴います。
In contrast, LLRT distinguishes itself by not incorporating a JIT compiler, a strategic decision that yields two significant advantages:
A) JIT compilation is a notably sophisticated technological component, introducing increased system complexity and contributing substantially to the runtime's overall size.
B) Without the JIT overhead, LLRT conserves both CPU and memory resources that can be more efficiently allocated to code execution tasks, thereby reducing application startup times.
これらのJavaScriptランタイムとは対照的に、LLRTはJITコンパイラを組み込まないことで次のような差別化を図っています。
A)JITコンパイルは非常に高度な技術であるためシステムの複雑性を増大させ、ランタイム全体のサイズを拡大させてしまう。
B)JITコンパイラのオーバーヘッドをなくすことで、LLRTはCPUとメモリのリソースを節約し、効率的にコードを実行する処理に割り当ててアプリケーションの起動時間を短縮できる。
LLRTはNode.jsのAPI仕様に基づいているため、Node.jsで動作するコードからの移行は容易とされていますが、完全互換ではなく全てのAPIが実装されているわけではないため、詳しい互換性についてはAPIドキュメントなどを参照する必要があります。
LLRTは実験的実装としてベータ版の状態ですが、GitHubのREADMEにはAWS Lambdaでの試し方なども載っているため、興味のある方は参照してみてください。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
関連記事
こんなメディアも見られています
ITmedia NEWSに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
SpecialPR
本日の新着記事
アクセスランキング
-
1
「菜の花がおかしい」――イラストレーター制作うたうマラソン大会ポスターに指摘相次ぐ 事務局がAI使用明かす【訂正あり】
-
2
「ペンギンを返して」 Suica新キャラ候補3案公開でSNSに戸惑いの声 一般投票は8日から
-
3
くら寿司、10%割引の“適用漏れ”を謝罪 レシート持参で返金へ ちいかわコラボのお詫び施策
-
4
「iPhone Duo」発表 Apple初の折りたたみスマホ 36万4800円から
-
5
iPhone 18シリーズ発表、今年はPro・Pro Maxのみ なんと“無印”なし 価格は21万9800円から
-
6
幻の「ちいかわ」コラボ第3弾皿、捨てちゃうの? くら寿司に聞いてみた
-
7
藤井風のリサイタル、公式サイトがインターネット老人会すぎると話題 公民館のチラシみたいだけど東京ドーム開催
-
8
「ランジェリーパープルじゃない」「買おうと思ってたのに」 iPhone 18 Pro/Pro Maxの色に落胆の声
-
9
新型iPhone「高すぎ」「買えない」悲鳴……1台約22~57万円 「換算レート円安すぎ」の声も
-
10
「ペンギンを返して」→「3匹全部採用して」 批判殺到のSuica新キャラ、ファンアートが空気を変えた? SNSの声
ITmedia NEWS SNS
インフォメーション
注目情報をチェック
ITmediaNEWSをフォロー
あなたにおすすめの記事PR