Amazon Web Services ブログ
AWS で Windows コンテナを使用して Microsoft Windows Server 2012 をアップグレードおよびモダナイズする方法
このブログ記事は、Windows Server 2012 と 2012 R2 のアップグレード方法に関する 4 部構成のシリーズの第 3 部です。
このシリーズでは、2023年10月に予定されているサポート終了イベントに対応するための選択肢についてご説明します。第 1 部では、サポート終了のジレンマと、インプレースでの手動アップグレードの実行方法と、Windows Server 向けサポート終了移行プログラム (EMP) の概要を説明しました。第 2 部では、Amazon Systems Manager (SSM) を使用してアップグレードを自動化する方法について説明しました。 第 3 部では、AWS App2Container などのモダナイゼーションツールを活用してアップグレードする方法を説明します。第 4 部では、AWS Application Migration Service を使用して Microsoft Windows Server 2012 をアップグレードする方法を説明します。
はじめに
Windows Server のサポート終了 (End of Support、EOS) への対応ブログシリーズの第 3 部へようこそ。Windows コンテナを使用した EOS のモダナイゼーション方法について順を追って説明します。
早速見ていきましょう。
レガシーな ASP.NET Web アプリケーションを Windows コンテナにリプラットフォーム
お客様の EOS の課題解決を支援する中で、レガシーアプリケーションやモノリシックアプリケーションの管理を容易にする目的で Windows コンテナを使用する案件が増えているようです (図 1 を参照) 。ASP.NET Web アプリケーションでは、Windows コンテナが最適な実行方法です。コンテナはもともとポータブルで、スケーラブルで、信頼性があります。ASP.NET Web アプリケーションを Windows コンテナで実行することで、ソースコードの再設計やリファクタリングについて心配する必要がなくなります。EOS となるWindows OS に対応すること以外にも、Windows コンテナにリプラットフォームすることでアプリケーションのモダナイズを開始 (または継続) できます。
App2Container による.NET Framework アプリケーションのモダナイゼーション
前提条件
これらの前提条件の詳細については、こちらのドキュメントをご覧ください。
- アプリケーションに、新しいOSへの移行を妨げるような、OSとの依存関係や Windows API (例:COM 相互運用) が使われていないか確認します。
- 組織の要件に基づいてターゲット Windows OS を設定します。
- 注意:Amazon Elastic Container Service (Amazon ECS) と Amazon Elastic Kubernetes Service (Amazon EKS) は、Windows コンテナを実行するためにサポートされている 2 つのオーケストレーションプラットフォームです。Windows Server 2022 にアップグレードすることをお勧めしますが、一般的なコンピューティングオプションでは Windows Server 2019 と 2022 がサポートされます。Windows Server 2016 は ECS の Amazon Elastic Cloud Compute (Amazon EC2) 起動タイプでのみサポートされています。
- アプリケーションが App2Container (A2C) でサポートされていることを確認してください。
- どのオーケストレーションプラットフォームを使用するか決めてください。Amazon ECS と Amazon EKS は Windows コンテナと App2Container の成果物をサポートしているプラットフォームです。
- オプションで、 Amazon Simple Storage Service (Amazon S3) バケットを指定すると成果物をバケットに出力することができます。また、アプリケーションが完全に機能するテスト環境をセットアップして、App2Container CLI ツールでアプリケーションをターゲットにすることができます。セットアップしない場合は、アプリケーションの成果物は App2Container を実行しているサーバーのローカルに保存されます。
- 手順に従って、移行先の OS バージョン (Windows Server 2019 または 2022) を実行し、移行元のWindow Server 2012 のアプリケーションサーバーからアプリケーションの成果物を抽出するリモートワーカーマシンをセットアップします。
手順については、「Modernize with AWS App2Container Workshop」をご覧ください。その結果、図 2 に示すように、.NET ウェブアプリケーションを AWS でモダナイズします。
- アプリケーションを発見して分析する。
- アプリケーションサーバー上で実行されているすべてのインターネット インフォメーション サーバー (IIS) の Web サイトと Windows サービスを記録する App2Container の分析コマンドを実行します。
- 分析出力ファイルを確認し、必要に応じて、コンテナのベースイメージを所望の移行先 OS になるように調整します。(例:mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2022 — .NET Framework 4.8 Windows Server Core 2022 イメージ)。これは IIS と OS の構成の分析に基づいて自動的に設定されるはずです。
- アプリケーションを抽出してコンテナ化する。
- リモートワーカーマシンで extract コマンドを実行して、指定したアプリケーションのアプリケーションアーカイブを生成します。このアーカイブをワーカーマシンにコピーするか、Amazon S3 プレフィックスを指定することができます。
- containerize コマンドを実行して Dockerfile を作成します。
- コンテナ化されたアプリケーションをデプロイする。
- Amazon ECS または Amazon EKS のアーティファクトを含むようにデプロイ設定を調整してください。次に、アプリケーションデプロイを実行してコンテナイメージを Amazon Elastic Container Registry (Amazon ECR) にプッシュし、アプリケーションを Amazon ECS または Amazon EKS にデプロイします。
- アプリケーションが正常にコンテナ化され、パブリックアクセス向けに保護されたら、本番環境へのデプロイを計画する準備が整います。App2Containerは、アプリケーションのデプロイを容易にする継続的インテグレーションと継続的デリバリー (CI/CD) パイプラインの作成をサポートします。App2Container は、CodePipeline、Jenkins、Microsoft Azure DevOps など、いくつかの CI/CD ツールをサポートしています。App2Container を使用した CI/CD パイプラインの段階的なデプロイについては、ブログ記事「AWS App2Container を使用してコンテナ化された ASP.NET アプリケーション用の CI/CD パイプラインの生成 (英文)」を参照してください。
- 本番環境にプッシュする。
- Windows Server 2012 で実行されているレガシーアプリケーションから、デプロイしたコンテナ化されたアプリケーションの前段にある新しいロードバランサーへのパブリック URL のカットオーバーを計画します。
- アプリケーションに OS の依存関係がない場合は、最新の Windows OS を使用して新しいビルドサーバーをデプロイし、アプリの Dockerfile の FROM 行を変更し (図 3 参照)、新しいコンテナイメージを構築し (図 4 参照)、ローリング更新を行うだけで、今後の OS バージョンのアップグレードは簡単にできます。
注意:本番環境に実装する前に、基盤となるOSに大幅な変更がないことを確認するための適切なテストが必要です。
EOS OS:
New OS:
App2Container の使用手順を詳しく理解するには、App2Container の公開ドキュメントを参照してください。Amazon Relational Database Service (Amazon RDS) for SQL Server にデータベースを移行するユースケースをさらに詳しく知りたい場合は、AWS App2Container によるモダナイズワークショップを参照してください。
リファクタリング — .NET Framework を最新バージョンの .NET へ
組織で.NET Framework コードを最新バージョンの .NET にリファクタリングする準備ができている場合は、Porting Assistant for .NETと AWS Toolkit for .NET Refactoring を利用できます。.NET 6 もしくはそれ以降のバージョンに移行することで、.NET コードを Linux コンテナで実行できるようになります。
クリーンアップ
このブログ記事は手順の説明を目的としており、クリーンアップについては省略しています。アップグレードの進め方をステップバイステップの手順で示しています。
まとめ
このブログ記事では、AWS App2Container を活用して .NET ウェブアプリケーションをアップグレードおよびモダナイズする方法について説明しました。このブログシリーズの次のブログ記事では、AWS Application Migration Service を使用して Windows OS をアップグレードする方法を紹介します。
この 4 部構成のブログシリーズでは、EOS に対処するためのさまざまな選択肢と、AWS のテクノロジー、ツール、エキスパートがこれらの問題への対処にどのように役立つか説明したことを覚えておいてください。
- 第 1 部 : AWS で Microsoft Windows Server 2012 を手動でアップグレードする方法
- 第 2 部 : AWS Systems Manager を使用して Microsoft Windows Server のアップグレードを自動化する方法
- 第 4 部 : AWS Application Migration Service を使用して Microsoft Windows Server 2012 をアップグレードする方法
アップグレードについてご支援が必要な場合は、こちらから AWS にお問い合わせください。お客様の EOS の状況やニーズへの対応を支援いたします。
AWS は、お客様がクラウドを最大限に活用する方法を評価するご支援をします。AWS は数百万のお客様からご信頼いただき、最も重要なアプリケーションをクラウドに移行しモダナイズするためにご利用いただいています。ぜひ、これらお客様の仲間入りしてください。Windows Server または SQL Server のモダナイゼーションの詳細については、 Windows on AWS をご覧ください。今すぐ移行を開始するには、こちらからお問い合わせください。