Amazon Web Services ブログ

AWS での .NET モダナイゼーションへの道筋

この記事はソリューションアーキテクトの遠藤宣嗣が翻訳しました。原文はこちらです。

AWS は 2008 年から .NET ワークロードをサポートしています。長年にわたり、.NET は柔軟性の低い Windows 専用のフレームワークから、モジュール型のクロスプラットフォームランタイムへと変化してきました。現在では、レガシーな .NET Framework アプリケーションを Windows 上で実行できるだけでなく、Linux 上でも最新の .NET アプリケーションを実行することができます。これらはすべて AWS で完全にサポートされています。従来の .NET Framework アプリケーションは AWS 上で実行できますが、.NET ワークロードを最新化することでコスト削減、コンテナとサーバーレスの活用、マイクロサービスとクラウドネイティブアーキテクチャへの移行が可能になります。

この記事では、.NET のモダナイゼーションのさまざまなアプローチを AWS の支援ツールやガイダンスとともに紹介します。この記事では、.NET Framework と明確に区別するために、クロスプラットフォームの .NET(以前は .NET Core と呼ばれていた)を「最新の .NET」と呼びます。

.NET アプリケーションをモダナイズする理由

まず「.NET モダナイゼーション」が何を意味するのか、そしてなぜ考慮すべきかについて説明しましょう。.NET モダナイゼーションには、1) アプリケーションコードを最新の .NET にアップグレードすること、2) クラウドとコンテナへの移行、3) ライセンス製品からオープンソースへの移行、4) 最新のアーキテクチャへの移行が含まれます。アプリケーションとともにデータも移行する必要があるため、データベースについても同様の考慮事項があります。

最初に、レガシーな.NET Framework から「最新の .NET」 へ移行することで、新しい機能を利用できるようになり、パフォーマンスが向上します。.NET Framework 4.8 は Windows で引き続きサポートされていますが、このバージョンの活発な開発は行われていません。対照的に、最新の .NET は定期的にアップデートされ、毎年、新機能とパフォーマンス改善が行われています。

2つ目に、スケールと従量課金の柔軟性があるクラウドに移行することができます。クラウドでは、デファクトスタンダードとなっているコンテナを使用することもできます。 コンテナを使用することで、アプリケーションの移植性が高まり、サーバーの使用効率が上がり、クラウドにおけるサービスの選択肢が広がります。AWS のコンテナ サービスの詳細は、AWS でのコンテナをご覧ください。

3つ目は、オープンソース製品に移行することでコストを削減できます。「最新の .NET」 コードは Linux 上で OS ライセンスの料金なしで実行できます。また、SQL Server やその他のプロプライエタリなリレーショナルデータベースからオープンソースのデータベースに移行することで、ライセンス料金を削減できます。AWS のリレーショナルデータベースや目的別のデータベースの詳細は、AWS クラウドデータベースをご覧ください。

4つ目に、クラウドでアーキテクチャをモダナイズできます。
単一の大規模な「モノリシック」アプリケーションをマイクロサービスに変換することで、疎結合と複雑さの軽減による技術的・組織的なメリットが得られます。AWS でのマイクロサービスの詳細は、マイクロサービスで学ぶことができます。さらに一歩進めて、完全にクラウドネイティブなアーキテクチャを採用し、クラウドのメリットを最大限に活用することもできます。マネージドサービス、サーバーレス、目的別のデータベース上に構築されたイベント駆動型のソリューションは、疎結合で俊敏性と効率性に優れ、監査可能なものです。これらの詳細は、クラウドネイティブとはイベント駆動型アーキテクチャとはAWS でのサーバレス で学ぶことができます。

このような選択肢がある中で、.NET アプリケーションのモダナイゼーションをどこから始めたらいいのか、どこを目指すのか迷うかもしれません。それぞれのアプローチのメリット、技術的な作業、必要な労力を理解することが役立ちます。

モダナイゼーションへのアプローチ

AWS では、モダナイゼーションを旅路に例えることがありますが、それは誰にとっても同じものではありません。AWS で .NET アプリケーションをモダナイズするために複数のアプローチがあり、その中にはよりシンプルなものもあります。AWS の支援ツールを使ってマネージドサービスを利用する 4 つのアプローチを見ていきましょう。

アプローチ

ツール

メリット

