ログイン / 登録 アカウント

クラウドネイティブ・アプリケーション

Quarkus とは

Jump to section

Quarkus は、Java 仮想マシン (JVM) およびネイティブコンパイルのために作成されたフルスタックの Kubernetes ネイティブ Java フレームワークで、Java をコンテナに最適化し、サーバーレスクラウドKubernetes の各環境で効果的なプラットフォームとして使用できるようにします。

Quarkus は、一般的な Java 標準、フレームワーク、および Eclipse MicroProfile、Spring (こちらの Red Hat Summit 2020 トラックのセッションの中で実演)、そして Apache Kafka、RESTEasy (JAX-RS)、Hibernate ORM (JPA)、Spring、Infinispan、Camel などの多数のライブラリと連携して機能します。

Quarkus のディペンデンシーインジェクション (依存性の注入) ソリューションは CDI (コンテキストと依存性注入) をベースとし、拡張フレームワークを備えているので、機能の拡張、およびフレームワークの設定、起動、アプリケーションへの統合が可能です。拡張機能の追加は依存性の追加と同様に容易で、Quarkus ツールを使用できます。

また、正しい情報を GraalVM (Java および JavaScript を含むさまざまな言語で作成されたアプリケーションを実行する汎用仮想マシン) に提供してアプリケーションをネイティブにコンパイルします。


開発者向けの設計

Quarkus は、最初から簡単に使える設計で、わずかな設定または設定不要で動作する機能を備えています。

開発者は任意の Java フレームワークを選択してアプリケーションで使用でき、アプリケーションは JVM モードで実行することも、コンパイルしてネイティブモードで実行することもできます。

開発者の使いやすさを主眼として設計された Quarkus には、次の機能も搭載されています。

  • 開発者がコード変更の影響を即座に確認してすぐにトラブルシューティングできる、ライブコーディング
  • 組み込みのマネージドイベントバスによる統一された命令型およびリアクティブ・プログラミング
  • 統一された構成
  • ネイティブ実行可能ファイルの容易な生成

コンテナファースト

アプリケーションがパブリッククラウドでホストされていても内部でホストされている Kubernetes クラスタ内にあっても、高速起動や低メモリー消費などの特長は、全体的なホストのコストを抑制するために重要です。

コンテナファーストの理念に基づいて構築されており、メモリー消費量を抑えて起動時間を短縮できるよう、次の方法で最適化されています。

  • 最高レベルの Graal/SubstrateVM のサポート
  • Build-time メタデータ処理
  • リフレクション使用の削減
  • ネイティブイメージのプリブート

つまり、Quarkus でアプリケーションを構築すると従来の Java と比較してメモリー使用量が 10 分の 1 になります。起動時間は高速になり (300 倍程度)、いずれもクラウドリソースのコスト削減に大きく貢献します。


命令型コードとリアクティブなコード

Quarkus はアプリケーション開発時に、馴染みのある命令型コードとノンブロッキングでリアクティブなスタイルをシームレスに組み合わせています。

これは、命令型モデルの処理に慣れていてやり方を変えたくない Java 開発者にも、クラウドネイティブやリアクティブアプローチで作業する開発者にも便利です。

Quarkus 開発モデルは、どのようなアプリケーションを開発する場合でも自己適応できます。

Quarkus はサーバーレス・アーキテクチャ、マイクロサービス、コンテナ、Kubernetes、Function-as-a-Service (FaaS)、クラウドのすべてを考慮して作成されているので、これらからなる新しい領域で Java を実行する効果的なソリューションとなっています。

Quarkus とクラウドネイティブについてさらに詳しく知る