Quarkus 対 Spring Boot
LogicMonitor + Catchpoint: 自律型ITの新時代へ
最新のブログ、ホワイトペーパー、電子ガイドなどを直接受信ボックスにお届けします。
ビデオはまもなく始まります
現代のアプリケーション開発とアーキテクチャにおいては、製品に必要なあらゆる機能を備えたモノリシックな大規模アプリケーションから、特定の目的を持つ多数の小規模サービスへと大きな転換が起こっています。この流れを受けて、マイクロサービスフレームワーク(マイクロフレームワーク)の時代が到来し、このパラダイムにおけるアプリケーションのプロトタイプ作成、構築、設計が容易になりました。
Quarkus と Spring Boot を比較すると、それぞれがマイクロサービス アプリケーション開発者としての目標を達成するのに役立つ独自の強みを備えていますが、どちらを選択すべきでしょうか。
クォークス は、GraalVM と HotSpot 向けに調整された Kubernetes ネイティブ Java フレームワークであり、最高の Java ライブラリと標準から作成されています。 Quarkus の目標は、Java を主要なプラットフォームにすることです。 Kubernetes およびサーバーレス環境。 また、開発者に統合されたリアクティブおよび命令型プログラミング モデルを提供し、より広範囲の分散アプリケーション アーキテクチャに最適に対処します。
Quarkus の注目すべき機能には次のようなものがあります。
Quarkus は高速で効率的なクラウドネイティブのデプロイメント向けに設計されており、Spring Boot はエンタープライズ規模のアプリケーションに高度な機能と安定性をもたらします。
春のブーツ は、マイクロサービスの作成に使用されるオープンソースのJavaベースのフレームワークです。 これはPivotalTeamによって開発され、スタンドアロンで本番環境に対応したSpringアプリケーションを構築するために使用されます。 これは、マイクロサービスアーキテクチャで一般的に選択されるアプリケーションフレームワークです。
以下に、Spring Boot の注目すべき機能をいくつか示します。
LogicMonitorのメトリックパイプライン(環境内でQuarkusの概念実証を構築した場所)は、次のテクノロジスタックに展開されます。

私たちのレガシーパイプラインはSpringとTomcatに基づいていました。 このフレームワークの選択について、メンテナンスとデプロイメントを継承したときに気に入らなかったことがいくつかありました。
Quarkusに加えて、他のXNUMXつのJava Micro-Frameworks、Helidon.ioとMicroNautを調査しました。
MicronautはおそらくQuarkusに最も匹敵しました。 フレームワークの宣言型の性質は非常に似ており、ここで頻繁に使用するテクノロジーをすぐにサポートしていました。
Micronautを使用しなかった主な理由は、それがEclipseマイクロプロファイルフレームワークに基づいていたのではなく、自家製のものであったためです。 QuarkusはRedhatに支えられており、マイクロプロファイルに基づいているため、コミュニティのサポートとドキュメントに関してより良い状況にあると感じました。
ヘリドンもトップ候補のXNUMXつでした。 APIフレームワークはJAX-RSに基づいており、一般的に、物事を稼働させるにはまだあまりにも多くの定型文が必要であると感じました。 多くの同様のテクノロジーがサポートされていましたが、十分に統合されていませんでした。
パイプライン内のアプリケーションのXNUMXつのPOCの構築に着手したとき、成功基準をレイアウトする内部ドキュメントを設定しました。

APIの設計と実装は非常に簡単でした。 Quarkusと一緒に行きました 簡単な実装 そして、RFCに準拠しており、インフラストラクチャの他のアプリケーションですでに使い慣れているJERSEYフレームワークに類似していることがわかりました。 ただし、既存のアプリケーションがリクエストを認証する方法(自家製のリクエストヘッダートークンに基づく)との下位互換性の問題のため、組み込みの認証実装を使用できませんでした。

