thumb_graalos_01

GraalOSをOracleが発表

Oracleは、2023年9月18日〜21日に開催された年次イベント「Oracle Cloud World 2023」の場で、新しいアプリケーション・デプロイメント・テクノロジー、「GraalOS」を発表しました。

GraalOSは、OracleのクラウドサービスであるOracle Cloud Infrastructure(OCI)Functionsを利用します。GraalOSはJavaをコンパイルし、ネイティブバイナリをデプロイ・実行することでサーバーレスアプリケーションの起動と実行を高速化します。

【参考】:Oracle Java Blog: Introducing GraalOS
【参考】:GraalOS
【参考】:Oracle CloudWorld 2023

Oracle Cloud Infrastructureとは

Oracle Cloud Infrastructureとは、Oracleが提供するパブリッククラウドサービスで、「Oracle Cloud」あるいは「OCI」と略します。サービスは、IaaS(Infrastructure as a Service)によるハードウェアの自由なカスタマイズ、PaaS(Platform as a Service)の両形態によってサービスが提供されます。

【参考】:Oracle Cloud Infrastructure(OCI)

OCIのサーバーレスサービス

他のパブリッククラウドサービス同様にOCIにおいても、サーバーレスのコンピューティングサービスが提供されています。サーバーレスサービスでは、物理的なサーバを気にすることなくコードを実行することができます。

サーバーレス環境を実現するために、FaaS(Functions as a Service)のアプリケーション開発環境を用います。

OCIでは、FaaSに基づくサーバーレス・コンピューティングサービスにより、サーバを気にせずにコード実行を行い、自動的なスケーリングなど柔軟性を高めることができます。

サーバーレスでは、イベントやリクエストに応じてアプリケーションを実行するため、実際に使用したリソースに対してのみ料金を支払い、コスト削減が可能です。

【参考】:OCI サーバーレスとは

OCI Functionsの概要

OCI Functionsは、OCIが提供するサーバーレスのコンピューティングサービスです。OCIの各サービスやSaaSアプリケーションとネイティブに統合されています。OCIのFunctionsはサーバーレスのFaaSを構成するもので、Fn Projectをベースとして、サーバーレス環境の構築を容易にするものです。

今回発表したGraalOSをベースとするOCI Functionsは、関数をより高速で小さなネイティブ実行ファイルに事前にコンパイルしておきます。コンテナの代わりに、より効率的なGraalOSランタイム上で実行し、これまでのコールドスタートの時間を大幅に短縮します。

【参考】:OCI Cloud Functions
【参考】:Fn Project

そもそもGraalとは

Graalとは、Oracleが開発するJavaクラウドネイティブアプリケーションのスタックを表します。「Graal Cloud Native」「GraalVM Native Image」「GraalOS」からなります。

Graal Cloud Nativeは、マルチクラウド・ネイティブ・アプリケーションの構築を容易にする、オープンソースのMicronautフレームワークモジュールのセットです。アプリケーションを効率的なネイティブ実行ファイルにコンパイルするGraalVM Native Image、クラウドをJVMのように使いやすくするGraalOSが含まれます。

【参考】:What is the Graal Stack?
【参考】:GraalVM
【参考】:Graal Cloud Native

GraalVMの概要

GraalVMは、Oracleが新たに開発したJavaのコンパイラです。Javaアプリケーションを拡張し、パフォーマンスの向上を図る、GraalのベースとなるJDKです。あらかじめコンパイルしておくことが可能であり、クラウドネイティブな環境でのデプロイメントに威力を発揮します。

OCIとの親和性が高く、無料で利用することができます。

【参考】:Oracle GraalVMとは
【参考】:Oracle GraalVM

GraalOSの概要と特徴

GraalOSは、OCIで利用可能な、高性能なサーバーレスJavaのアプリケーション・デプロイ技術です。GraalVM Native Imageを使用して、アプリケーションをネイティブ・マシンの実行ファイルとして実行します。

