Using containerization to deliver software at-scale with zero downtime
A global professional services firm wanted to learn how to release software at scale with automated testing and a containerized development approach.
The firm’s existing tax application deployment process was slow and infrequent — only being released once or twice a year — which was causing delays in fixing bugs and releasing new features. The firm wanted guidance on how to coordinate code changes without business disruption.
To increase the firm’s software delivery velocity, we implemented Azure Kubernetes Services (AKS): An open-source system for automating deployment, scaling, and management of containerized applications, which gives the firm the capability to release software every Sprint. Plus, we migrated the platform from Azure Windows to Azure Linux, saving the firm 40% in licensing costs
- Slow feature delivery times due to legacy application’s age and brittleness
- Infrequent deployment events, which increased risk of variances and defective releases
- Challenges with coordinating independent code changes across teams and providing fast feedback
- Juggling deployments across multiple geographic zones with unique data security restrictions
- Higher costs due to inability to scale up and down as needed for tax season and off seasons
- Lack of high availability leading to unnecessary system outages
AgileThought’s solution architects worked closely with the firm’s development teams to implement Kubernetes, streamline development processes, and automate delivery. Initiatives included:
- Demonstrating the value of DevOps and ensuring the development teams were automating manual tasks – such as provisioning, dynamic scaling, and monitoring – correctly
- Migrating the organization from a Windows-hosted platform to a Linux-hosted solution, saving the firm 40% in licensing costs
- Teaching development teams how to develop and deliver containerized versions of services, so they could readily deploy the services to the orchestration platform
- Consulting with the delivery teams to ensure that each new build attained 80% minimum unit test coverage with 100% pass rate
- Architecting the CI/CD process to accelerate feedback from the initial code check-in to the build, automated unit tests, and automated integration tests
- Designing and delivering a framework that facilitates the identical build-and-release patterns used across all 48+ microservices to various cloud targets
- Educating the firm’s test automation engineers on how to facilitate automated integration and regression test management
Tighter Integration Between Dependent Teams
With Kubernetes, the development teams are more autonomous and can create ad-hoc test environments as needed. Teams can collaborate better and verify code changes before they get moved to upper environments, reducing the odds of defects in production.
High Velocity, Low-Risk Incremental Changes
Kubernetes provides a fail-safe for the firm in case it needs to revert features or changes. This can be done in two ways:
- The firm can roll back changes and return an operating environment to a previous state simply by removing the new deployment and re-enabling an older version
- The firm can also use a blue-green deployment pattern, which allows the development team to release a new version (blue) of an application while its current version (green) is still running. With this pattern, the firm can deploy releases as frequently as they want during normal business hours, yet still have a low-risk backout option if necessary
High Resiliency and Auto Recovery Capabilities
Kubernetes minimized the firm’s on-call alerts by 50%, which gives engineers extra capacity to focus on delivering value to the organization rather than keeping the lights on. When a service crashes or dies unexpectedly, Kubernetes simply removes the broken version and replaces it with a new one. Now, when alerts do occur, they’re mostly alerts from Kubernetes to let engineers know the problem has been resolved.
Flexibility of a Cloud-Native Operating Platform
Since the firm’s application is accessed by users around the world – and data laws vary from country to country – the firm needed multiple Kubernetes instances to remain in compliance but still orchestrate at scale. These Kubernetes clusters are aligned to specific zones so users can benefit from faster response times and zero downtime, all while obeying individual data separation laws.