Spring Cloud アプリケーションを Azure Spring Apps に移行する

Note

Azure Spring Apps は、Azure Spring Cloud サービスの新しい名前です。 サービスの名前は新しくなりましたが、スクリーンショット、ビデオ、図などの資産の更新に取り組んでいる間、場所によってはしばらく古い名前が表示されます。

このガイドでは、既存の Spring Cloud アプリケーションを移行して Azure Spring Apps で実行する場合に知っておくべきことについて説明します。

移行前

移行を確実に成功させるには、開始する前に、次のセクションで説明する評価とインベントリの手順を完了します。

以下の移行前の要件のいずれかを満たすことができない場合は、次の関連する移行ガイドを参照してください。

  • Azure Kubernetes Service のコンテナーに実行可能 JAR アプリケーションを移行する (ガイド計画済)
  • 実行可能 JAR アプリケーションを Azure Virtual Machines に移行する (ガイド計画済)

アプリケーション コンポーネントを検査する

ファイル システムが使用されているかどうかとその使用方法を判断する

お使いのサービスがローカル ファイル システムに対して書き込みや読み取りを行うすべてのインスタンスを検索します。 短期または一時ファイルの書き込みと読み取りが行われる場所と、存続期間が長いファイルの書き込みと読み取りが行われる場所を特定します。

Note

Azure Spring Apps では、/tmp にマウントされた Azure Spring Apps インスタンスごとに 5 GB の一時ストレージが提供されます。 一時ファイルがその制限を超えて、または別の場所に書き込まれる場合は、コードの変更が必要になります。

読み取り専用の静的コンテンツ

現在、アプリケーションで静的コンテンツを提供している場合は、そのための別の場所が必要になります。 静的コンテンツを Azure Blob Storage に移動し、グローバルな高速ダウンロードのために Azure CDN を追加することを検討できます。 詳細については、「Azure Storage での静的 Web サイト ホスティング」と「クイック スタート:Azure ストレージ アカウントと Azure CDN との統合」を参照してください。

動的に公開される静的コンテンツ

アプリケーションによってアップロードまたは生成されるが、作成後に変更できない静的コンテンツをアプリケーションで許可する場合は、前述のように Azure Blob Storage と Azure CDN を使用し、Azure Function でアップロードと CDN の更新を処理します。 「Azure Functions を使用した静的コンテンツのアップロードと CDN の事前読み込み」で、ご利用いただけるサンプルの実装を提供しています。

いずれかのサービスに OS 固有のコードが含まれているかどうかを判断する

アプリケーションにホスト OS に依存するコードが含まれている場合は、それをリファクタリングしてそれらの依存関係を削除する必要があります。 たとえば、ファイル システムのパスで / または \ を使用している場合、File.Separator または Paths.get に置き換えることが必要になる可能性があります。

サポートされているプラットフォームに切り替える

Azure Spring Apps は、Java の特定のバージョンと、Spring Boot および Spring Cloud の特定のバージョンを提供します。 互換性を確保するために、現在の環境でサポートされているいずれかのバージョンの Java にアプリケーションを移行してから、残りの移行手順に進んでください。 結果として得られた構成は、十分にテストしてください。 このようなテストでは、Linux ディストリビューションの安定した最新リリースを使用します。

Note

現在のサーバーがサポートされていない JDK (Oracle JDK や IBM OpenJ9 など) で実行されている場合、この検証が特に重要です。

現在の Java バージョンを取得するには、実稼働サーバーにサインインし、次のコマンドを実行します。

java -version

サポートされている Java、Spring Boot、Spring Cloud のバージョン、および更新の手順については、「Azure Spring Apps でアプリケーションをデプロイ用に準備する」を参照してください。

Spring Boot のバージョンを特定する

移行する各アプリケーションの依存関係を調べて、Spring Boot のバージョンを確認します。

Maven

Maven プロジェクトでは、Spring Boot バージョンは通常、POM ファイルの <parent> 要素にあります。

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.10</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
Gradle

Gradle プロジェクトでは、Spring Boot バージョンは通常、org.springframework.boot プラグインのバージョンとして plugins セクションにあります。

plugins {
  id 'org.springframework.boot' version '2.7.10'
  id 'io.spring.dependency-management' version '1.0.15.RELEASE'
  id 'java'
}

