MySQL Database Serviceを使用したOracle Cloud InfrastructureへのSpring Boot Frameworkのデプロイ

MySQLデータベースを使用する高可用性アプリケーションをデプロイするためのSpring Bootフレームワークを含む、クラウド内の多層トポロジを設定します。

Spring Bootは、本番グレードのアプリケーションの作成に使用できるJavaベースのオープン・ソースのフレームワークです。Spring Bootは、最小限の構成およびカスタマイズでアプリケーションのデプロイメントを簡素化し、プロセスを合理化するサードパーティ・ライブラリを含みます。

アーキテクチャ

この多層リファレンス・アーキテクチャには、高可用性アプリケーションをOracle Cloud Infrastructureにデプロイするために使用されるインフラストラクチャ・リソースとSpring Bootフレームワークが含まれます。

このアーキテクチャでは、ロード・バランサ、要塞ホスト、アプリケーションがインストールされている3台の仮想マシン(VM)およびOracle MySQL Database Serviceをデプロイします。

このアーキテクチャには2つのコンパートメントが含まれており、どちらもOracleのセキュリティ・ベスト・プラクティスに基づいて最大限のセキュリティを提供するためにCloud Guardが有効になっています。また、Oracle MySQL Database Serviceがデプロイされているコンパートメントはセキュリティ・ゾーン・コンパートメントです。

コンポーネントは、高可用性を提供するために、異なるサブネットおよびフォルト・ドメインにあります。Oracle MySQL Database Serviceは要塞ホストを介してのみアクセスされ、アプリケーションVMはロード・バランサを介してアクセスされます。

次のダイアグラムに、このアーキテクチャを示します。



Springboot-mysql-oci-oracle.zip