ポートフォリオを評価して、モダナイゼーション戦略を立案する Migration Hub Strategy Recommendations 複数のアプリケーションをモダナイズするための最適な戦略とアプローチを特定する
Windows コンテナ上で .NET Framework をリプラットフォームする AWS App2Container コードを変更せずに最小限の労力で AWS に移行する。Windows ライセンス料を削減するためにサーバーを統合する
Linux コンテナ上のモダンな .NET に .NET Framework をリファクタリングする AWS Toolkit for .NET Refactoring、または
Porting Assistant for .NET
OS のライセンス料なしで Linux 上で実行することによりコストを削減する
モノリシックな .NET アプリケーションをマイクロサービスにリファクタリングする AWS Microservice Extractor for .NET スケーラビリティ、アジリティ、安定性の向上

アプリケーションポートフォリオの評価とモダナイゼーションの計画

どこから始めれば良いか分からない場合は、ここから始めてください。モダナイズするアプリケーションが複数ある場合は、個々のアプリケーションに焦点を当てる前に、アプリケーションポートフォリオの評価を行うことをおすすめします。そうすることで、モダナイゼーションの優先順位が明確になり、戦略の特定につながります。これは、旅行の前に計画を立てるのと同じように、モダナイゼーションを始めるのに理想的な出発点です。モダナイゼーションのスピードを上げることができる、繰り返し適用できるパターンが見つかるかもしれません。

High-level overview of assessing a portfolio of applications with AWS Migration Hub Strategy Recommendations.

AWS Migration Hub Strategy Recommendations (MHSR) は、オンプレミスまたは AWS で実行されているアプリケーションの移行とモダナイゼーションの戦略を構築するのに役立ちます。MHSR はサーバー、アプリケーションのソースコード、データベースを分析します。そして、大規模なモダナイゼーションを支援するのに役立つ最適な戦略とツールに関するガイダンスを提供します。

Windows コンテナ上の .NET Framework のリプラットフォーム

.NET Framework の IIS Web アプリケーション を Windows コンテナを使用して、通常はコードを変更せずに、最小限の労力で AWS に移行できます。アプリケーションをコンテナ化することで、サーバーを統合し、コンピューティングリソースをより効率的に使用できるため、Windows ライセンスコストを削減できます。コンテナ化されたアプリケーションは、最終的に Amazon Elastic Container Registry (ECR) の Windows コンテナイメージになります。Windows コンテナは、Amazon Elastic Container Service(Amazon ECS) で で、あるいは、Kubernetes がお好みの場合は、Amazon Elastic Kubernetes Service (Amazon EKS) でホストできます。Amazon ECS にデプロイする場合、AWS Fargate を使用して、Windows コンテナをサーバーレスでホストするオプションもあります。

AWS App2Container(A2C) コマンドラインツールを使用すると、アプリケーションを分析し、Amazon ECS または Amazon EKS 向けの正しい依存関係、ネットワーク構成、デプロイ手順を含むコンテナイメージを自動生成できます。A2C は AWS へのデプロイも処理します。

High-level overview of migrating a .NET Framework application to Windows containers on AWS with the App2Container tool.

A2C の仕組みは次の通りです。まず、A2C はサーバーをスキャンして Web アプリケーションのインベントリを作成します。次に、選択した .NET Framework IIS アプリケーション用の Windows コンテナ イメージが作成されます。3つ目に、デプロイメント アーティファクトを使用した CI/CD パイプラインが作成されます。最後に、Amazon ECS または Amazon EKS 上でサービスが作成されます。これで、.NET Framework アプリが AWS 上の Windows コンテナで実行されるようになります。このモダナイゼーションパスを完了するには、データベースを AWS に移行し、元の環境から他のアプリケーションの依存関係を移行する必要もあります。

.NET Framework から Linux コンテナ上の「最新の .NET」へのリファクタリング

.NET Framework アプリケーションを「最新の .NET」 に移植し、Linux 上で実行することでライセンスコストを節約できます。移行が完了すると、AWS App RunnerAmazon ECS、または Amazon EKS で管理された Linuxコンテナ内でモダナイズされた dotnet アプリケーションを実行できます。AWS App Runner はよりシンプルな Web アプリケーションに最適であり、Amazon ECS と Amazon EKS は複数のコンテナサービスのオーケストレーションを処理できます。