Spring Boot 1.x を使用しているアプリケーションの場合は、「Spring Boot 2.0 の移行ガイド」に従って、サポートされている Spring Boot バージョンに更新します。 サポートされているバージョンについては、「Azure Spring Apps でアプリケーションをデプロイ用に準備する」の「Spring Boot と Spring Cloud のバージョン」のセクションを参照してください。

Spring Cloud のバージョンを特定する

移行する各アプリケーションの依存関係を調べて、使用されている Spring Cloud コンポーネントのバージョンを確認します。

Maven

Maven プロジェクトでは、通常、Spring Cloud バージョンは spring-cloud.version プロパティで設定されています。

  <properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>2021.0.6</spring-cloud.version>
  </properties>
Gradle

Gradle プロジェクトでは、Spring Cloud バージョンは通常、"追加のプロパティ" ブロックで設定されます。

ext {
  set('springCloudVersion', "2021.0.6")
}

サポートされているバージョンの Spring Cloud を使用するには、すべてのアプリケーションを更新することが必要です。 サポートされているバージョンの一覧については、「Azure Spring Apps でアプリケーションをデプロイ用に準備する」の「Spring Boot と Spring Cloud のバージョン」のセクションを参照してください。

ログ集計ソリューションを特定する

移行するアプリケーションによって使用されているログ集計ソリューションを特定します。 従量課金でログに記録されたイベントを利用できるようにするには、移行時に診断設定を構成する必要があります。 詳細については、「コンソールのログ記録の確認と診断設定の構成」セクションを参照してください。

アプリケーション パフォーマンス管理 (APM) エージェントを特定する

アプリケーションで使用しているアプリケーション パフォーマンス監視エージェントを特定します。 Azure Spring Apps では、Application Insights、New Relic、Elastic APM、Dynatrace、AppDynamics との統合がサポートされています。 サポートされている APM をアプリケーションで使用している場合は、移行で統合を構成します。 サポートされている APM をアプリケーションで使用していない場合は、代わりにアプリケーション Insights の使用を検討してください。 詳細については、「移行」章を参照してください。

Zipkin の依存関係を特定する

アプリケーションが Zipkin に依存しているかを判断します。 代わりにアプリケーション Insights を使用するようにアプリケーションをアップデートします。 詳細については、「Azure Spring Apps でアプリケーション Insights Java インプロセス エージェントを使用する」および「移行後」の章を参照してください。

外部リソースをインベントリする

データ ソース、JMS メッセージ ブローカー、その他のサービスの URL などの外部リソースを特定します。 Spring Cloud アプリケーションでは、通常、このようなリソースの構成は次のいずれかの場所にあります。

  • src/main/directory フォルダー内にある、通常 application.properties または application.yml という名前のファイル内。
  • 前の手順で特定した Spring Cloud Config リポジトリ。

データベース

SQL データベースが存在する場合は、接続文字列を特定します。

Spring Boot アプリケーションの場合、接続文字列は通常、構成ファイルに記載があります。

application.properties ファイルの例を次に示します。

spring.datasource.url=jdbc:mysql://localhost:3306/mysql_db
spring.datasource.username=dbuser
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

application.yaml ファイルの例を次に示します。

spring:
  data:
    mongodb:
      uri: mongodb://mongouser:deepsecret@mongoserver.contoso.com:27017

使用可能な構成シナリオについては、Spring Data のドキュメントを参照してください。

JMS メッセージ ブローカー

関連する依存関係のビルド マニフェスト (通常は pom.xml または build.gradle ファイル) を調べて、使用中のブローカーを特定します。

たとえば、ActiveMQ を使用する Spring Boot アプリケーションには、通常、この依存関係が pom.xml ファイルに含まれています。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

商用ブローカーを使用する Spring Boot アプリケーションには、通常、ブローカーの JMS ドライバー ライブラリへの直接的な依存関係が含まれています。 build.gradle ファイルの例を次に示します。

    dependencies {
      ...
      compile("com.ibm.mq:com.ibm.mq.allclient:9.0.4.0")
      ...
    }

使用中のブローカーを特定したら、対応する設定を見つけます。 Spring Cloud アプリケーションでは、通常、アプリケーション ディレクトリ内の application.properties および application.yml ファイル内、または Spring Cloud Config サーバー リポジトリ内にあります。

application.properties ファイルからの ActiveMQ の例を次に示します。

