Azure Migration in the transport business

House icon

Published March 27, 2021

DevOps Consultant

Manuel Ericstam

Azure Migration of Transport Company X

Overview

When looking to modernize and move their aging websites and booking system to the cloud the Company's IT department turned to Solidify AB to help them with the task. Solidify was chosen for their known track record and close collaboration with Microsoft.

Challenges

  • Parts of the company’s systems are based on old Microsoft technologies. i.e., VB6 and COM+
  • Long development cycles, 6–12 month, due to manual release/deploy process and complexity of the installation and setup of the on-prem servers.
  • Build pipelines were slow and time consuming, running on aging OS and hardware since no one knew how to make new build servers, time to build 1h 45min on average.
  • Release/deploy was conducted manually and thus error-prone.
  • difficult and time consuming to add capacity to handle load on high season, resulting in not adding new servers and system overloads as a result on critical times.

Process

After a review, it was decided to conduct the migration with several different approaches to gain business value as quickly as possible.

  • Lift and Shift to Azure as much as possible of the existing solution
  • Find services that where candidates for Containerization and push to AKS.
  • Rewrite those parts that was unable to migrate directly to Azure, using technologies like Azure App service, Azure functions, API management, ETC.

Results

  • As there where long lead-times for new VM's for the on-premises solution (Manual work to create VMs on VMWare)

it was decided to use Azure VM's with automation scripts for the application servers as well as for the CI/CD infrastructure(Build and release agents)

  • Azure DSC, Terraform and Ansible was used to create Azure resources on-demand.
  • Build servers is automatically built in Azure with terraform and were upgraded to 16 cores with 16 build agents.
  • Container build jobs was used to remove the complex installs on build servers. Custom docker image with everything needed for application to build were created (with ability to build VB6 projects)
  • Build scripts were rewritten to build in parallel to reduce build time. build time now 15-30 minutes depending on what is built
  • Release scripts were created to make release as automatic as possible. System downtime for releasing new version is 0 minutes if there are no database changes and less than 10 minutes downtime if database changes are to be deployed.
  • On-premises application servers were categorized and corresponding ansible script for each server type in Azure were created.
  • All on-premises resources, except SQL database were deployed with automation to Azure.

Conclusion

  • Due to corona virus pandemic, highseason server load is still untested in a real live scenario, but with new automation in place a new server can be created and deployed within 30 minutes
  • Next step in the Azure migration, which is an ongoing project, is rewriting parts that still remain on-premises and generally evolving the system to a cloud native solution.