Analysed the problem in the existing VMware vSphere environment: slow provisioning of new virtual machines, slow time-to-first-deployment for new applications/microservices, and high infrastructure/hardware overhead for running a large number of VMs on bare metal.
Analysed possible solutions and made the case for a Kubernetes cluster as a forward-looking direction for the organisation:
- Lower hardware, organisational, and "human" overhead of managing a large VM fleet and its provisioning
- Faster first deployments and subsequent deployments alike
- Ability to introduce alternative QA processes alongside the existing ones
- Containerisation, eliminating the "works on my machine" problem
- Ability to stand up separate dev, QA, and staging environments
Built a PoC on personal infrastructure connected to the company network (VPN/SSH) — on the K3s cluster described in the previous point — onboarding lower-priority microservices first. Connected to the company's staging config service over a site-to-site VPN into the private infrastructure hosting the cluster, to minimise the application changes required by the new deployment method.
Presented the plan, analyses, solutions, and PoC to key stakeholders. After getting buy-in: organised a session for key developers, fully covering the trade-offs and risks involved. Rolled out the solution to the staging environment first, then waited for the production green light.
The process was capped off with an internal training/conference for ~15 engineers (including the CIO), explaining the architectural decisions behind the migration and how teams could apply it day to day.