Modernize applications
Assess the application estate with Azure Migrate, upgrade Java, .NET and C++ code with GitHub Copilot modernization, and host each workload on App Service, Azure Container Apps or AKS according to how much control it needs.
The problem
Older applications run on outdated frameworks, unsupported runtimes and servers that need constant care. Upgrades are tedious and risky, and teams lack a clear picture of dependencies across dozens or hundreds of apps.
Once code is ready, picking a hosting model is the next hurdle: full Kubernetes brings power and operational load, while simpler platforms limit control.1
The approach
- Discover and assess: Azure Migrate, described by Microsoft as a free service, discovers servers, databases and web apps, assesses readiness and cost, maps dependencies and can build a business case.
- Upgrade and adapt code: GitHub Copilot modernization (generally available) analyzes and upgrades Java, .NET and C++ applications. A modernization agent in the Modernize CLI handles assessment and planning across many apps; the IDE experience applies changes, migrates dependencies to Azure services, containerizes, generates infrastructure as code and scans for CVEs after upgrades.
- Choose hosting:
- App Service for web apps.
- Azure Functions for function-style code.
- Azure Container Apps for serverless containers and jobs with scale to zero; it does not expose the Kubernetes API, and Microsoft notes many teams start here.
- AKS when you need the Kubernetes API; Microsoft recommends AKS Automatic for most new workloads and AKS Standard for custom networking, Windows node pools or specific VM sizes. The control plane is created at no cost and you pay for nodes.
- Databases: move data tiers in parallel (see Modernize databases).
When a simpler route is enough: apps that only need to leave a data center can be rehosted on Azure VMs with Azure Migrate first and modernized later.1234
Conceptual architecture
Diagram as a list
Agents & automation
- Modernization agent (Modernize CLI)Assessment and planning across many appsConnects to GitHub Copilot modernization in the IDE
Data & analytics
- Managed databases (Azure SQL and others)Modernized data tier
Developer tools
- GitHub Copilot modernization in the IDEUpgrades code, containerizes and generates infrastructure as code
Cloud & hybrid infrastructure
- Existing applications and serversSource workloadsConnects to Azure Migrate
- Azure MigrateDiscovery, assessment, dependency mapping and business caseConnects to Modernization agent (Modernize CLI)
- Azure App ServiceManaged hosting for web appsConnects to Managed databases (Azure SQL and others)
- Azure Container AppsServerless containers and jobsConnects to Managed databases (Azure SQL and others)
- Azure Kubernetes Service (Automatic or Standard)Full Kubernetes for complex workloadsConnects to Managed databases (Azure SQL and others)
Technologies and their roles
GitHub Copilot2
Code upgrade and migration
GitHub Copilot modernization upgrades Java, .NET and C++ apps and prepares them for Azure.
Azure Container Apps3
Serverless container hosting
Runs microservices and jobs without managing Kubernetes directly.
Azure Kubernetes Service (AKS)4
Full Kubernetes
For workloads that need the Kubernetes API; AKS Automatic is Microsoft's default recommendation for new workloads.
Azure SQL5
Managed data tier
Azure SQL Managed Instance is Microsoft's recommended target for most SQL Server migrations.
What you need first1
- An application inventory with owners, runtime versions and business priority
- Azure Migrate discovery (appliance or imported inventory)
- Source control and tests for each app before automated upgrades
- An Azure subscription for deployment targets
- A landing zone with networking and identity agreed
Risks and how to reduce them
- Automated upgrades break behavior6
- Run tests after each upgrade step and review generated changes like any pull request.
- Choosing Kubernetes when a simpler host would do3
- Start with Container Apps or App Service unless you need the Kubernetes API.
- Hidden dependencies cause outages after migration1
- Use Azure Migrate dependency analysis and move tightly coupled apps together.
- New vulnerabilities after dependency upgrades2
- Use the CVE scan that runs after upgrades and keep dependency scanning in pipelines.
Related
Sources
- About Azure Migrate (opens in a new tab)
- Analyze applications and migrate to Azure by using GitHub Copilot modernization (opens in a new tab)
- Comparing Container Apps with other Azure container options (opens in a new tab)
- What is Azure Kubernetes Service (AKS)? (opens in a new tab)
- What is Azure SQL? (opens in a new tab)
- About GitHub Copilot (opens in a new tab)
Thank you. Your correction was sent.
The editors check it against the sources. If you left an email address, they may reply about it.