AWS LambdaがNode.js 8.10に対応。非同期処理を簡潔に記述できるasync/awaitサポート、新インタプリタ&コンパイラで省メモリかつ高速に
Node.js 8.10に対応したAWS Lambdaでは、非同期処理を簡潔に記述できる新しい構文のasync/awaitをサポートし、JavaScriptエンジンのV8に搭載された「Ignition」インタプリタと「Turbofan」JITコンパイラの組み合わせで省メモリかつ高速な実行を実現した。
AWS LambdaがNode.js 8.10に対応したことが発表されました(AWSブログの紹介記事、下記はアナウンスのページ)。
AWS Lambdaは、サーバの起動や終了、負荷に応じてサーバ数を増減させるといったサーバの管理や運用をクラウドが自動的に行うなど、サーバのことを意識せずにプログラマがアプリケーションを実行できる、いわゆる「サーバレスコンピューティング」や「サーバレスアーキテクチャ」と呼ばれるアプリケーション実行環境を実現するサービスです。
AWS Lambdaは、このサーバレスアーキテクチャのサービスとしてもっとも普及しているサービスの1つ。
今回AWS LambdaがNode.js 8.10に対応したことで、ECMAScript 2017から採用された新しい構文であるasync/awaitが利用可能になりました。
また、Node.js 8.10に搭載されているJavaScriptエンジンの新しい「Ignition」インタプリタと「Turbofan」コンパイラによって、これまでよりもり省メモリかつ高速にコードが実行できるようになっています。
async/awaitで簡潔に非同期処理を記述可能に
非同期処理を記述したコードは、コードが書かれた順番に処理が進んでいくとは限らないなどの理由から、一般にコードが複雑で可読性が低くなりがちです。AWS Lambdaが対応したNode.js 8.10でサポートされたasync/awaitは、こうした複雑なコードをより簡潔に記述するための新しい構文です。
また、Node.js 8.10では、JavaScriptエンジンの「V8 Release 5.9」から搭載された「Ignition」インタプリタと「Turbofan」JITコンパイラが搭載されています。
このインタプリタとJITコンパイラの組み合わせでは、プログラムの実行開始時、まだJITコンパイラのTurbofanから最適化されたバイナリコードが生成されない初期段階では、Ignitionインタプリタによって小さなメモリオーバーヘッドでコードを実行します。
そしてコードを解析していたTurbofanが最適化されたネイティブコードを生成できるようになった段階でIgnitionからTurbofanへと処理を受け渡し、そこからはTurbofanによって生成されたネイティブコードによる高速な実行へ移行します。
これにより、それまでNode.jsに採用されていた「Crankshaft」JavaScriptエンジンよりも省メモリかつ最大20%程度高速にJavaScriptのコードを実行できるようになっています。
「V8 Release 5.9」はWebブラウザのChrome 59以降にも搭載されています。
カテゴリ クラウド
タグ AWS , サーバレスアーキテクチャ
あわせてお読みください
- IBMもAWS Lambda対抗のサーバレスアーキテクチャ提供へ。イベントドリブンでNode.jsとSwiftに対応した「OpenWhisk」をBluemixで提供。コードはオープンソースに
- 伊藤直也氏が語る、サーバーレスアーキテクチャの性質を解剖する(前編)。QCon Tokyo 2016
- GoogleがAWS Lambda対抗「Google Cloud Functions」を公開。Node.jsによるイベントベースのJavaScript環境。サーバレスアーキテクチャ普及へはずみ
- IBMのサーバレスコンピューティング環境「OpenWhisk」がBluemix上で正式サービスに。Dockerイメージも実行可能
- サーバレスアーキテクチャのAWS Lambda、Go言語とC#のサポートを開始
高収入なIT資格はどれ? 1位 公認ITガバナンス、2位 AWSソリューションアーキテクト、3位 プロジェクトマネジメントプロフェッショナル。米グローバルナレッジ調べ