The challenge
A business-critical application ran on ageing on-premises servers with manual deployments that happened only a few times a year, each one requiring a weekend outage.
Hardware was nearing end of life and the team was nervous about any change.
Our solution
We started with an architecture review and a phased roadmap, then containerised the application with Docker without changing its behaviour.
Next came automated build-and-deploy pipelines in Azure DevOps, Infrastructure as Code and a migration to Azure App Service and AKS for background services. Traffic was switched over gradually behind Azure Front Door.
- Docker images and identical environments from dev to production
- Azure DevOps pipelines with automated tests and approvals
- Database migrated to Azure SQL with replication for cutover
- Gradual traffic shift with instant rollback
Architecture
Edge
- Azure Front Door
Compute
- App Service (web)
- AKS (workers)
Data
- Azure SQL
- Blob Storage
Ops
- Azure DevOps
- Azure Monitor
Technology
- Docker
- Azure App Service
- AKS
- Azure SQL
- Azure DevOps
- Terraform
- Azure Monitor
Outcomes
- Cutover completed with no customer-facing downtime
- Deployments went from quarterly weekend events to routine weekday releases
- On-premises hardware was retired on schedule