By Dilu Sadasivan, Solution Architect – DXC Technology
By Surendra Kumar Upadhyay, Solution Architect – DXC Technology
By Dhiraj Thakur, Solutions Architect – AWS
One of the leading car manufacturing companies was looking to modernize their users’ online shopping experience. The customer chose DXC Technology as their implementation partner due to DXC’s vast domain experience in the automotive industry and in-depth technology expertise.
DXC Technology created a serverless solution on Amazon Web Services (AWS) using microservice architecture. This helped the customer to deliver a robust online shopping experience with the flexibility to choose design, accessories, and features.
DXC Technology is an AWS Premier Consulting Partner and Managed Service Provider (MSP) that helps clients harness the power of innovation.
In this post, we’ll discuss how DXC analyzed the customer’s legacy application, the challenges they faced, and how the proposed microservice architecture-based solution design works. We’ll also discuss a functional use case and demonstrate the benefits of DXC’s design and implementation approach.
DXC’s automotive customer had a legacy application with the following challenges:
- The current user shopping experience was outdated.
- It did not provide a robust vehicle filtration and comparison functionality.
- Payment options were limited.
- Due to its monolithic nature, deployment of frequent user interface (UI) changes on the application was a challenge.
- Lack of proactive monitoring for any issues.
- Availability and scalability issues with the existing application.
- Application maintenance was a challenge due to lack of modularity.
DXC implemented a microservice-based solution with a separate service for each component including composer, inventory, and payment estimation.
These components use AWS services including Amazon Route 53, AWS WAF, Application Load Balancer, Amazon API Gateway, AWS Lambda, AWS AppSync, and Amazon Elastic Container Service (Amazon ECS) to build the complete solution.
Figure 1 – Architecture diagram.
The architecture above depicts how the solution was implemented.
The solution uses Application Load Balancer to route traffic to backend microservices deployed on Amazon ECS. There are multiple containers deployed for different functionalities of application through Amazon ECR, which also make them scalable and independent for code changes to application functionality.
Amazon DynamoDB is used to store user and vehicle session data, which is compatible with internet scale applications.
AWS AppSync is used for triggering different Lambda functions to fetch vendor data and additional data from the data center. All of the services are monitored through Amazon CloudWatch and AWS X-Ray. The deployment is automated through Jenkins.
Figure 2 – Application flow diagram.
- Users access the company website through desktop or mobile application.
- Amazon Route 53 resolves the FQDN and forwards to the Application Load Balancer.
- AWS WAF filters traffic against common web exploits.
- Listener rules in Application Load Balancer route traffic to specific microservices in Amazon ECS with path-based routing.
- ECS services runs task.
- Amazon DynamoDB is used for storing and querying user and vehicle session data
- The microservice uses GraphQL queries to get the user, vehicle, and payment information.
- The managed service AppSync GraphQL endpoint queries multiple Lambda functions and scales to meet API request volumes. It also helps to connect securely with Lambda.
- Lambda functions are deployed to get the required information from internal API gateway in the data center, or from external partner and vendor applications.
AWS Services Used in the Solution
Amazon ECS – To help the customer adopt containers and its management quickly, DXC selected AWS Fargate—a serverless offering from AWS for compute—to run microservices. This helped them to focus on application development rather than spending time on container management. ECS services have been configured for auto scaling per the demand.
AWS Lambda – DXC developed multiple Lambda functions in Java used to fetch different data from external and internal API endpoints. Event-driven architecture helped in reducing cost. Lambda-provisioned concurrency have been enabled for assured performance while scaling.
Amazon DynamoDB – DynamoDB tables were used for storing user and vehicle session data across multiple ECS services.
Application Load Balancer – This was deployed in public subnet; it receives traffic over SSL and forwards it to ECS, which is in private subnet.
AWS WAF – To protect against common web exploits and improve security, Application Load Balancer is attached with this web application firewall. DXC’s solution enables common managed rules from AWS, as well as header key filtering.
Logging and Monitoring
Amazon CloudWatch – CloudWatch logs are extensively used for application-level logging and auditing. CloudWatch metrics are created for log patterns to discover application issues, and automated tickets are generated in case of any threshold breaches.
AWS X-Ray – X-ray trace monitoring and canary deployment helped the customer to evaluate performance of the application. Increased observability and end-to-end views of the application are achieved through ServiceLens.
The customer had three application environments: quality assurance (QA), staging, and production. DXC deployed the infrastructure as code using an AWS CloudFormation template, which helped replicate the same resources and configuration in other customer environments.
For continuous code integration, infrastructure pipeline was created using Jenkins and GitHub. DXC infrastructure code developers commit the code in GitHub, which automatically builds the infrastructure in QA using Jenkins. This helped reduce additional tasks of executing the code individually.
Integrating CloudWatch monitoring for each service as part of the code itself helped identify any issues or anomalies from the time they were deployed.
DXC created a separate CI/CD pipeline for application deployment. Different stages were included in the pipeline for static code analysis, compliance checks, Java application build, Docker build, pushing the Docker image to Amazon ECR, and starting ECS with a new task definition.
The pipeline included a code compliance check and Docker image compliance check against Center for Internet Security (CIS) standards. Baking security into deployment process helped avoid costly breaches in customer environments.
DXC implemented the solution through the combination of their build approach, adhering to AWS best practices as well as their application development approach.
Results achieved for the customer included:
- Application performance issues were not reported during the new product launch and seasonal discount offer when user traffic was very high.
- Application availability has been improved and complied with customer expectation of 99.95%.
- Core application remains unaffected in case a single module fails.
- Observability of the application helps the customer see utilization and performance in real-time.
- Faster deployment with infrastructure as code (IaC) and application pipeline helps DXC to have frequent and iterative changes in the application without downtimes.
- The application deployment frequency was decreased to days from weeks, which effectively helps the customer to roll out new functionality faster.
- DXC provides the managed services to this application. Services are separated in the microservice architecture, which enables DXC to scale the individual services independently as opposed to the entire application. This helps in cost savings for customer.
With the application development approach used by DXC Technology, it was possible to achieve the car manufacturer’s defined success metrics with minimal downtime, and at low risk.
Through AWS managed services, DXC was able to utilize an approach that changed all layers of the solution in a controlled, planned, and tested way—and with rollback possible should any issues occur. Auto scaling was used to scale up computing power during peak traffic.
The new solution is based on AWS best practices, has been subject to rigorous testing (including for security posture), and is one of the largest AWS implementations in the U.S. automotive industry.
The customer is now positioned to undertake the change program that the migration and upgrades have unlocked with increased agility. The ability to spin up new systems to accommodate development projects in parallel, rather than being environment constrained on-premises, is a big plus.
DXC Technology can be contacted for your AWS requirements.
DXC Technology – AWS Partner Spotlight
DXC Technology is an AWS Premier Consulting Partner and MSP that understands the complexities of migrating workloads to AWS in large-scale environments, and the skills needed for success.
*Already worked with DXC Technology? Rate the Partner
*To review an AWS Partner, you must be a customer that has worked with them directly on a project.