High-level overview of refactoring a .NET framework application to modern .NET using AWS Refactoring Toolkit for .NET.

AWS Toolkit for .NET Refactoring(英語) または Porting Assistant for .NET ツールを使用して、移行作業を迅速に開始しましょう。これらの支援ツールは、.NET Framework アプリケーションをスキャンして、「最新の .NET」 との互換性の問題を特定し、既知の置き換え候補を検索し、詳細な互換性評価を生成し、コードをLinux に対応するように変更します。おそらく手動での移行作業が必要になることもありますが、これらの支援ツールが大部分の作業を肩代わりしてくれます。互換性評価は、レガシーな WCF アプリケーションを CoreWCF に移行する(英語)など、移植の問題を解決するための戦略とソリューションを提示してくれます。

どちらの移行ツールを使用すべきか検討する際、Porting Assistant for .NET はオープンソースであるのに対し、.NET Refactoring 用の Toolkit は AWS 環境でのテストなど追加機能を提供し、Visual Studio に統合されていることを考慮してください。

モノリスからマイクロサービスへのリファクタリング

マイクロサービスは、ソフトウェア開発におけるアーキテクチャ上のアプローチであり、ソフトウェアを小さな独立したサービスで構成し、明確に定義された API を介して通信します。密結合のモノリシックなアプリケーションと比較して、マイクロサービスはアプリケーションのスケーラビリティを向上させ、開発速度を速めます。マイクロサービスは技術的な面だけでなく、組織的な面でも優れています。各サービスは最も適したチームが管理できるからです。AWS のマイクロサービスの詳細は、マイクロサービスをご覧ください。

High-level overview of refactoring a monolith to microservices using AWS Microservice Extractor for .NET.

マイクロサービスへの移行は、Strangler Fig(英語) パターンに従い、AWS Microservice Extractor for .NET ツールを使用することで、徐々に進めることができます。このツールは、.NET Framework とモダン .NET アプリケーションの両方のリファクタリングを簡単にします。Microservice Extractor はアプリケーションを分析し、コンポーネントと依存関係を可視化します。機械学習に基づいてマイクロサービス化に適した候補を推奨したり、コンポーネントを手動でグループ化したりすることも可能です。ビジネスドメインを分離し依存関係を取り除くことでコードのリファクタリングを行い、ツールを使用してグループを個別のサービスプロジェクトに抽出します。Microservice Extractor は、Porting Assistant for .NET との統合を通じて、サービスを抽出しながら .NET Framework コードを最新の .NET に移植できます。AWS 上の .NET マイクロサービスへのリファクタリングの詳細は、テクニカルガイドの .NET アプリケーションのモノリスからマイクロサービスへの移行(英語)を参照してください。

まとめ

この記事では、.NET のモダナイゼーションに向けたい幾つかのアプローチを紹介し、その過程で AWS が提供する支援ツールがどのようにガイドして作業負荷を軽減してくれるかについても触れました。.NET アプリケーションのモダナイゼーションを開始するには、AWS で .NET ワークロードをモダナイズをご覧ください。 そこでは、これらのアプローチに関するガイダンス、ツール、デモ、詳しい解説などの情報を参照できます。この投稿で説明したアプローチに加えて、AWS で Windows ワークロードをモダナイズMicrosoft ワークロードモダナイゼーションガイド(英語)Microsoft ワークロード向け AWS モダナイゼーションツール リファレンスガイド(英語) で、追加のアプローチを確認できます。

投稿者について

David Pallmann

David Pallmann

David Pallmann は AWS の EC2 チームのシニアプロダクトマネージャーです。彼のミッションは、AWS を .NET 開発者にとってワールドクラスのエクスペリエンスにすることです。David は以前、エンジニアリング、コンサルティング、プロダクト、テクニカルマネージャの役割を担っていました。彼は WCF に取り組み、後に最初の .NET ベースのエンタープライズサービスバスである Neuron ESB を開発しました。X では @davidpallmann でフォローしてください。

翻訳者について

Noritsugu Endo

遠藤 宣嗣

遠藤 宣嗣 は、AWS Japan のソリューションアーキテクト (SA)として、日本市場において ISV ベンダーを中心にお客様の SaaS Journey とマイクロソフトワークロードのアプリケーション モダナイゼージョンを支援しています。