Quarkusフレームワークについて私たちが本当に気に入った点のXNUMXつは、Kubernetes Liveness / Readinessプローブのセットアップがいかに簡単かということでした。 私たちがしなければならなかったのは、依存関係(smallrye-health)を追加し、 の監視、そして私たちはカフカの活力/準備プローブを準備しました。 アプリケーションが正しく構成されていることを確認するために独自のヘルスチェックを追加することは、クラスに注釈を付け、単純なインターフェイスを実装するのと同じくらい簡単でした。 次に、「/ health」(活性と準備状態の両方のチェック結果を取得)、「health / live」、および「health / ready」エンドポイントでプローブが使用可能になりました。
プローブに加えて、私たちはまた本当に好きでした CDIBeanインジェクション。 これは、SpringのDI実装よりも簡単に概念化でき、通常よりもはるかに迅速に構築できることがわかりました。 ただし、メトリクスを公開するには、それらのメトリクスをBeanを定義するアノテーションを持つクラスから公開する必要があることに注意してください。 これはマイクロプロファイルの仕組みの一部であり、後でメトリックについて詳しく説明します。
構成に関して、Quarkusはプロファイルと構成をサポートしています。 複数の情報源。 LogicMonitorでは、中央構成サービスを使用しているため、最終的にはに基づいてシステムプロパティを設定しました。 熱心にインスタンス化されたBean そのサービスの構成設定をポーリングしました。 @ConfigPropertyアノテーションの大きなユースケースはありませんでした。これは、ほとんどの構成を実行時に簡単に変更できるようにするためであり、通常、これらはBeanのインスタンス変数で定義されます。 POCアプリのほとんどのBeanは@ApplicationScopedであったため、構成値を静的にする必要がありました。
Quarkusは、SmallRye ReactiveMessagingフレームワークを通じてKafkaをサポートしています。 Kafka Producerのこのフレームワークでは良い経験がありましたが、KafkaConsumerアプリケーションではそうではありませんでした。 Kafka Producerは、命令型の使用のために設定するのはかなり簡単です。 このガイド。 プロデューサーのデフォルトの構成値に関して、私たちに多くの問題を引き起こした(そして数時間のトラブルシューティングの頭痛の種)ことに関して、ここで注意すべきことがいくつかあります:

Kafka Consumerに関しては、XNUMXつの主要な領域でかなりの問題が発生しました。


Quarkusは、JMXを介した既存のJavaモニタリング(すべてのガベージコレクション、ヒープ、スレッド、稼働時間のデータソースが適用され、データが自動的に収集された)と非常にうまく連携しました。 また、独自のアプリケーションメトリックを簡単に定義することもできました。 私の意見では、これはアプリの最大の利点のXNUMXつでした。つまり、マイクロプロファイルメトリックを使用することです。 単純なアノテーションを使用して、時間とカウントの両方の操作を行うことができました。これにより、これらのメトリックが「/ metrics / application」エンドポイントから即座に利用可能になります。

@Timed Annotationは、最小、最大、平均、スループット、パーセンタイルなど、大量の情報を提供します。 このスクリーンショットは、 フォールトトレランス機能 あまりにも(ちなみに独自のメトリックを公開しています)。 それと一緒に スケジュールされたタスク 発見するのは良い楽しみでした(補足:スケジューラーの初期遅延が構成可能ではないことがわかったので、機能要求を入れて、XNUMX週間以内に修正されました!)。 さて、メトリックに戻ります。
ゲージとカウンター、非常に簡単:

QuarkusへのログインはJBossを介して行われ、logging.propertiesファイルを追加すると次のことが可能になりました。 物事を調整する 問題ない。
POCとインフラストラクチャ全体への展開の最後に、リソースの使用率からフレームワークでのプログラミングの容易さまで、明示的および暗黙的な改善が行われました。 これまでのところ、Quarkusにこだわっています!
LogicMonitorは、完全に自動化された唯一の製品です。 クラウドベースのインフラストラクチャ監視プラットフォーム エンタープライズITおよびマネージドサービスプロバイダー向け。 XNUMXつの統合ビュー内で、ネットワーク、クラウド、サーバーなどのフルスタックの可視性を獲得します。
© LogicMonitor 2026 | 無断複写・転載を禁じます。 | ここで言及されているすべての商標、商号、サービス マーク、およびロゴは、それぞれの会社に帰属します。