このアーキテクチャには次のコンポーネントがあります。

  • リージョン

    Oracle Cloud Infrastructureリージョンは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含む、ローカライズされた地理的領域です。リージョンは他のリージョンから独立し、広大な距離(国または大陸間)を分離できます。

  • 可用性ドメイン

    可用性ドメインは、リージョン内のスタンドアロンの独立したデータ・センターです。各可用性ドメインの物理リソースは、フォルト・トレランスを提供する他の可用性ドメインのリソースから分離されます。可用性ドメインでは、電源や冷却、内部の可用性ドメイン・ネットワークなどのインフラストラクチャは共有されません。そのため、ある可用性ドメインでの障害が、リージョン内の他の可用性ドメインに影響することはほとんどありません。

  • フォルト・ドメイン

    フォルト・ドメインは、アベイラビリティ・ドメイン内のハードウェアおよびインフラストラクチャのグループ。各可用性ドメインには、独立した電源とハードウェアを備えた3つのフォルト・ドメインがあります。複数のフォルト・ドメインにリソースを分散すると、アプリケーションは物理サーバーの障害、システム・メンテナンスおよびフォルト・ドメイン内の電源障害を許容できます。

  • 仮想クラウド・ネットワーク(VCN)とサブネット

    VCNは、Oracle Cloud Infrastructureリージョンで設定する、カスタマイズ可能なソフトウェア定義のネットワークです。VCNは、従来のデータ・センター・ネットワークと同様に、ネットワーク環境を完全に制御できます。VCNには複数の重複しないCIDRブロックを含めることができ、VCNの作成後に変更できます。VCNをサブネットに分割できます。サブネットは、リージョンまたは可用性ドメインにスコープ指定できます。各サブネットは、VCN内の他のサブネットと重複しない連続したアドレスの範囲で構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックまたはプライベートにできます。

  • セキュリティ・リスト

    サブネットごとに、サブネット内外で許可されるトラフィックのソース、宛先およびタイプを指定するセキュリティ・ルールを作成できます。

  • 要塞

    要塞ホストとOracle Cloud Infrastructure Bastionのオプションを選択します:

    • 要塞ホストはコンピュート・インスタンスであり、クラウドの外部からトポロジへのセキュアで制御されたエントリ・ポイントとして機能します。要塞ホストは通常、非武装ゾーン(DMZ)でプロビジョニングされます。クラウドの外部から直接アクセスできないプライベート・ネットワークに配置することで、機密リソースを保護できます。トポロジには、定期的にモニターおよび監査できる既知のエントリ・ポイントが1つあります。そのため、アクセスを損なうことなく、トポロジのより機密性の高いコンポーネントの公開を回避できます。

    • Oracle Cloud Infrastructureの要塞は、パブリック・エンドポイントがなく、ベア・メタルおよび仮想マシン、Oracle MySQL Database ServiceAutonomous Transaction Processing (ATP)、Oracle Container Engine for Kubernetes (OKE)、およびセキュア・シェル・プロトコル(SSH)アクセスを許可するその他のリソースへの、厳格なリソース・アクセス制御を必要とする、制限付きかつ時間制限のある安全なアクセスを提供します。Oracle Cloud Infrastructure Bastionサービスでは、ジャンプ・ホストをデプロイおよび保守せずに、プライベート・ホストへのアクセスを有効にできます。また、アイデンティティ・ベースの権限と、一元化、監査および期限付きSSHセッションにより、セキュリティ状況が向上します。Oracle Cloud Infrastructure Bastionを使用すると、要塞アクセスのためのパブリックIPが不要になり、リモート・アクセスを提供する際の問題や潜在的な攻撃対象がなくなります。

  • ロード・バランサ

    Oracle Cloud Infrastructure Load Balancingサービスは、バックエンド内の単一エントリ・ポイントから複数のサーバーへの自動トラフィック分散を提供します。

  • クラウド・ガード

    Oracle Cloud Guardを使用して、Oracle Cloud Infrastructureでのリソースのセキュリティをモニターおよび保守できます。クラウド・ガードは、ディセクタ・レシピを使用して、セキュリティ脆弱性のリソースを調査し、オペレータおよびユーザーをリスクのあるアクティビティを監視します。構成ミスや安全でないアクティビティが検出された場合、クラウド・ガードは是正措置を推奨し、定義できるレスポンダ・レシピに基づいてこれらのアクションの実行を支援します。

  • セキュリティ・ゾーン

    セキュリティ・ゾーンにより、データの暗号化やコンパートメント全体のネットワークへのパブリック・アクセスの防止などのポリシーを適用することで、Oracleのセキュリティのベスト・プラクティスが開始から保証されます。セキュリティ・ゾーンは同じ名前のコンパートメントに関連付けられており、セキュリティ・ゾーン・ポリシーまたはコンパートメントとそのサブコンパートメントに適用されるレシピが含まれます。標準コンパートメントは、セキュリティ・ゾーン・コンパートメントに追加または移動できません。

  • ローカル・ピアリング・ゲートウェイ(LPG)

    LPGを使用すると、1つのVCNを同じリージョン内の別のVCNとピア接続できます。ピアリングとは、トラフィックがインターネットをトラバースしたり、オンプレミス・ネットワークを介してルーティングすることなく、VCNがプライベートIPアドレスを使用して通信することを意味します。

  • データベース

    このアーキテクチャは、EシェイプVMで実行されるMySQL Database Serviceを使用します。

推奨

