サーバレスに最適化したJava実行基盤「GraalOS」、オラクルが発表。Javaをネイティブバイナリにコンパイルし瞬時に起動
今回は「サーバレスに最適化したJava実行基盤「GraalOS」、オラクルが発表。Javaをネイティブバイナリにコンパイルし瞬時に起動」についてご紹介します。
関連ワード (場面、実行、高速等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
オラクルはJavaをサーバレス環境で実行するのに最適化した技術「GraalOS」を発表しました。
同時に、Oracle Cloudのサーバレス実行基盤である「Oracle Cloud Functions」でGraalOSの機能を提供することも発表されました。
Javaをコンパイルし、ネイティブバイナリを実行
GraalOSは名称にOSと付いているものの、LinuxやWindowsのようなOSではなく、Javaをデプロイする新たな技術とその基盤を指します。
具体的には、同社が提供しているJava実行環境である「GraalVM」のコンパイラを用いてJavaをコンパイルしてネイティブバイナリを生成し、それをサーバレス基盤にデプロイし実行することで、サーバレスアプリケーションの瞬時の起動と高速な実行などを実現するというものです。
参考:Javaのネイティブバイナリ生成可能なGraalVMの全機能が無料に、最適化コンパイラやG1ガベージコレクションを含む。本番環境でも利用可能
コールドスタートの課題が本質的になくなる
ネイティブバイナリを実行することで、コンテナ技術を用いた従来のサーバレス実行基盤のコールドスタートで生じていたような、例えばJavaVMの起動待ち時間などが本質的になくなります。
これにより、ほとんどすべての場面で数十ミリ秒以内にアプリケーションが起動すると説明されています。
コンテナ環境では必要だったOSやJavaVMに必要なメモリも不要になるため、消費メモリも最小限に抑えられ、実行速度も高速になるなどのメリットが得られるようになります。
サーバレスにおけるJavaは、JavaVMの起動時間がかかることに加えて、JITコンパイラが最適なバイナリを生成するまでの時間がかかることなどが課題でした。
例えばAWSはこの課題を解決しようと、スナップショット技術を用いたAWS Lambda SnapStartを2022年に発表しています。
参考:[速報]AWS Lambdaのコールドスタートを劇的に速くする「AWS Lambda SnapStart」発表。AWS re:Invent 2022
GraalOSはそうしたサーバレスにおけるJavaの課題を本質的に解決しようとする新たな技術といえます。
下記はGraalOSを発表したブログ「Introducing GraalOS」からの引用です。
GraalOS is a high performance serverless Java-based application deployment technology. It uses Oracle GraalVM Native Image to run your application as a native machine executable—taking full advantage of the latest x64 and AArch64 processor features available on Oracle Cloud Infrastructure (OCI). >
GraalOSは、高性能なサーバレスのJavaアプリケーションを実現するデプロイテクノロジーです。Oracle GraalVM Native Imageを使用してアプリケーションをネイティブな実行ファイルとして実行し、Oracle Cloud Infrastructure(OCI)で利用可能な最新のx64およびAArch64プロセッサを最大限に活用します。
オラクルはこのGraalOSの技術をOracle Cloud Functionsの新しい「Graal Functionタイプ」として搭載し、利用可能にするとしています。