This resulted in the need for more manpower, effort and time for deployment. RapidValue also found that the apps did not have any scaling configured. The client was using the “single server method” that is known to have problems with application scaling. Also, Microservices were being deployed in a single node application, individual service deployment was impacting the other running services and therefore, the client was not getting the actual microservices benefits.
The client wanted to deploy the back-end applications across five regions, and they were finding it difficult to deploy artifacts in different regions. They were facing issues in managing the changes in each deployment.
We containerized the back-end APIs and decoupled the APIs for deployment using docker as a container. This helped in ensuring that individual deployments never impact other APIs. Also, Jenkins and AWS CodeDeploy was used for auto-deployment. This reduced the time and manpower effort drastically, making deployments 10x faster.
For the front-end deployment we used Jenkins + AWS Command Line interface (CLI) and plugins for auto-deployment to Amazon CloudFront including the auto cache clear in CloudFront. In order for the solutions to be scalable for high availability and performance, AWS ECS was used. ECS was used to enable auto-scaling and zero downtime deployment.
AWS services utilized: