Charging Up the Cloud: EVgo's Infrastructure Makeover

Behind the Scenes: How I Migrated EVgo's Applications to AWS

Charging Up the Cloud: EVgo's Infrastructure Makeover
💡
This project was executed while I was working as a Cloud Architect at Caylent.

🏢 ABOUT THE COMPANY

EVgo is the largest public fast-charging network for electric vehicles (EVs) in the United States. The company accelerates the mass adoption of electric vehicles by providing a convenient, reliable, and affordable charging network that delivers fast charging to all users.

⛰ CHALLENGES

EVgo aimed to migrate three applications— two Node.js backend applications and one React frontend application—from Rackspace to AWS. This was to consolidate workloads and reduce infrastructure costs.

The applications were running on bare-metal servers in Rackspace, and I needed to containerize them: the backend applications would run on AWS Elastic Kubernetes Service (EKS), while the frontend application would be hosted on S3 with CloudFront to ensure global content delivery.

Previously, the client's technical team had to update these applications manually. The migration needed to be completed within a tight deadline, without altering the core application architecture or code, and with minimal downtime.

✅ SOLUTION

To address the client's needs, I conducted a complete discovery of their applications to understand their dependencies on backing services (databases) and integration with third-party APIs.

By the end of this discovery process, I had a comprehensive overview of their infrastructure environment and identified what was required for the migration.

In our decision-making, I prioritized their needs and concerns by aligning with the client on the optimal migration strategy—re-platforming (lift and reshape).

Once the architecture and migration strategy were established, I executed the following tasks to implement the migration plan:

  1. Improved existing Dockerfiles to build the Node.js container images.

  2. Developed the Bitbucket Pipelines CI workflow to build, test, and push the container images to the Amazon Elastic Container Repository (ECR).

  3. Created a manifest file to configure the necessary Kubernetes objects—Deployment, Service, and Ingress—to run each application.

  4. Established the Bitbucket Pipelines CD workflow to deploy the application on the EKS cluster.

  5. Created and configured the infrastructure resources to host the frontend application on AWS, including an S3 bucket and CloudFront distribution.

  6. Conducted the traffic migration during a maintenance window scheduled with the client, strategically chosen for minimal application usage to reduce the impact on their customers.

🏆 OUTCOMES

By reshaping the infrastructure architecture of these applications, EVgo successfully consolidated its workloads into a unified AWS environment, where other workloads were already operational.

This consolidation not only streamlined their operations but also significantly lowered overall infrastructure costs, allowing them to decommission their old infrastructure in Rackspace.

The new AWS environment provides enhanced scalability, reliability, and security, essential for EVgo's operations.

Implementing CI/CD workflows through Bitbucket Pipelines has dramatically improved operational efficiency.