お客様の要件は、ここで説明するアーキテクチャとは異なる場合があります。開始点として次の推奨事項を使用します。

  • クラウド・ガード

    Oracleが提供するデフォルトのレシピをクローニングおよびカスタマイズして、カスタム・ディテクタおよびレスポンダ・レシピを作成します。これらのレシピを使用すると、警告を生成するセキュリティ違反のタイプとその実行を許可するアクションを指定できます。たとえば、オブジェクト・ストレージ・バケットの表示設定をpublicにすることができます。

    テナンシ・レベルでCloud Guardを適用して、広範な範囲に対応し、複数の構成を維持する管理上の負担を減らします。

    管理対象リスト機能を使用して、特定の構成を検出者に適用することもできます。

  • セキュリティ・ゾーン

    最大限のセキュリティが必要なリソースの場合、Oracleではセキュリティ・ゾーンを使用することをお薦めします。セキュリティ・ゾーンは、ベスト・プラクティスに基づくOracle定義のセキュリティ・ポリシーのレシピに関連付けられたコンパートメントです。たとえば、セキュリティ・ゾーン内のリソースにパブリック・インターネットからアクセスできず、顧客管理キーを使用して暗号化する必要があります。セキュリティ・ゾーンでリソースを作成および更新すると、Oracle Cloud Infrastructureでは、セキュリティ・ゾーン・レシピのポリシーに対する操作が検証され、ポリシーに違反する操作が拒否されます。

  • VCN

    VCNを作成する際、VCNのサブネットにアタッチする予定のリソース数に基づいて、必要なCIDRブロックの数および各ブロックのサイズを決定します。標準プライベートIPアドレス領域内にあるCIDRブロックを使用します。

    プライベート接続を設定する予定のその他のネットワーク(Oracle Cloud Infrastructure、オンプレミス・データ・センターまたは別のクラウド・プロバイダ)と重複しないCIDRブロックを選択します。

    VCNを作成した後、そのCIDRブロックを変更、追加および削除できます。

    サブネットを設計する際は、トラフィック・フローおよびセキュリティ要件を考慮してください。セキュリティ境界として機能する、特定の層またはロール内のすべてのリソースを同じサブネットにアタッチします。

    リージョナル・サブネットを使用します。

  • セキュリティ・リスト

    セキュリティ・リストを使用して、サブネット全体に適用されるイングレス・ルールおよびエグレス・ルールを定義します。

  • 仮想マシン

    VMは高可用性のために複数のフォルト・ドメインに分散されます。VM.Standard.E3.Flex、4コアOCPU、64GBメモリー、および4Gbpsのネットワーク帯域幅(Oracle Linux 7)を使用します。

  • Bastionホスト

    1 OCPUと2ギガビットのRAMでVM.Standard.E3.Flexシェイプを使用します。または、Oracle Cloud Infrastructure Bastionサービスを使用します。

  • ロード・バランサ

    ロード・バランサは、受信トラフィックをアプリケーションVMに分散します。ロード・バランサを作成する場合、固定帯域幅を提供する事前定義済シェイプを選択するか、帯域幅範囲を設定したカスタム(フレキシブル)シェイプを指定し、トラフィック・パターンに基づいて帯域幅を自動的にスケーリングできます。どちらの方法でも、ロード・バランサの作成後いつでもシェイプを変更できます。

  • データベース・サービス

    アプリケーションに十分なCPUとメモリーを提供するVM.Standard.E2.8を使用します。

