翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
.NET アプリケーションの移行
.NET アプリケーションを に移行 AWS することで、エラスティックスケーリング機能を備えた高可用性ワークロードを作成し、運用オーバーヘッドを削減し、差別化する価値に焦点を当てることでビジネスの俊敏性を向上させることができます。
このセクションでは、 で .NET アプリケーションをホストするためのさまざまなオプションに焦点を当てます AWS。VM を使用するか、 などのマネージドソリューションを使用するAWS Elastic Beanstalk
評価
.NET ワークロードの移行パスの選択は、次の重要な要素に依存します。
-
使用されている .NET バージョンを確認する — Microsoft がサポートしている.NET 実装には、.NET Framework (1.0—4.8) と .NET (.NET Core 1.0—3.1 と .NET 5 以降) の 2 種類があります。どちらも同じコンポーネントの多くを共有しており、異なる .NET プログラミング言語 (C#、F#、VB.NET など) を使用して記述されたアプリケーションコードを実行できます。.NET Framework は Windows 上で実行されますが、新しい .NET はマルチプラットフォームであるため、移行戦略とホスティングサービスの選択は、使用されるランタイムによって異なります。.NET Framework では、Windows OS でホストすることも、新しい.NET を使用するようにコードをリファクタリングすることもできます。新しい.NET は、Linux OS ベースのサービスでもホストできます。.NET Framework ベースのワークロードをモダナイズする場合、Porting Assistant for .NET
または AWS Toolkit for .NET リファクタリング を使用してコードをスキャンし、互換性評価レポートを生成できます。プロジェクトで参照されている互換性のない .NET Framework API があるかどうかを確認することで、移行プロジェクトの複雑性を計画し、新しいランタイムを使用するようにコードをリファクタリングするかどうか、いつリファクタリングするかを決定できます。 -
現在のデプロイの確認 — 現在移行されているワークロードに、同じワークロードをクラウドにデプロイするように更新できる既存の CI/CD パイプラインがあるかどうかを確認します。既存のビルドおよびデプロイパイプラインを使用すると、ワークロードの構築、構成、デプロイに必要な手順が自動化され、アプリケーションをクラウドにデプロイするのにかかる時間を短縮できます。
-
ロードマップの見直し — プロジェクトの現在の状態によっては、アプリケーションのリアーキテクトや再設計をすでに計画している場合があります。モダナイズを行う際には、製品ロードマップを考慮に入れる必要があります。たとえば、既存のコードをコンテナ化したり、モノリシックアーキテクチャをマイクロサービスにリファクタリングしたりすることは、製品ロードマップの一部であり、他の開発努力と連動するのが理想的です。
準備
.NET ワークロードを移行する際に考慮すべき移行パスは 3 つあります AWS。既存のコードベースの複雑さ、移行に割り当てられる時間、移行作業をサポートするために割り当てられたチームの規模に応じて、さまざまなオプションを選択できます。モダナイゼーションを移行の一環として検討する場合、製品のロードマップに合わせることがベストプラクティスです。
-
リホスト (リフトアンドシフト) – 移行が速く、変更がほとんどまたはまったくない場合 AWS 、このアプローチを選択できます。ASP.NET ベースのウェブサイトを Amazon EC2 インスタンスで実行されているインターネットインフォメーションサービス (IIS) にリホストできます。デスクトップベースのアプリケーション (Windows Presentation Foundation、Web Forms、.NET MAUI など) を、Amazon AppStream 2.0
や Amazon WorkSpaces などのエンドユーザー コンピューティング プラットフォームの 1 つにリホストできます。 -
リプラットフォーム — リプラットフォームが最適であるケースは、コードを変更せずにマネージドサービスを使用してアプリケーションをホストしたいが、インストール、パッチ適用、アップグレード、インスタンス管理などの差別化されていない面倒な作業をオフロードすることで運用上のオーバーヘッドを削減したい場合です。この戦略は、コンテナベースのワークロードに移行したいチームにも適しています。既存のアプリケーションを Elastic Beanstalk
にリプラットフォームすることも、Amazon ECS 、Amazon EKS 、または でホストされている Docker コンテナを使用することもできますAWS App Runner 。 -
リファクタリング — AWS クラウドネイティブサービスを使用して、運用オーバーヘッドを削減し、スケーリング、高可用性、ディザスタリカバリを向上させるコードとアーキテクチャの変更に時間と労力を費やすことができる場合は、このアプローチを選択します。リファクタリングでは、既存の .NET フレームワークアプリケーションを .NET (以前の.NET Core) に移植したり、既存のコードベースをモダナイズしてクラウドでの動作を向上したりして、コードベースをモダナイズする必要があります。を使用してAWS SDK for .NET
、.NET コード内から多くの AWS クラウドサービスを呼び出すことができます。Porting Assistant for .NET や などのツールを使用して、コードベースを .NET Framework から .NET に移植し、モノリシックアプリケーションをマイクロサービスに分割AWS Microservice Extractor for .NET できます。既存の .NET ワークロードを で実行するようにリファクタリングすることでAWS Lambda 、サーバーレスコンピューティングを使用してインフラストラクチャのプロビジョニングと管理を回避できます。
移行
.NET ワークロードの移行手順は、評価段階で選択した移行パスとアプリケーションの種類によって異なります。
.NET アプリケーションをリホストする
コードを変更せずにアプリケーションを移行したいが、クラウドでの自動スケーリング、負荷分散、伸縮性のメリットを利用したい場合は、この移行パスを選択してください。Windows ベースのウェブサイトの場合、リホストは通常、インターネットインフォメーションサービス (IIS) でそれらを実行することを意味します AWS。デスクトップベースのアプリケーションでは、アプリケーションをインストールして、ユーザーが外部からアプリケーションに接続できるようにする必要があります。
でのインターネットインフォメーションサービス AWS
Internet Information Services (IIS) は、Windows オペレーティングシステム上で動作する Microsoft Web サーバーで、Web サイトや Web サービスのホストに使用されます。IIS は、Windows Server を実行している任意の Amazon EC2 インスタンスにインストールできます。IIS を有効にして設定したら、オンプレミス環境と同じデプロイメカニズムを使用して ASP.NET ウェブサイトとサービスをデプロイできます。
EC2 Windows インスタンスで IIS をホストする場合は、ワークロードと HADR のニーズに応じて、ロードバランシング、Auto Scaling グループ、マルチ AZ 配置を使用して AWS Well-Architected フレームワーク
でのデスクトップアプリケーションのホスティング AWS
多くのクライアントは、Windows ベースのシッククライアントアプリケーションにアクセスする必要があります。次の 3 つのプラットフォームから選択できます。
-
Amazon EC2
— ユーザーが Microsoft リモートデスクトップを使用して Windows サーバーベースの環境に接続できるようにする場合、このオプションを選択します。このオプションでは、オペレーティングシステムにパッチを適用し、メンテナンスを行う必要があります。また、ユーザー用のリモートデスクトップサービスクライアントアクセスライセンス (RDS CAL) と有効なソフトウェアアシュアランス (SA) を追加購入する必要があります。詳細については、 AWS ドキュメントの Microsoft Licensing on AWS を参照してください。 -
Amazon WorkSpaces
— ユーザー向けにフルマネージド型の仮想デスクトップインフラストラクチャ (VDI) が必要な場合は、このオプションを選択してください。WorkSpaces を使用すると、ユーザーに永続的な Windows デスクトップエクスペリエンスを提供できます。また、カスタムイメージを使用して WorkSpaces 環境をカスタマイズしたり、 を使用して .NET アプリケーションを WorkSpaces 環境にAWS Systems Manager 配信したりすることもできます。ユーザーは、ブラウザまたは Amazon WorkSpaces クライアント を使用して接続できます。 -
Amazon AppStream 2.0
— 任意の場所からアプリケーションおよび非永続デスクトップへの安全で信頼性が高く、スケーラブルなアクセスを提供するには、このオプションを選択します。AppStream 2.0 を使用すると、ユーザーがウェブから .NET アプリケーションにアクセスできるようになります。既存の RDS CAL とアクティブな SA がすでにある場合は、ライセンスモビリティ を使用することで AppStream 2.0 でそれらのライセンスを使用できます。
リプラットフォーム
リプラットフォームでは、コードをほとんどまたはまったく変更せずにホスティング環境を変更します。運用上のオーバーヘッドを減らし、クラウドの機能とサービスを活用するには、この戦略を選択します。
AWS Elastic Beanstalk
AWS Elastic Beanstalk
詳細については、以下のリソースを参照してください。
-
Elastic Beanstalk での .NET アプリケーションの作成とデプロイ (Elastic Beanstalk ドキュメント)
-
Linux での .NET Core の使用 (Elastic Beanstalk ドキュメント)
-
.NET および のカスタムドメインを使用したマルチアプリケーションサポート AWS Elastic Beanstalk
(AWS 開発者ツールブログ)
既存のアプリケーションをコンテナ化する
Amazon ECS または Amazon EKS を使用して、Docker ベースのコンテナ化されたアプリケーションをホストできます。 は両方のサービス AWS を管理します。この 2 つのどちらを選択するかは、既存の知識と好みによります。どちらのオプションも、Linux ベースのコンテナまたは Windows ベースのコンテナのどちらでも実行できます。
詳細については、以下のリソースを参照してください。
-
Amazon EC2 Windows コンテナ (Amazon ECS ドキュメント)
-
Amazon EKS クラスターの Windows サポートの有効化 (Amazon EKS ドキュメント)
-
EC2 Image Builder とイメージキャッシュ戦略による Windows コンテナの起動時間の短縮
(AWS ブログ) -
クイックスタート: CI/CD for .NET Applications on ( AWS Fargate
ドキュメント)AWS
.NET ベースのアプリケーションのコンテナ化は、使用する .NET ランタイムによって異なります。以下の点を考慮してください。
-
.NET Framework ベースのアプリケーションを Windows コンテナ上で実行 — 既存のアプリケーションに Docker サポートを追加するには、アプリケーションをコンテナ化する方法の概要を記述した Docker ファイルを作成します。を使用してAWS App2Container
、既存の .NET Framework ベースのアプリケーションを簡単にコンテナ化して に移行できます AWS。App2Container は IIS サーバーをスキャンして必要なファイルを特定し、ターゲットアプリケーションを抽出して Docker イメージを作成します。App2Container を使用して、 でアプリケーションをホストするために必要なデプロイアーティファクトを作成することもできます AWS クラウド。 -
.NET または .NET Core – Amazon ECS または Amazon EKS で新しい .NET ベースのウェブアプリケーションを実行するだけでなく、 を使用することもできますAWS App Runner
。App Runner は、コードまたはコンテナー イメージを実行し、負荷分散、自動スケーリング、ログ、証明書、およびネットワークを管理する、サーバーレスのフルマネージドソリューションです。
既存のコードのリファクタリング/リアーキテクト
アプリケーションの現在の環境で達成が難しい機能、スケール、またはパフォーマンスを追加する必要がある強力なビジネスニーズがある場合は、このオプションを選択します。アプリケーションのロードマップに応じて、最新のフレームワークやクラウドネイティブサービスを使用するようにコードを変更するか、クラウドでより適切に実行できるようにコードを再構築するかを選択できます。
最初に利用できるリファクタリングのオプションは、既存の.NET Framework アプリケーションを.NET に移行することです。.NET に移行すると、Windows ではなく Linux で実行できるというメリットが得られます。これにより、総ライセンスコストが削減され、最新のフレームワークや、.NET プログラミング言語の最新バージョンを利用できるようになります。
AWS SDK for .NET
AWS SDK for .NET
.NET Framework アプリケーションをモダナイズする
Porting Assistant for .NET
モノリスからマイクロサービスへ
多くの開発チームは、既存のモノリシックアプリケーションをマイクロサービスに再構築したいと考えています。マイクロサービスベースのアーキテクチャに移行することで、開発チームは開発の俊敏性を高め、コンピューティングコストを削減し、サービスを個別にスケールして、デプロイ時間を短縮できます。 は、古いモノリシックアプリケーションをマイクロサービスベースのアーキテクチャにリファクタリングするプロセスAWS Microservice Extractor for .NET
サーバーレスアプリケーションへのリファクタリング
AWS Lambda
追加リソース
-
Amazon CodeCatalyst
(CodeCatalyst ドキュメント) -
AWS Toolkit for Azure DevOps
(AWS ドキュメント) -
Jenkins を AWS CodeBuild および と統合して CI/CD パイプラインを設定する AWS CodeDeploy
(AWS DevOps ブログ) -
.NET 用のデプロイツールについて AWS
(AWS GitHub) -
.NET on AWS
(AWS ドキュメント) -
aws/dotnet
(GitHub)