価格設定

Red Hat OpenShift を使用して Kubernetes で Spring を実行する

URL をコピー

Red Hat® OpenShift® では、Kubernetes ネイティブの Spring および Spring Boot アプリケーションの開発と実行ができます。

OpenShift で Spring を実際に体験する

Spring Framework は、分散型のマイクロサービス・アーキテクチャに基づいたアプリケーション構築に使用される最も一般的な Java フレームワークの 1 つです。Spring の Java ベースアプリケーション向けのプログラミングおよび構成モデルは「配管」に重点を置いているため、開発者は特定のデプロイメント環境と不必要に連携することなく、アプリケーションレベルのビジネスロジックに集中できます。Spring Boot を使用すると、アプリケーションを自己完結型の実行可能アプリケーションに容易にパッケージ化して設定できるようになり、Kubernetesコンテナとしてデプロイするのも容易になります。

Kubernetes ネイティブの Spring

Spring は、従来の Java フレームワークの多くと同様に、Kubernetes などのプラットフォーム上のコンテナで稼働していることを本質的に「認識」していません。Spring Framework には、Spring Boot、Spring Cloud、Spring Web などの分散型アプリケーションの構築とデプロイを容易にする多くのコンポーネントや、サービスディスカバリー、負荷分散、リクエストルーティングなどを行うその他のコンポーネントが多数含まれています。Kubernetes を使用すると、このようなコンポーネントの管理の多くを基盤となるコンテナ・プラットフォームに任せて、稼働中のプラットフォームとより効率的に統合するアプリケーションを作成できます。これらの最適化されたコードパスを使用して Spring アプリケーションを構築するのは、Spring と Kubernetes の組み合わせによって発揮される力を解き放つための鍵になります。

Red Hat のリソース

Spring アプリケーションは、Kubernetes と、Kubernetes にデプロイされた機能を利用して、Kubernetes での効率的な開発を可能にするために必要なクラウドサービスを提供します。これには、メッセージキュー、データベース、永続ストレージ、キャッシュなどのサービスが含まれます。

サービスレジストリ

マイクロサービス・アーキテクチャでは多くの場合、個々のサービスが動的にスケーリングされますが、プライベート、ハイブリッド、またはパブリッククラウドでは、ホストの数とアドレスを事前に予測したり静的に構成したりできるとは限りません。Kubernetes には、サービスのレプリケーションとスケーリングが中核機能として備わっています。つまり、クライアントはキャッシュを保持する必要がなく、サービスレジストリ自体の障害に対処する必要もありません。たとえば、Netflix Ribbon (Spring アプリケーションでよく使用される) は、コードに変更を加えずに、サービスレジストリの代わりに Kubernetes を使用するように宣言的に構成できます。

負荷分散

Spring アプリケーションでステートレスサービスへのクライアント呼び出しが行われると、サービスレジストリからサービスを検索し、利用可能なインスタンス間で負荷分散を行うことで高可用性 (HA) を維持します。Kubernetes は単一のサービスアドレスを提供し、呼び出しはこのアドレスで負荷分散され、適切なインスタンスにリダイレクトされます。サービス名は Kubernetes クラスタ内でこのクラスタ IP アドレスに転換され、ロードバランサーに到達するために使用されます。外部からの呼び出しでルーターを通過するのが望ましくない場合は、サービスに外部 IP アドレスを構成できます。

フォールトトレランス

マイクロサービスはその性質上高度に分散されているため、リモート呼び出しの数が増えるにつれてリモート呼び出しが失敗するリスクが高まります。長い間、サーキットブレーカーのようなフォールトトレランス・パターンの実装は、開発者が行わなければならないものでした。しかし、サービスメッシュを実装する Istio のようなプロジェクトは、この負担を軽減し、クラスタで実行されている Spring サービスの運用制御を大幅に強化できます。

外部化された構成

外部化された構成管理のソリューションは、構成ファイル、コマンドライン引数、および環境変数の典型的な組み合わせに代わる的確な代替手段を提供できます。これは、外部の変更に応じてアプリケーションの可搬性と柔軟性を向上させるために使用されます。Kubernetes ConfigMaps を使用して、個々のプロパティなどのきめ細かい情報、または構成ファイル全体や JSON BLOB などの大まかな情報を格納できます。これらはコンテナに構成データを挿入するメカニズムを提供します。@ConfigProperty などのアノテーションによって構成と Spring アプリケーションを切り離しつつ、構成から Spring アプリケーションへのアクセスを可能にできます。

分散トレースとアプリケーションのメトリクス

数多くのメリットを持つマイクロサービス・アーキテクチャですが、分析とトラブルシューティングが難しくなる可能性もあります。各ビジネスリクエストは、さまざまなレイヤーの個々のサービスに対して、およびそれらのサービス間で、複数の呼び出しを生成します。分散トレースは各サービス呼び出しをすべて結び付け、生成された一意の ID を介してそれらをビジネスリクエストに関連付けます。さらに、メトリクスを使用すると、Spring アプリケーションでアプリケーションレベルのデータを公開して、アプリケーションの状態をきめ細かく調査することができます。Jaeger などのトレースツールを Prometheus および Grafana とのメトリクススタックと組み合わせると、Kubernetes 上の Spring アプリケーションの監視とトラブルシューティングを行うための強固な基盤が得られます。

