大手小売チェーン(全国800店舗)が、オンプレミスのWindows Server 2019上のIISで稼働する20本の.NET Framework 4.8 ASP.NET MVCアプリケーションをAWSへ移行・モダン化しようとしています。現状は各アプリが独立したIISサイトとして動作しますが、複数のアプリが共有の.NETクラスライブラリに依存しており、同一Windowsサーバー上での同居によるリソース競合が発生しています。開発チームはDockerの基礎知識はありますが、Kubernetesの運用経験はありません。要件は以下のとおりです。 ・各アプリを独立してデプロイできること ・.NET Frameworkコードのリライトは行わないこと ・サーバー管理を最小化してインフラ運用コストを削減すること どのアプローチが最も適切か。
AWS App2Containerは、IIS上で稼働する.NET Framework 4.8アプリケーションを分析してWindowsコンテナイメージとして自動生成するツールである。コードの書き直しなしにコンテナ化できる点が最大の利点であり、「.NET Frameworkリライトなし」という要件に完全に合致する。 Amazon ECS Fargate(Windows containers)にデプロイすることで以下の要件をすべて満たせる。 ①アプリごとに独立したECSサービスとして定義することで独立デプロイが可能 ②Fargateによりサーバー管理が完全に不要となり運用コストを削減 ③リソース競合を排除した独立した実行環境を提供 ④Kubernetes未経験のチームでも運用できる低い学習コスト 選択肢Bのリフト&シフト(EC2)はコードを変更せず移行できるが、EC2インスタンスのOSパッチ・IIS管理などサーバー運用が継続的に必要であり「サーバー管理最小化」の目標を達成できない。 選択肢Cの.NET 8へのアップグレードはLinuxコンテナ化が可能になるが、.NET Frameworkから.NET 8への移行はAPIの互換性検証やコード修正が必要であり、「コードのリライトは行わない」という方針に反する。 選択肢DのEKS(Windows node group)はApp2Containerとの組み合わせは技術的に可能だが、Kubernetesクラスターの管理・アップグレード・運用にはKubernetes経験が必要であり、未経験チームには運用負荷が過剰に高い。