Oracle Cloud InfrastructureへのASP.Netアプリケーションのデプロイ

ASP.Netは、を使用して最新のWebアプリケーションとサービスを構築するためにMicrosoftが作成するオープン・ソースのWebフレームワークです。正味。このフレームワークを使用すると、Oracle Cloud Infrastructure上のASP.Netアプリケーションの自動デプロイメント・パイプラインを迅速に設定できます。このリファレンス アーキテクチャでは、単純なASP.Netアプリケーションを示し、足場でセットアップできます。

アーキテクチャ

このアーキテクチャでは、複数のフォルト・ドメインにわたってASP.Netアプリケーションをデプロイしています。アーキテクチャでは、アプリケーション・インスタンスのパブリック・サブネットとデータベース層のプライベート・サブネットを含む仮想クラウド・ネットワーク(VCN)が使用されます。パブリック・サブネットに配置されたロード・バランサは、ノード間でトラフィックを分散します。

Oracle Cloud Infrastructureの柔軟なロード・バランサを利用して、カスタムの最小帯域幅および最大帯域幅(オプション)を選択できます。どちらも10 Mbpsから8,000 Mbpsの間である必要があります。最小帯域幅は常に使用でき、ワークロードに対する即時の準備が可能になります。受信トラフィック・パターンに基づいて、トラフィックが増加するにつれて、使用可能な帯域幅が最小からスケール・アップします。

仮想マシンにデプロイされるアプリケーションの場合、お客様は柔軟なVMインスタンスを利用できます。柔軟なVMは、CPUとメモリーを追加することで、容量を数分で増減できます。Flexible VMは、1コアから64コアまで、またコア当たり1GBから64GBのメモリー(インスタンス当たり最大1024GB)で構成できます。

Microsoft SQLデータベースは、高可用性を実現するために、2つのフォルト・ドメインに分散されたプライマリおよびスタンバイ・データベースとともにデプロイされます。

次の図は、このリファレンス・アーキテクチャを示しています。

ha-aspnet-oci-arch.pngの説明が続きます
図ha-aspnet-oci-arch.pngの説明

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

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

  • 可用性ドメイン

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

  • フォルト・ドメイン

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

  • コンパートメント

    コンパートメントは、OCIテナンシ内のリージョン間論理パーティションです。コンパートメントを使用してOracle Cloud内のリソースを編成し、リソースへのアクセスを制御して、使用量の割当て制限を設定します。特定のコンパートメント内のリソースへのアクセスを制御するには、リソースにアクセスできるユーザーおよび実行できるアクションを指定するポリシーを定義します。仮想クラウド・ネットワーク

  • (VCN)とサブネット

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

  • セキュリティ・リスト

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

  • ロード・バランサ

    Oracle Cloud Infrastructure Load Balancingサービスは、バックエンド内の単一のエントリ・ポイントから複数のサーバーへの自動トラフィック分散を提供します。インターネット・ゲートウェイ インターネット・ゲートウェイを使用すると、VCN内のパブリック・サブネットとパブリック・インターネットの間のトラフィックが許可されます。

  • ブロック・ボリューム

    ブロック・ストレージ・ボリュームを使用すると、ストレージ・ボリュームを作成、アタッチ、接続および移動し、ボリューム・パフォーマンスを変更して、ストレージ、パフォーマンスおよびアプリケーションの要件を満たすことができます。ボリュームをインスタンスに接続および接続した後は、そのボリュームを通常のハード・ドライブのように使用できます。また、データを失うことなく、ボリュームを切断して別のインスタンスに接続することもできます。

  • Webサーバー- IIS

    Windows®ServerのInternet Information Services(IIS)は、 をホスティングするためのWebサーバーです。Netアプリケーション。

  • Githubアクションおよびランナー

    GitHubのアクションは、ASP.NETアプリケーションのビルドおよびデプロイメントをWindowsサーバーに自動化するために使用されます。GitHubアクションは、ソフトウェア開発ライフサイクル内のタスクを自動化するのに役立ちます。ランナーは、GitHubアクション・ジョブが実行されるマシンです。ランナーは、使用可能なジョブをリスニングし、一度に1つずつ実行し、進捗状況、ログおよび結果をGitHubに報告します。

    ランナーは、GitHubによって管理サービスとして提供されます。または、独自のイメージやコンテナ、より強力なマシン、Armなどの複数のアーキテクチャーをサポートするために、より柔軟かつ管理が必要な場合は、自己管理が可能です。同様の結果を得るために、任意のビルドおよびデプロイメント・システムから同じプロセスまたはコマンドを実行できます。この例では、ビルドはリポジトリまたはプルリクエストへのコミットによってトリガーされます。ワークフローがトリガーされると、アプリケーションがビルドされます。組込みバイナリはパッケージングされ、インフラストラクチャの更新およびアプリケーションのデプロイのためにterraformが起動されます。Oracle Cloud Infrastructure APIキーは、GitHubシークレットによって管理されます。

推奨

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

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

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

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

  • セキュリティ・ゾーン

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

  • VCN

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

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

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

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

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

  • セキュリティ・リスト

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

注意事項

このリファレンス・アーキテクチャをデプロイする際には、次の点を考慮してください。

  • セキュリティ

    Web Application Firewallを追加して、悪意のある攻撃からアプリケーションを保護することを検討してください。

  • アプリケーションの可用性

    フォルト・ドメインでは、単一の可用性ドメイン内で最適な耐障害性が提供されます。また、複数のフォルト・ドメインにわたって同じタスクを実行するコンピュート・インスタンスをデプロイすると、冗長性が提供され、単一障害点を回避できます。

  • コスト

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

  • CI/CD

    自己ホスト型Githubアクション・ランナーをOCIにデプロイし、Githubリポジトリ、組織またはエンタープライズに追加できます。GitHubアクションでホスティングされたランナーおよびサポートされているプラットフォームおよびアーキテクチャの詳細は、GitHubドキュメントの「独自の実行者のホスティング」を参照してください(このドキュメントへのリンクについては、「詳細の確認」のトピックを参照してください)。

デプロイ

このリファレンス・アーキテクチャのTerraformコードは、Oracle Cloud Infrastructure Resource Managerのサンプル・スタックとして使用できます。また、GitHubからコードをダウンロードし、特定の要件にあわせてカスタマイズすることもできます。

  • Oracle Cloud Infrastructure Resource Managerのサンプル・スタックを使用してデプロイします:
    1. Oracle Cloudに展開をクリックします

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

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

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

    6. これ以上変更が必要ない場合は、「スタックの詳細」ページに戻り、「Terraformアクション」をクリックして「適用」を選択します。
  • GitHubでTerraformコードを使用してデプロイ:
    1. GitHubに移動します。
    2. ローカル・コンピュータにリポジトリをクローニングまたはダウンロードします。
    3. READMEドキュメントの指示に従います。