※ 本記事は、Rishikesh Palveによる”Ultra-fast serverless functions powered by GraalOS“を翻訳したものです。

2023年9月22日


Oracle Cloud World 2023では、新しいクラウド・ネイティブ・ランタイム・テクノロジであるGraalOSと、このテクノロジを使用してOracle Cloud Infrastructure(OCI)Functionsを強化する計画を発表しました。GraalOSを搭載したOCI Functionsでは、サーバーレス・ファンクションを数秒で起動でき、従来の機能と比較して、ほとんどのワークロードで最大50%少ないメモリーを使用できます。ファンクションの起動が高速になるため、プロビジョニングされた同時実行性を有効にする必要がなくなり、待機時間の短い呼出しが確実になります。最初は、GraalOSによって提供されるアクセラレーション機能をJava開発者が利用できるようになり、今後より多くの言語が計画されます。

OCI Functionsはサーバーレス・コンピュート・サービスであり、Functions as a Service (FaaS)とも呼ばれ、インフラストラクチャを管理することなく、イベントやリクエストに応じてアプリケーションを作成、実行およびスケーリングできます。支払いが発生するのは、使用したリソースに対してのみです。現在、OCI Functionsは、オープン・ソースのFn Project上に構築されたコンテナネイティブのサーバーレス・プラットフォームを提供し、コンテナとして機能をパッケージ化して実行します。

従来のサーバーレス機能を使用する主な課題の1つは、低速なコールド・スタートです。コールド・スタートは、関数が初回起動時または非アクティブ状態の一定期間後に起動された場合に発生します。Graal関数とも呼ばれる新しいGraalOSベースのOCI関数機能は、低速なコールド・スタートの問題に対処するための革新的なアプローチを採用しています。事前に関数をコンパイルして、より高速でより小規模なネイティブ実行可能ファイルにし、コンテナではなく、より効率的なGraalOSランタイムで実行します。この速度アップにより、Fnベースの関数よりも起動時間が大幅に短縮され、必要なメモリーが少なくなるため、Graal関数のパフォーマンスが向上します。

GraalOSとは?

GraalOSは、最新のプロセッサ・アーキテクチャを活用して、より少ないリソースでより高いパフォーマンスを実現する、より高速で効率的なクラウド・ランタイムです。高度なGraalVMネイティブ・イメージの事前コンパイル・テクノロジを使用して、スタンドアロン・ネイティブ・マシン実行可能ファイルにアプリケーションを構築します。これには、実行時処理に必要なコードのみが含まれます。ネイティブ実行可能ファイルから、未使用のクラス、メソッドおよびフィールドは除外されます。これらのネイティブ・マシン実行可能ファイルは、ジャストインタイムのコンパイルでJava仮想マシン(JVM)で実行されるJavaアプリケーションよりもはるかに小さく、起動速度が速く、使用するリソースが少なくなります。

GraalOSを利用したサーバーレス関数の利点

超高速コールドスタート

ファンクションのコールド・スタートでは、ランタイム環境の設定、ファンクション・イメージのプルおよび起動に数秒以上かかります。ファンクションがJavaで開発されている場合、JVMの起動時間はコールド・スタート・レイテンシに追加されます。コールド・スタートが遅いことを回避するために、プロビジョニングされた同時実行性を有効にして、指定した数の同時呼出しにランタイム環境を使用できるようにします。ただし、プロビジョニングされた同時実行性を使用すると、ファンクションが実行されていない場合でもコストが発生します。

Graal関数は、サーバーレス関数に対して事前にGraalVMコンパイルのメリットをもたらします。Graal関数は、コンテナ内のJVMで実行されるFnベースのJava関数と比較して、即時に起動するスタンドアロン・ネイティブ実行可能ファイルにコンパイルされます。ネイティブ実行可能ファイルも小さいため、レジストリからのプルに必要な時間が短縮されます。この機能により、Graal関数は一貫性のある1秒未満の呼出しレイテンシを提供し、プロビジョニングされた同時実行性の必要性を減らすことができます。

必要なメモリーが少ない

Graal関数は、起動が大幅に高速になるだけでなく、使用するリソースも少なくなります。Graal関数は、JVMに必要なメモリーおよびCPUリソースの一部のみを使用するネイティブ実行可能ファイルとしてデプロイされます。ほとんどのユースケースでは、Graal関数は、同じビジネス・ロジックを実行するFnベースのJava関数よりも50%少ないメモリーを使用します。

標準で提供されているクラウド・サービスとの統合

イベント、コネクタ・ハブ、データ統合、APIゲートウェイ、通知などのOCIサービスは、OCI Functionsの組込みトリガーを提供します。同じトリガーを使用してGraal関数を呼び出すことができます。組込みのトリガーを使用すると、Graal Cloud Native (GCN)を使用して、データベース、オブジェクト・ストレージ、シークレットなどのクラウド・サービスを簡単に統合し、それらをファンクションからコールできます。GCNを使用すると、開発者はファンクション・コードをすばやく記述し、ネイティブ実行可能ファイルに事前にコンパイルできます。独自のクラウド・プロバイダAPIと組み合わせることなく、クラウド・サービスをコードに統合するためのクラウドに依存しないAPIを提供します。GCN launcherを使用すると、クラウド・サービスを機能に統合するために必要なボイラープレート・コードを生成できるため、カスタム・コードを記述する必要がなくなります。

GraalOSとGraal Cloud Nativeを活用したOCI Functionsのメリットはすべて、機能を構築および実行するための最適なサーバーレス・プラットフォームとなっています。

今すぐ試してください!

早期アクセスまたはこの新機能がリリースされたときに通知を受け取るには、登録してください。