注意事項

  • 拡張性

    コンピュート・インスタンスのシェイプを変更して、アプリケーション・サーバーを垂直にスケーリングできます。コア数が多いシェイプでは、より多くのメモリーとネットワーク帯域幅が提供されます。ストレージを増やす必要がある場合は、アプリケーション・サーバーに接続されているブロック・ボリュームのサイズを増やします。

  • 可用性

    フォルト・ドメインでは、単一の可用性ドメイン内にデプロイされたワークロードの最適な回復力が提供されます。アプリケーション層の高可用性を実現するには、必要に応じてさらに多くのアプリケーション・サーバーをデプロイします。

  • コスト

    アプリケーション層で、アプリケーションが必要とするコア、メモリーおよびネットワーク帯域幅に基づいてコンピュート・シェイプを選択します。アプリケーション・サーバーの4コア・シェイプから開始できます。パフォーマンス、メモリーまたはネットワーク帯域幅を増やす必要がある場合は、大きなシェイプに変更できます。

  • バックアップ

    Oracle Cloud Infrastructureでは、MySQLデータベースが自動的にバックアップされます。作成したOracle Cloud Infrastructure Object Storageバケットには、手動バックアップが保存され、60日間保持されます。

    Oracle Cloud Infrastructure Block Volumesでは、ブロック・ボリュームにデータをポイントインタイム・バックアップを作成できます。これらのバックアップは、いつでも新しいボリュームにリストアできます。また、このサービスを使用して、アプリケーションの中断やダウンタイムなしで、ブート・ボリュームのポイントインタイム・クラッシュ・コンシステント・バックアップを作成することもできます。ブート・ボリュームとブロック・ボリュームには同じバックアップ機能があります。

  • セキュリティ

    アクセス制御のために、ポリシーを使用して、クラウド内のリソースにアクセスできるユーザーや実行できるアクションを制限します。

    ネットワーク・セキュリティの場合、セキュリティ・リストおよびネットワーク・セキュリティ・グループ(NSG)では、セキュリティ・ルールを使用してパケット・レベルでトラフィックを制御します。NSGは、単一のVCNで選択した一連のVNICにのみ適用される一連のイングレスおよびエグレス・セキュリティ・ルールで構成されます。たとえば、VCN内の複数層アプリケーションのWeb層のWebサーバーとして機能するすべてのコンピュート・インスタンスにルールを適用することを選択できます。

    NSGセキュリティ・ルールはセキュリティ・リスト・ルールと同様に機能します。ただし、NSGセキュリティ・ルールのソースまたは宛先の場合、CIDRブロックのかわりにNSGを指定できます。そのため、セキュリティ・ルールを記述して、同じVCN内の2つのNSG間のトラフィック、または1つのNSG内のトラフィックを簡単に制御できます。データベース・システムを作成する場合、1つ以上のNSGを指定できます。また、既存のデータベース・システムを更新して、1つ以上のNSGを使用することもできます。

デプロイ

このリファレンス・アーキテクチャをデプロイするには、Oracle Cloud Infrastructureで必要なリソースを作成し、Spring Boot Frameworkをインストールします。

  1. Oracle Cloud Infrastructureで必要なリソースを作成します。

    クラウドにリソースをデプロイするTerraformコードは、GitHubで使用できます。コードを1回のクリックでOracle Cloud Infrastructure Resource Managerにプルし、スタックを作成してデプロイできます。または、GitHubからコンピュータにコードをダウンロードしてコードをカスタマイズし、Terraformコマンドライン・インタフェースを使用してアーキテクチャをデプロイします。

    • Oracle Cloud Infrastructure Resource Managerを使用して、Terraformコードをデプロイします:
      1. Oracle Cloudに展開をクリックします

        まだサインインしていない場合は、テナンシおよびユーザー資格証明を入力します。

      2. スタックをデプロイするリージョンを選択します。
      3. 画面に表示されるプロンプトと指示に従ってスタックを作成します。
      4. スタックの作成後、「Terraformアクション」をクリックし、「プラン」を選択します。
      5. ジョブが完了するまで待機してから、プランを確認します。

        変更を行うには、「スタック詳細」ページに戻り、「スタックの編集」をクリックして必要な変更を行います。次に、「計画」処理を再実行します。

      6. これ以上変更が必要ない場合は、「スタックの詳細」ページに戻り、「Terraformアクション」をクリックして「適用」を選択します。
    • Terraformコマンドライン・インタフェースを使用してTerraformコードをデプロイします。
      1. GitHubに移動します。
      2. ローカル・コンピュータにリポジトリをクローニングまたはダウンロードします。
      3. READMEドキュメントの指示に従います。
  2. アーキテクチャのプロビジョニング後、GitHubで使用可能なSpring Bootフレームワークをインストールできます。
    1. GitHubに移動します。
    2. ローカル・コンピュータにリポジトリをクローニングまたはダウンロードします。
    3. READMEドキュメントの情報を使用して、追加情報およびリソースにアクセスします。Getting Startedドキュメントの手順を使用して、Spring Bootをインストールします。

変更ログ

このログには重大な変更のみが表示されます。