spring.activemq.brokerurl=broker:(tcp://localhost:61616,network:static:tcp://remotehost:61616)?persistent=false&useJmx=true
spring.activemq.user=admin
spring.activemq.password=tryandguess

ActiveMQ 構成の詳細については、Spring Boot のメッセージングのドキュメントを参照してください。

application.yaml ファイルからの IBM MQ の例を次に示します。

ibm:
  mq:
    queueManager: qm1
    channel: dev.ORDERS
    connName: localhost(14)
    user: admin
    password: big$ecr3t

IBM MQ 構成の詳細については、IBM MQ Spring コンポーネントのドキュメントを参照してください。

外部キャッシュを特定する

使用中の外部キャッシュを特定します。 一般的に、Redis が Spring Data Redis 経由で使用されています。 構成情報については、Spring Data Redis のドキュメントを参照してください。

各構成 (Java または XML) を検索して、Spring Session 経由でセッション データをキャッシュするかどうかを決定します。

ID プロバイダー

認証や認可を必要とするすべての ID プロバイダーおよびすべての Spring Cloud アプリケーションを特定します。 ID プロバイダーを構成する方法についての詳細は、次のリソースを参照してください。

VMware Tanzu Application Service (TAS) (以前の Pivotal Cloud Foundry) によって構成されたリソース

TAS を使用して管理されているアプリケーションでは、多くの場合、前に説明したリソースを含む外部リソースが TAS サービス バインドを使用して構成されています。 このようなリソースの構成を確認するには、TAS (Cloud Foundry) CLI を使用して、アプリケーションの VCAP_SERVICES 変数を表示します。

# Log into TAS, if needed (enter credentials when prompted)
cf login -a <API endpoint>

# Set the organization and space containing the application, if not already selected during login.
cf target org <organization name>
cf target space <space name>

# Display variables for the application
cf env <Application Name>

VCAP_SERVICES 変数を調べて、アプリケーションにバインドされている外部サービスの構成設定を確認します。 詳細については、 TAS (Cloud Foundry) のドキュメントを参照してください。

その他のすべての外部リソース

このガイドに、考えられるすべての外部依存関係を記載することはできません。 移行後に、アプリケーションの外部依存関係がすべて満たされることを確認するのは、お客様の責任です。

構成のソースとシークレットをインベントリする

パスワードとセキュリティで保護された文字列をインベントリする

すべてのシークレット文字列とパスワードについて、実稼働デプロイ上のすべてのプロパティおよび構成ファイルとすべての環境変数を確認します。 Spring Cloud アプリケーションでは、これらの文字列は通常、個々のサービスの application.properties または application.yml ファイル内、または Spring Cloud Config リポジトリ内にあります。

証明書をインベントリする

パブリック SSL エンドポイント、またはバックエンド データベースやその他のシステムとの通信に使用されるすべての証明書を文書化します。 次のコマンドを実行して、運用サーバー上のすべての証明書を表示できます。

keytool -list -v -keystore <path to keystore>

Spring Cloud Vault が使用されているかどうかを判断する

シークレットを格納およびアクセスするために Spring Cloud Vault を使用する場合、バッキング シークレット ストア (HashiCorp Vault、CredHub など) を特定します。 次に、アプリケーション コードによって使用されるすべてのシークレットを識別します。

構成サーバー ソースを見つける

アプリケーションで Spring Cloud Config サーバーを使用する場合は、構成が格納されている場所を特定します。 通常、この設定は、bootstrap.yml または bootstrap.properties ファイルにありますが、application.yml または application.properties ファイルにある場合もあります。 設定は、次の例のようになります。

spring.cloud.config.server.git.uri: file://${user.home}/spring-cloud-config-repo

前に示したように、Spring Cloud Config のバッキング データストアとして git が最もよく使用されていますが、その他のバックエンド候補のいずれかが使用されている場合もあります。 リレーショナル データベース (JDBC)SVN、およびローカル ファイル システムなどのその他のバックエンドについては、Spring Cloud Config のドキュメントを参照してください。

Note

構成サーバーのデータが GitHub Enterprise などのオンプレミスに格納されている場合は、Git リポジトリを介して Azure Spring Apps で使用できるようにする必要があります。

デプロイ アーキテクチャを検査する

各サービスのハードウェア要件を文書化する

個々の Spring Cloud サービスについて (構成サーバー、レジストリ、ゲートウェイを除く)、次の情報を文書化します。

  • 実行中のインスタンスの数。
  • 各インスタンスに割り当てられた CPU の数。
  • 各インスタンスに割り当てられた RAM の量。

geo レプリケーション/分散を文書化する

Spring Cloud アプリケーションが現在複数のリージョンまたはデータセンターに分散しているかどうかを判断します。 移行するアプリケーションの稼働時間要件/SLA を文書化します。

サービス レジストリを使用しないクライアントを特定する

Spring Cloud サービス レジストリを使用せずに、移行する任意のサービスを呼び出すクライアント アプリケーションを特定します。 移行後は、このような呼び出しはできなくなります。 移行前に、Spring Cloud OpenFeign を使用するように、このようなクライアントを更新します。

移行

制限付き構成を削除する

移行するサービスで、以下の制限付き構成への明示的な割り当てを見つけて削除します。 これらのプロパティは、Config Server と Service Discovery にアクセスするためにお使いのアプリケーション環境に自動的に挿入されます。 これらのプロパティがお使いの Config Server アプリケーションのファイルにある場合、競合および予期しない動作が生じる場合があります。 詳細については、「Azure Spring Apps で マネージド Spring Cloud Config Server を構成する」の「制限」章を参照してください。

  • eureka.client.service-url.defaultZone
  • eureka.client.tls.keystore
  • eureka.instance.preferIpAddress
  • eureka.instance.instance-id
  • server.port
  • spring.cloud.config.tls.keystore
  • spring.config.import
  • spring.application.name
  • spring.jmx.enabled
  • management.endpoints.jmx.exposure.include

Azure Spring Apps のインスタンスとアプリを作成する

Azure サブスクリプションで Azure Spring Apps インスタンスをプロビジョニングします。 次に、移行するすべてのサービスに対してアプリをプロビジョニングします。 Spring Cloud のレジストリおよび構成のサーバーを含めないでください。 Spring Cloud Gateway サービスは含めてください。 手順については、「クイック スタート:初めてのアプリケーションを Azure Spring Apps にデプロイする」を参照してください。

Spring Cloud Config サーバーを準備する

Azure Spring Apps インスタンスで構成サーバーを構成します。 詳しくは、「自分のサービス向けに Spring Cloud Config Server インスタンスを設定する」を参照してください。

Note

現在の Spring Cloud Config リポジトリがローカル ファイル システムまたはオンプレミスにある場合は、まず、GitHub、Azure Repos、BitBucket などのプライベート クラウド ベースのリポジトリに構成ファイルを移行またはレプリケートすることが必要です。

コンソール ログを確認して診断設定を構成する

すべての出力がファイルではなく、コンソールに送られるようにログ記録を構成します。

アプリケーションが Azure Spring Apps にデプロイされたら、診断設定を追加して、たとえば Azure Monitor Log Analytics を使用して、ログに記録されたイベントを使用できるようにします。

LogStash/ELK スタック

ログの集計に LogStash/ELK スタックを使用する場合は、コンソールの出力を Azure Event Hub にストリーミングするように診断設定を構成します。 次に、LogStash EventHub プラグインを使用して、ログに記録されたイベントを LogStash に取り込みます。

Splunk

ログの集計に Splunk を使用する場合は、コンソールの出力を Azure Blob Storage にストリーミングするように診断設定を構成します。 次に、Microsoft Cloud Services 用の Splunk アドオンを使用して、ログに記録されたイベントを Splunk に取り込みます。

永続ストレージを構成する

アプリケーションのいずれかの部分でローカル ファイル システムに対する読み取りまたは書き込みが行われる場合は、永続ストレージを構成してローカル ファイル システムを置き換える必要があります。 詳細については、「Azure Spring Apps で組み込みの永続ストレージを使用する」を参照してください。

一時ファイルは、/tmp ディレクトリに書き込む必要があります。 OS 非依存の場合は、System.getProperty("java.io.tmpdir") を使用してこのディレクトリを取得できます。 また、java.nio.Files::createTempFile を使用して、一時ファイルを作成することもできます。

VMware Tanzu コンポーネント

Enterprise レベルでは、アプリの外部化された構成をサポートするために、VMware Tanzu® 用のアプリケーション構成サービスが提供されます。 Managed Spring Cloud Config Server は Enterprise レベルでは使用できません。また、Azure Spring Apps の Standard レベルと Basic レベルでのみ使用できます。

Application Configuration Service for Tanzu

Application Configuration Service for Tanzu は、商用 VMware Tanzu コンポーネントの 1 つです。 Application Configuration Service for Tanzu は Kubernetes ネイティブであり、Spring Cloud Config Server とは異なります。 Application Configuration Service for Tanzu を使用すると、1 つまたは複数の Git リポジトリに定義されたプロパティから設定された Kubernetes ネイティブの ConfigMap リソースを管理できます。

Enterprise レベルでは、Spring Cloud Config Server はありませんが、Application Configuration Service for Tanzu を使用して、集中管理された構成を管理できます。 詳細については、「Application Configuration Service for Tanzu を使用する」を参照してください。

Application Configuration Service for Tanzu を使用するには、アプリごとに次の手順を実行します。

  1. アプリで Application Configuration Service for Tanzu を使用する必要があることを宣言する明示的なアプリ バインドを追加します。

    Note

    バインドとバインド解除の状態を変更したときは、アプリを再起動または再デプロイして変更を有効にする必要があります。

  2. 構成ファイルのパターンを設定します。 構成ファイルのパターンを使用すると、アプリで使用されるアプリケーションとプロファイルを選択できます。 詳細については、「Application Configuration Service For Tanzu を使用する」の「パターン」セクションを参照してください。

    もう 1 つの方法は、次の例に示すように、アプリのデプロイと同時に構成ファイルのパターンを設定することです。

    az spring app deploy \
        --name <app-name> \
        --artifact-path <path-to-your-JAR-file> \
        --config-file-pattern <config-file-pattern>
    

Application Configuration Service for Tanzu は Kubernetes で実行されます。 透過的なローカル開発エクスペリエンスを有効にするために、次の提案を提供します。

  • 外部化された構成を保存する Git リポジトリが既にある場合は、Spring Cloud Config Server をアプリケーションの一元化された構成としてローカルに設定できます。 Config Server が起動すると、これにより Git リポジトリが複製され、ウェブ コントローラーを介してリポジトリのコンテンツが提供されます。 詳細については、Spring ドキュメントの「Spring Cloud Config」を参照してください。 spring-cloud-config-client は、アプリケーションが Config Server から外部構成を自動的に選択できる機能を提供します。

  • Git リポジトリがない場合、または Config Server をローカルに設定しない場合は、プロジェクトで構成ファイルを直接使用できます。 プロファイルを使用して構成ファイルを分離し、開発環境でのみ使用することをお勧めします。 たとえば、プロファイルとして dev を使用します。 次に、src/main/resource フォルダーに application-dev.yml ファイルを作成し、構成を保存できます。 アプリでこの構成を使用するには、--spring.profiles.active=dev を使用してアプリをローカルで起動します。

Tanzu Service Registry

VMware Tanzu® Service Registry は、商用 VMware Tanzu コンポーネントの 1 つです。 Tanzu Service Registry は、Enterprise レベルのアプリに、マイクロサービス ベースのアーキテクチャの基本理念の 1 つであるサービス検出パターンの実装を提供します。 Tanzu Service Registry を使用すると、登録済みサービスをアプリで動的に検出して呼び出すことができます。 Tanzu Service Registry を使用することは、サービスの各クライアントを手動で構成するよりも望ましいです。これは難しい場合があり、何らかの形式のアクセス規則を採用すると、運用環境で脆弱になる可能性があります。 詳細については、「Tanzu Service Registry を使用する」を参照してください。

Spring Cloud Vault シークレットを Azure KeyVault に移行する

Azure KeyVault Spring Boot Starter を使用して、Spring 経由でアプリケーションに直接シークレットを挿入できます。 詳細については、「Azure Key Vault 用の Spring Boot Starter の使用方法」を参照してください。

Note

移行において、一部のシークレットの名前変更が必要な場合があります。 必要に応じて、アプリケーション コードを更新してください。

すべての証明書を KeyVault に移行する

Azure Spring Apps は JRE キーストアへのアクセスを提供しないため、Azure KeyVault に証明書を移行し、KeyVault 内の証明書にアクセスするようにアプリケーション コードを変更する必要があります。 詳細については、「Key Vault 証明書の概要」と Java 用の Azure Key Vault の証明書クライアント ライブラリに関するページを参照してください。

アプリケーション パフォーマンス管理 (APM) 統合を構成する

Azure Spring Apps では、次の APM 統合を提供しています。 リンクを開き、必要な APM を可能にします:

サポートされている APM をご使用のアプリケーションで使用していない場合は、代わりにアプリケーション Insights の使用を検討してください。 Azure Spring Appsは、パフォーマンス管理と異常へのリアルタイム対応のために、アプリケーション Insights との緊密な統合を提供します。

アプリケーションのメトリック クライアントおよびエンドポイントを無効にする

使用しているメトリック クライアント、またはアプリケーションで公開されているメトリック エンドポイントを削除します。

サービスをデプロイする

クイック スタート: 初めてのアプリケーションを Azure Spring Apps にデプロイする」で説明されているように、移行した各 Spring アプリ (Spring Cloud Config および Registry のサーバーは含みません) をデプロイします。

サービスごとのシークレットと外部化された設定を構成する

サービスごとの構成設定を各サービスに環境変数として挿入できます。 Azure portal で次の手順を使用します。

  1. Azure Spring Apps インスタンスに移動し、[アプリ] を選択します。
  2. 構成するサービスを選択します。
  3. [構成] を選択します。
  4. 構成する変数を入力します。
  5. [保存] を選択します。

Spring Cloud App Configuration Settings

ID プロバイダーを移行して有効にする

Spring Cloud アプリケーションのいずれかで認証または認可が必要な場合は、それらが ID プロバイダーにアクセスするように構成されていることを確認します。

  • ID プロバイダーが Microsoft Entra ID である場合、変更は一切必要ありません。
  • ID プロバイダーがオンプレミスの Active Directory フォレストである場合は、Microsoft Entra ID を使用したハイブリッド ID ソリューションの実装を検討してください。 ガイダンスについては、「ハイブリッド ID のドキュメント」を参照してください。
  • ID プロバイダーが別のオンプレミス ソリューション (PingFederate など) である場合は、「Microsoft Entra Connect のカスタム インストール」トピックを参照して、Microsoft Entra ID とのフェデレーションを構成します。 または、Spring Security を使用して OAuth2/OpenID Connect または SAML 経由で ID プロバイダーを使用することを検討します。

クライアント アプリケーションを更新する

移行したアプリケーションに対して公開されている Azure Spring Apps エンドポイントを使用するように、すべてのクライアント アプリケーションの構成を更新します。

移行後

  • 一貫性のある自動デプロイのためにデプロイ パイプラインを追加することを検討します。 Azure PipelinesGitHub ActionsJenkins についての手順が用意されています。

  • ステージング環境のデプロイを使用してコードの変更を運用環境でテストした後に、一部またはすべてのエンド ユーザーがそれらを使用できるようにすることを検討します。 詳細については、「Azure Spring Apps でステージング環境を設定する」を参照してください。

  • サポートされている Azure データベースにアプリケーションを接続するために、サービス バインドを追加することを検討します。 これらのサービス バインドにより、資格情報などの接続情報を Spring Cloud アプリケーションに提供する必要がなくなります。

  • アプリケーションのパフォーマンスおよび相互作用を監視するために、Azure Application Insights の使用を検討してください。 詳細については、Azure Spring Apps での Application Insights Java インプロセス エージェントに関する記事をご覧ください。

  • 異常な状態を迅速に検出して対処するために、Azure Monitor のアラート ルールおよびアクション グループを追加することを検討します。 詳細については、「チュートリアル: アラートとアクション グループを使用して Spring Cloud リソースを監視する」を参照してください。

  • 待機時間を短くし、信頼性とフォールト トレランスを高めるために、別のリージョンに Azure Spring Apps デプロイをレプリケートすることを検討します。 Azure Traffic Manager を使用してデプロイ間で負荷を分散するか、Azure Front Door を使用して SSL オフロードと DDoS 保護付きの Web アプリケーション ファイアウォールを追加します。

  • geo レプリケーションが不要な場合は、Azure Application Gateway を追加して、SSL オフロードと DDoS 保護付きの Web アプリケーション ファイアウォールを追加することを検討します。

  • アプリケーションでレガシ Spring Cloud Netflix コンポーネントを使用する場合は、それらを現在の代替候補に置き換えることを検討します。

    従来 [現在]
    Spring Cloud Eureka Spring Cloud Service Registry
    Spring Cloud Netflix Zuul Spring Cloud Gateway
    Spring Cloud Netflix Archaius Spring Cloud Config Server
    Spring Cloud Netflix Ribbon Spring Cloud Load Balancer (クライアント側のロード バランサー)
    Spring Cloud Hystrix Spring Cloud Circuit Breaker と Resilience4J
    Spring Cloud Netflix Turbine Micrometer と Prometheus