The client is a leading HR consultancy in US providing Performance Management and Training solutions.
The client has Java-based SAAS applications hosted on AWS which had performance issues during peak load, resulting in poor customer experience and lack of customer satisfaction.
Monthly hosting cost on AWS seemed to be very high when the size and complexity of deployed applications were considered
Old Architecture
We started with an analysis of the AWS infrastructure, application code, and RDS instances.
Based on our findings, we proposed a cost-effective solution with highly available auto-scaling AWS architecture to accommodate the application loads.
1.Analyzed the traffic and CPU load and usage history.
Traffic to the load-balanced instances was not properly routed.
Found that some EC2 instances are no longer used.
2.Analyzed the RDS Instances and configurations.
There were 4 RDS clusters in the service.
We found that only 3 clusters are used, two clusters for the production environment, one cluster for Staging/QA environment. and the other one is not used.
The RDS instances were outdated, and not optimized /default parameter group was configured.
We terminated the old ones and created 2 new RDS clusters with optimized parameter groups and restored the databases.
3.Analyzed the elastic search clusters.
There were two Elastic search clusters in service that were outdated. Each one is configured with 2 master instances and 10 nodes and found the elastic search usage was very low.
Configured 2 new elastic search services with 1 master and 2 nodes and dropped the old ones.
4.Analyzed EC2 Instances and load-balancing configurations
EC2 AMIs are deprecated
In total 9 EC2 instances were running for Jenkins, 2 production servers, UAT, and Proxy, but other than production and UAT instances none was used to the optimum.
Terminated the old instances like deprecated images.
Replaced the old instances with the latest version of Amazon Linux 2 instances
Classic load balancers are used in the EC2 configurations which are outdated
Load balancer was configured to a single EC2 instance, so the load was not distributed.
Replaced the classic load balancers of AWS with newer application load balancers.
Too much memory is consumed by the hosted java application.
Java heap configurations optimized.
Created CDN for serving media content.
Configured firewall for preventing hacking.
Configured Cloud Watch and sysops alerts for monitoring application and instance health.
Configured AWS-Guard duty: – Monitoring detailed security findings for visibility and remediation.
5.Analyzed the application code to determine the impact of infrastructure on the code.
6.Implemented security best practices.
New Architecture
Results