Restructuring of a monolithic application into microservices for an IT hardware company using Azure DevOps and other tools.
Summary
The company (client) is an industry giant in the sphere of computer hardware solutions, headquartered in the USA. It develops and provides a wide variety of hardware components, as well as software and related services to consumers, SMBs, and large enterprises.
Challenges
The client had a Monolithic Application for their enterprise which made use of traditional app development and deployment strategies. This monolith web Application was deployed on 2 EC2 instances through a Load Balancer. The main challenges faced by the client were low scalability and availability of the application. It was non-portable and compromised on security and monitoring.
Solution
Cloudaeon proposed to split the Monolithic Application into Microservices. This solution was targeted to achieve high scalability, availability, and security of the entire applications cluster and to make any future application development and integration easier.
Technical aspects of the solution
· Restructured the application modules into microservices.
· Used Terraform and Terragrunt as the IaC tool to implement the underlying architecture.
· Used Azure Pipelines to deploy the new infrastructure to AWS Cloud.
· Leveraged docker as the container engine and Kubernetes as the orchestration platform.
· Employed Helm as the package manager to create and deploy Kubernetes manifests.
· Designed and deployed Istio to overcome security issues.
· Used Azure DevOps for Implementing our CICD pipelines.
· Used Prometheus and Grafana for platform monitoring.
Tools used
· Terraform
· Terragrunt
· Docker
· Kubernetes
· Azure DevOps
· Prometheus
· Grafana
· Kiali
· Istio
· Jaeger
· EFK stack
Business value
With Cloudaeon’s solution, the client was able to restructure its legacy application into a modern microservices-based application that was much more scalable, secure, and faster. It brought down the operations overhead for their IT team. Code portability was hugely improved. CI/CD pipelines were implemented through which the client can now build and deploy applications easily to various environments. Monitoring and troubleshooting of the application and infrastructure issues became easier and quicker through the implementation of various monitoring and logging tools.