今回は、Windowsベースのレガシーな業務システムを、Microsoft Azureのクラウドサービスを活用しながら、最新化あるいはモダン化する場合の選択肢や、各選択肢の利点と課題を紹介します。

業務アプリの最新化/モダン化、3つの道

現在の業務システムのアプリをクラウドに移行することを決定したとしても、アプリを完全に再構築する必要があるとは限りません。最低限のコード変更と、最小限の時間とコストで移行する方法もあります。

10年前に導入した業務システムの代表的なアーキテクチャは、Windows Serverでホストされる「.NET Framework」ベースのアプリケーション(以下、.NETアプリケーション)と、バックエンドとなる「Microsoft SQL Server」などのリレーショナルデータベース(RDBMS)、そして、フロントエンドにWebアプリやOfficeアプリ、GUIアプリケーションといった構成だと思います。

既存の.NETアプリケーションをAzureのクラウドを利用してモダン化する方法については、以下に良いドキュメントが公開されています。

AzureクラウドとWindowsコンテナで既存の.NET アプリケーションを最新式にする

このドキュメントでは、以下の3つの方法がモダン化のアプローチとして示されています。

  • インフラストラクチャのモダン化
  • クラウドに最適化
  • クラウドネイティブ

インフラストラクチャのモダン化

既存のオンプレミスの業務システム環境を、サーバごとクラウドの「サービスとしてのインフラストラクチャ(Infructructure as a Service、IaaS)」上にリフト&シフトするだけでモダン化されます。ハードウェアを資産として所有する形態から従量課金で利用する形態に変更することで、インフラストラクチャの運用コスト化を実現でき、Azureが提供する高い可用性とSLA(サービス品質保証)も得られます。

Windows Server 2012/2012 R2やSQL Server 2012については、無料の「拡張セキュリティ更新プログラム(Extended Security Updates、ESU)」により製品サポート終了後も継続してセキュリティ更新プログラムを入手できるため、2023年10月10日のEoS(End of Service)を延命できます。「Azure Migrate」を使用したオンプレミスの物理サーバ/仮想マシンのモダン化については、この連載の第5回に説明しました。

クラウドにリフト&シフトしたシステムを、最新のOSやコンポーネントにアップグレードすることで、アプリを再設計することなく最新化することができます。ただし、バージョンの隔たりによるAPIや機能の差、仕様変更などにより、追加のコード変更が必要になる場合があります。また、サーバのOSやコンポーネントの更新管理は、利用者側が行う必要があります。最新のOSとコンポーネントへのアプリの対応と、ゲストOSの管理については、オンプレミス・クラウドとサーバの存在する場所が異なるだけで、実行しなければならないことは同じです。

  • 現在のレガシシステムをクラウドにリフト&シフトしてモダン化し、OSとコンポーネントを最新化することでアプリを最新化する

    現在のレガシシステムをクラウドにリフト&シフトしてモダン化し、OSとコンポーネントを最新化することでアプリを最新化する

クラウドに最適化

クラウドに最適化とは、「サービスとしてのプラットフォーム(Platform as a Service、PaaS)」の各種サービスにアプリを移行することです。具体的には、コンテナ技術を用いて、アプリをコンテナ化して「Azure App Service」、「Azure Container Instances(ACI)」、「Azure Kuberenetes Service(AKS)」といったコンテナ対応サービスにデプロイしてホストし、バックエンドも「Azure SQL」などのデータベースサービスを利用します。

  • PaaSサービスを利用して、Windowsベースのアプリをコンテナ化する

    PaaSサービスを利用して、Windowsベースのアプリをコンテナ化する

Windowsでは、Windows Server 2016からコンテナ技術への対応を開始し、機能やパフォーマンスの改善を続けてきました。Azureのコンテナ対応サービスの多くは、Windows Server 2019以降のServer CoreまたはNano Serverに対応しており、.NET Frameworkや.NET、またはWin32 APIベースのWindowsアプリケーションをコンテナ化することができます。ただし、Nano Serverはクロスプラットフォームの.NETアプリケーション向けであり、できることはLinuxコンテナの.NETアプリケーション環境と同等です。

  • Azure App Service、ACI、AKSはLinuxだけでなく、Windows Server 2019以降のWindowsコンテナにも対応(Azure Container AppsはLinuxにのみ対応)

    Azure App Service、ACI、AKSはLinuxだけでなく、Windows Server 2019以降のWindowsコンテナにも対応(Azure Container AppsはLinuxにのみ対応)

第5回に紹介した「Azure Migrate」は、Webアプリやデータベースのモダン化のための評価および移行ツールとしても利用できます。

このアプローチの利点は、Azure Migrateを利用できるなど最小限の労力とコード変更で移行が可能なことです。また、モダン化することで、時間的・季節的な負荷の増減に応じて柔軟にスケールアップやスケールダウン、スケールアウトやスケールインができます。

  • Azure Migrateを利用したWebアプリのモダン化

    Azure Migrateを利用したWebアプリのモダン化

ただし、コンテナ技術の経験がない場合、新たに学習する必要があります。また、運用レベルの技術を習得するには、開発チームへの「DevOps」(DevelopmentとOperationsの複合語)の導入と、CI/CD(継続的インテグレーション/継続的デリバリー)によるデプロイとリリースの自動化、つまり「コードとしてのインフラストラクチャ(Infrstructure as Code、IaC)」の実践が不可欠です。DevOpsの文化が無い企業や組織にとっては、DevOpsの導入が大きな壁になるでしょう。

DevOpsとは?

クラウドネイティブ

3つ目のアプローチは、クラウドネイティブなアーキテクチャで、アプリの開発、デプロイ、リリースのすべてを刷新することです。このアプローチでは特別な対応が必要であり、アプリのすべてを再設計して、コードを大幅にリファクタリングまたは書き換える必要があるため、システムの移行のための時間とコストを押し上げます。

クラウドネイティブアーキテクチャへの移行は、技術的な課題と複雑さに直面することになります。システムの刷新を10年間先送りにしてきた企業にとっては、レガシーな業務システムのモダン化の選択肢にはなり得ないかもしれません。

  • クラウドネイティブな実装でアプリを刷新する

    クラウドネイティブな実装でアプリを刷新する