THE CHALLENGE
Our customer had recently decommissioned one of their U.S. data centers. To expedite their transition to the cloud, they had shifted their on-premise infrastructure to Amazon Web Services (AWS), saving substantial money and delivering increased uptime, among other benefits. The move also positioned them to take a phased approach toward optimizing their infrastructure for the cloud.
Developed on the Jboss platform, many of their applications were tied together, so issues impacting one service often impacted the other. As the final step in their journey to the AWS cloud, our customer needed to re-architect and decouple priority applications to improve stability, flexibility, and scalability.
THE SOLUTION
Our customer asked us to refactor and migrate two high priority applications to a cloud-native architecture. Their internal Karma application enables administrators to manage internal permissions at a granular level. Their Distributor Information Service (DIS) application provides automobile dealership search functionality for their external-facing website. As part of the migration, we also moved our customer to a fully automated pipeline, using Infrastructure as Code (IAC) and Terraform to build the infrastructure.
We chose two main platforms for the applications: AWS Elastic Beanstalk for the Karma Admin component and AWS Lambda serverless compute service for the web server components of both Karma and DIS. We decoupled and re-architected the serverless portions of the applications into Node.JS while keeping the admin portions in Java. By decoupling the applications and eliminating resource sharing, we removed potential risk.
For the Karma Admin, we integrated Azure directory for authentication using AWS Application Load Balancing integration with OpenID Connect (OIDC). The serverless portions of the applications leverage AWS Lambda functions, Amazon CloudFront, and AWS WAF. Amazon RDS for MySQL is used for one of the apps in the portfolio as well as AWS DynamoDB Global tables. For the DIS application we used Amazon Aurora Global RDS.
For the DevOps pipeline, we used Amazon EKS for Jenkins slave nodes to do deployment. We also developed pipelines to deploy the Beanstalks and serverless through the pipeline. We used Excel Release and Artifactory as a part of that pipeline and BitBucket for the repository. For application logging, we used ElasticSearch with Kibana. We leveraged AWS Direct Connect for network connectivity and AWS Transit Hub for VPN connectivity and used tunnels between VPC and the hub.
RESULTS
- Easier to support: Decoupling and refactoring the applications has streamlined support efforts and ensures that any issues that arise are isolated to only one application.
- Increased scalability: The decoupled, cloud-native applications are far more scalable and flexible.
- Continuous release cycle: The DevOps pipeline has enabled CI/CD for faster, higher quality releases.
- High availability architecture: The use of multiple availability zones, active-active mode, and automated failover between regions minimizes downtime.
- Self-healing: These applications were set up for high resiliency, with automated failover between the regions.
TECHNOLOGIES USED
AWS Virtual Private Cloud (VPC), AWS Elastic Beanstalk, AWS Application Load Balancing, AWS Lambda, Amazon CloudFront, AWS WAF, Amazon RDS for MySQL, AWS DynamoDB Global, Amazon Aurora Global RDS, AWS Direct Connect, AWS Transit Hub, Amazon EKS
OUR EXPERTISE
EveryIT has performed hundreds of data and application migrations for large enterprise customers. Our certified practitioners have hands-on, best-practice knowledge of all the major platforms. As an AWS Data Migration Competency Partner, EveryIT has invested in building deep proficiency on the AWS platform.
To learn more about how we can help you, explore our Cloud Services and contact us today.