Spring アプリケーションが分散型サービスのコレクションへと進化するにつれて、これらのサービス間の通信とセキュリティの管理はより困難になります。Red Hat OpenShiftRed Hat Runtimes を組み合わせることで、業界をリードするコンテナと Kubernetes ハイブリッドクラウド・プラットフォーム上で Spring アプリケーションの大規模な構築と管理を行うために必要なツール、フレームワーク、ネイティブの Kubernetes 統合をSpring 開発者に提供できます。

Red Hat OpenShift を使用する Spring 開発者には多くのメリットがあり、たとえば、次のようなものが含まれます。

OpenShift で Spring Boot を使用すると、開発者は既存と新規両方の Spring アプリケーションで、「Kubernetes で Spring Boot を実行する」のと同様のエクスペリエンスを得られます。

  • Spring および Spring Boot を使用したクラウドネイティブ・アプリケーションの構築をサポートする
  • 従来のスタンドアローンのバッキングサービスに代わる Kubernetes 機能を統合する
    • 外部化された構成:Kubernetes ConfigMap と、Spring Cloud Kubernetes との統合
    • サービスディスカバリー:Kubernetes Services
    • 負荷分散:Kubernetes Replication Controller
    • 自動再起動:Kubernetes Health Probes と、Spring Actuator との統合
    • メトリクス:Prometheus、Grafana、および Spring Cloud Sleuth との統合
    • Istio と Jaeger Tracing を使用した分散トレース
  • Red Hat OpenShift の開発者用ツールにより、新しい Spring プロジェクトを迅速にスキャフォールディングし、任意の IDE で使い慣れた Spring API にアクセスし、Red Hat OpenShift にデプロイする

使い慣れた Spring API を使用し、Red Hat OpenShift および Red Hat Application Services で基盤となる Kubernetes プラットフォームとサービスのメリットを享受できます。

  • コンテナ環境での Java アプリケーション実行向けに最適化されたRed Hat ビルドの OpenJDK
  • Spring Cloud Kubernetes、Spring Security (Red Hat SSO を使用)、Spring Caching (Red Hat Data Grid を使用)、Spring Messaging (Red Hat AMQ を使用)、Spring Web、Spring Data などと統合している Red Hat Application Services を介して Kubernetes ネイティブのサービスを利用可能
  • Spring Boot と Red Hat Fuse (Apache Camel に基づく) を使用して、アプリケーションサービス全体に共通のエンタープライズ統合パターンを実装

Spring の知識を使用し、最新のテクノロジーによって先進的なアプリケーションを開発できます。

  • Camel-KKafka を使用したサーバーレスの Spring アプリケーション
  • 使い慣れた Spring API を使用して、Quarkus でコンテナネイティブ Java アプリケーションを構築
  • Kogito を使用したネイティブ Kubernetes のビジネスプロセス
  • Kubernetes Operator を使用することで、Halkyon 経由でネイティブ Kubernetes API を使用して Spring アプリケーションを作成およびリンクする手段を提供
ハブ

Red Hat 公式ブログ

Red Hat のお客様、パートナー、およびコミュニティのエコシステムに関する最新の情報を入手しましょう。

すべての Red Hat 製品のトライアル

Red Hat の無料トライアルは、Red Hat 製品をハンズオンでお試しいただける無料体験版です。認定の取得に向けた準備をしたり、製品が組織に適しているかどうかを評価したりするのに役立ちます。

関連情報

開発者が Red Hat OpenShift を選ぶ理由 | Red Hat

Red Hat OpenShift は、アプリ開発の複雑さを軽減するアプリケーション・プラットフォームです。開発者はどこでも、使い慣れたツールでアプリを構築し、デプロイできます。

プラットフォームエンジニアが Red Hat OpenShift を選ぶ理由

Red Hat OpenShift は、開発基盤の効果的な構築と管理を可能にするツールを提供し、プラットフォームエンジニアリングによる DevOps を支える協業プラットフォームです。

Red Hat OpenShift とKubernetes の違いをわかりやすく解説

Red Hat OpenShift は、Kubernetes ベースのエンタープライズ向けアプリケーション・プラットフォーム。エンタープライズ対応の各種ツールやサポートが追加されています。

Red Hat OpenShiftリソース

注目の製品

  • Red Hat OpenShift

    任意のハイブリッドクラウド・インフラストラクチャでアプリケーションの大規模な構築、モダナイ​ズ、デプロイを行うことを可能にする統合アプリケーション開発プラットフォーム。

  • Red Hat Application Foundations

    アプリケーションのビルド、デプロイおよび運用を支援するように設計されている一連のコンポーネ​ントです。Red Hat 3scale API Management、Red Hat Data Grid、Red Hat JBoss Web Server、Red Hat AMQ、オープンソース・テクノロジーの Red Hat ビルド、アプリケーション移行ツールキットを含みます。

関連記事