このGraalVM Native Imageを使用したアプリケーションのランタイム実行環境をGraalOSと呼び、その環境はサーバーレスでクラウド・コストを削減し、より高速で安価に運用することができます。

【参考】:Oracle Java Blog: Introducing GraalOS
【参考】:Oracle Cloud Infrastructure Blog: Ultra-fast serverless functions powered by GraalOS

特徴1「高速なコールドスタートが可能」

一般的なコールドスタートの場合、実行環境のセットアップ、関数イメージのプルや起動に数秒以上が必要です。Javaの場合はJVMの起動がさらに必要です。

GraalOSアプリケーションは、事前にサーバーレス関数をGraalVMで先行コンパイルし、即座に起動するスタンドアロンのネイティブ実行ファイルを準備することができます。このネイティブ実行ファイルはコンパクトであり、呼び出し時間が短縮できます。

小さなネイティブLinux実行ファイルの場合、数十ミリ秒で起動するため、実質的に低コストな高速コールドスタート環境を提供します。

特徴2「メモリ使用量の削減」

GraalOSアプリケーションは、GraalVMネイティブ・イメージの先行コンパイルの結果、大幅にメモリ使用量を削減します。OCI Functionsを含む多くのクラウドサービスでは、メモリ使用量が利用料金へ反映されるため、GraalOSによりコスト削減効果が高まります。

GraalOSベースのOCI Functionsは、最低限のメモリしか使用しないネイティブ実行ファイルです。Fnを用いる場合と比較しても、ビジネスロックの実行時には半分のメモリー使用量となります。

特徴3「クラウドサービスと統合したクラウドネイティブ環境」

OCIのEvent、Connector Hub、Data Integration、API Gateway、Notifications などの主要サービスでは、OCI Functionsのトリガー機能が組み込まれています。この仕組みを使用してGraal OCI Functionsを呼び出すことができます。

データベースやオブジェクトストレージなどと統合し、サーバーレスの恩恵を得ることができます。

ステートフルおよびステートレスマイクロサービスとFunctionsのサポートにより、GraalOSはクラウドネイティブアプリケーションに最適で、GraalOSとGraal Cloud Nativeを搭載したOCI Functionsはこれらのすべてのメリットを受けることができます。

OCI Functionsの今後の拡張計画

Oracle CloudWorld 2023では、GraalOSを用いたOCI Functionsの今後の拡張計画が明らかにされました。サーバーレスサービスのOCI Functionsは1秒以下のレイテンシで起動し、使用メモリを最大50%削減できるようになる見込みです。

GraalOSの完全なアプリケーションデプロイメントプラットフォームは、2024年リリースに向けた準備がされています。

GraalOSは、非常に高速なFunctions呼び出しが可能となり、プロビジョニングされたアプリケーション実行には最低限のリソース有効化で対応できるため、コスト的にもメリットがあります。当初はJava向けに提供されますが、将来的には多くの言語に対応するとしています。

これらの機能提供はベータ・プログラムを通じて提供されます。

【参考】:Oracle Cloud Infrastructure Blog: Ultra-fast serverless functions powered by GraalOS

GraalOSによりOCIのサーバーレスサービスの付加価値が高まります

Oracleは、GraalVMをJDK 21向けに提供することも明らかにしました。位置づけとしては、ハイパフォーマンスの高性能JDKとなります。これらの使用はOCIでは無料となり、Oracle Java SEサブスクリプション製品に含まれるものです。

GraalVMで採用するJavaのコンパイラ技術はアヘッド・オブ・タイム(AOT)と呼ばれ、あらかじめ実行ファイルを生成することでサーバーレスの性能向上に寄与します。

GraalOSはOCIのランタイム環境として提供され、クラウドサービスでのコード実行を手助けし、OCIのサーバーレスコンピューティングサービスの利便性をさらに高めるでしょう。