Jump to section

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

URL をコピー

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

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 OpenShift Operator とは

Red Hat OpenShift Operator は、Kubernetes ネイティブのアプリケーションのインスタンスの作成、構成、および管理を自動化します。

記事

Red Hat OpenShift Serverless を選ぶ理由

Red Hat OpenShift Serverless は Kubernetes を拡張し、サーバーレス・ワークロードのデプロイと管理ができるようにします。

記事

Red Hat OpenShift Service Mesh を選ぶ理由

Red Hat OpenShift Service Mesh で、マイクロサービスベースのアプリケーションを接続、管理、監視する方法を統一することができます。

OpenShift の詳細はこちら

製品

統合されたテスト済みのサービス一式を備えたエンタープライズ・アプリケーション・プラットフォームであり、ユーザーの選ぶインフラストラクチャを使ってアプリケーションを市場に投入するために活用できます。

機械学習 (ML) モデルを迅速に開発し、トレーニングし、テストすることができる完全にサポートされたサンドボックス。

コンテナのスピンアップおよびスピンダウン時に環境全体でデータを永続的に保存できるソフトウェア・デファインド・ストレージ。

Kubernetes クラスタとアプリケーションを制御する、セキュリティポリシーを組み込んだ単一のコンソール。

リソース

e ブック

Red Hat OpenShift のビジネス価値に関する IDC エグゼクティブサマリー

アナリスト資料

Red Hat OpenShift クラウドサービスについての Total Economic Impact™

関連資料

データシート

Red Hat OpenShift Container Platform

データシート

Red Hat OpenShift Platform Plus

詳細

セルフマネージド Red Hat OpenShift サイジングおよびサブスクリプション・ガイド

概要

Red Hat OpenShift のスキルパス

アナリスト資料

分散型ハイブリッドクラウドでエッジでの配信を実現

アナリスト資料

Red Hat OpenShift のビジネス価値

アナリスト資料

クラウドサービスでアジリティを加速する企業

アナリスト資料

OpenShift Platform Plusの収益機会の評価

e ブック

Azure Red Hat OpenShift の使用を開始する

チェックリスト

成功するハイブリッドクラウド戦略の 7 つの特徴

チェックリスト

サイト信頼性エンジニアリングが役立つ 5 つの方法

チェックリスト

クラウド・コンピューティングでセキュリティ機能をサポートする 6 つの方法

お客様事例

世界的なテクノロジー企業がネットワークエッジへの 5G 導入を推進

お客様事例

KPMG、先進的なシステム統合プラットフォームにより州民サービスの成果を改善

お客様事例

HCA Healthcare、患者の生命を保護するために革新的なデータプラットフォームを採用

お客様事例

Banco Galicia、インテリジェントな NLP プラットフォームによって新規法人顧客を数分でオンボーディング

お客様事例

Brightly が Red Hat OpenShift Service on AWS でイノベーションを加速

動画

BMW ConnectedDrive と Red Hat OpenShift

トレーニング

無料のトレーニングコース

Running Containers with Red Hat Technical Overview

無料のトレーニングコース

Developing Cloud-Native Applications with Microservices Architectures

無料のトレーニングコース

Containers, Kubernetes and Red Hat OpenShift Technical Overview