最新の .NET にリファクタリングして Linux に移行する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

最新の .NET にリファクタリングして Linux に移行する

概要

レガシー .NET Framework アプリケーションのモダナイズは、セキュリティ、パフォーマンス、スケーラビリティの向上に役立ちます。.NET Framework アプリケーションをモダナイズする効果的な方法は、最新の .NET バージョン (6 以降) に移行することです。これらのアプリケーションをオープンソースの .NET に移行する際の主な利点をいくつか紹介します。

  • Linux オペレーティングシステムで実行することで Windows ライセンスコストを削減するには

  • 最新の言語の可用性を活用する

  • Linux で実行するように最適化されたパフォーマンスを得る

多くの組織は、古いバージョンの .NET Framework をまだ実行しています。これは、古いバージョンの脆弱性が Microsoft によって対処されなくなったため、セキュリティ上のリスクを引き起こす可能性があります。Microsoft は、.NET Framework 4.5.2、4.6、および 4.6.1 の最新バージョンのサポートを終了しました。古いバージョンのフレームワークを引き続き実行する場合のリスクと利点を評価することが重要です。リスクを軽減し、コストを削減するには、.NET の最新バージョンへのリファクタリングに時間と労力を費やす価値があります。

コストへの影響

コンピューティング、メモリ、ネットワークリソースのバランスを提供する汎用 EC2 インスタンスタイプ (m5) を検討してください。これらのインスタンスは、ウェブサーバー、中規模のデータベース、ソースコードリポジトリなどのさまざまなアプリケーションに適しています。

例えば、米国東部 (バージニア北部) の Windows Server (ライセンス込み) に 4 つの vCPUsと 16 GB のメモリを備えたオンデマンド m5.xlarge インスタンスの料金は、月額 274.48 USD です。Linux サーバー上の同じリソースのコストは毎月 140.16 USD です。この例では、アプリケーションを .NET Framework から最新バージョンの .NET に移行し、Linux サーバーでアプリケーションを実行すると、コストが 49% 削減されます。コストは、EC2 インスタンスの選択時に選択したオプション (インスタンスタイプ、オペレーティングシステム、ストレージなど) によって異なります。Savings Plans またはリザーブドインスタンスを使用して、コストをさらに最適化できます。詳細については、 を使用してコスト見積もりAWS 料金見積りツールを実行します。Windows に含まれるインスタンスの場合、ライセンスコストは、料金モデルに関係なく、vCPU あたり 1 時間あたり 0.046 USD です。

これらの .NET Framework アプリケーションを最新の .NET に移植するには、開発者の労力が必要です。アプリケーションとその依存関係を評価して、それらがターゲットプラットフォームバージョンと互換性があるかどうかを確認する必要があります。AWS Porting Assistant for .NET は、.NET Framework アプリケーションをスキャンして .NET 互換性評価を生成する支援ツールです。これにより、アプリケーションを Linux とより迅速に互換性を持たせることができます。Porting Assistant for .NET は、.NET との非互換性を特定し、既知の代替品を見つけて、詳細な互換性評価を生成します。ソリューションを移植した後、依存関係を使用してプロジェクトを正常にコンパイルするには、手動でコードを変更する必要があります。これにより、アプリケーションの Linux へのモダナイズに伴う手動作業が軽減されます。アプリケーションが ARM プロセッサをサポートしている場合、Linux に移行すると Graviton インスタンスを使用する機能がロック解除されます。これにより、さらに 20% のコスト削減を実現できます。詳細については、 AWS コンピューティングブログの「Powering .NET 5 with AWS Graviton2: Benchmarks」を参照してください。

AWS Toolkit for .NET Refactoring.NET Upgrade Assistant など、レガシー .NET Framework アプリケーションを最新の .NET に移行するのに役立つツールもあります。

コスト最適化の推奨事項

.NET Framework アプリケーションを移行するには、以下を実行します。

  1. 前提条件 – Porting Assistant for .NET を使用するには、アプリケーションのソースコードを分析するマシンに .NET 5+ をインストールする必要があります。マシン上のリソースには、1.8 GHz 以上の処理速度、4 GB のメモリ、5 Gb のストレージ容量が必要です。詳細については、「Porting Assistant for .NET ドキュメント」の「前提条件」を参照してください。

  2. 評価 – Porting Assistant for .NET を実行可能ファイル (ダウンロード) ファイルとしてダウンロードします。ツールをダウンロードしてマシンにインストールし、アプリケーションの評価を開始できます。評価ページには、最新の .NET と互換性のない移植されたプロジェクト、パッケージ、APIs が含まれています。このため、評価後にソリューションでビルドエラーが発生します。評価結果を表示または CSV ファイルにダウンロードできます。詳細については、「Porting Assistant for .NET ドキュメント」の「ソリューションの移植」を参照してください。

  3. リファクタリング — アプリケーションを評価した後、プロジェクトをターゲットフレームワークバージョンに移植できます。ソリューションを移植すると、プロジェクトファイルと一部のコードが Porting Assistant によって変更されます。ログを確認して、ソースコードの変更を確認できます。ほとんどの場合、コードは移行とテストを完了して本番環境の準備を整えるために追加の労力を必要とします。アプリケーションによっては、エンティティフレームワーク、アイデンティティ、認証などの変更が含まれる場合があります。詳細については、「Porting Assistant for .NET ドキュメント」の「ソリューションの移植」を参照してください。

これは、アプリケーションをコンテナにモダナイズするための最初のステップです。.NET Framework アプリケーションを Linux コンテナにモダナイズするには、ビジネスおよび技術上の推進要因が多数存在する可能性があります。重要な要因の 1 つは、Windows オペレーティングシステムから Linux に移行することで、総所有コストを削減することです。これにより、アプリケーションをクロスプラットフォームバージョンの .NET およびコンテナに移行してリソース使用率を最適化する際のライセンスコストを削減できます。

アプリケーションを Linux に移植したら、 AWS App2Containerを使用してアプリケーションをコンテナ化できます。App2Container は、直接デプロイできるエンドポイントサービスとして Amazon ECS または Amazon EKS を使用します。App2Container は、アプリケーションを繰り返しコンテナ化するために必要なすべてのInfrastructure as Code (IaC) デプロイアーティファクトを提供します。

その他の考慮事項とリソース