Case Study - CI/CD Migration to AWS Native Services

CI/CD on AWS
CI/CD Migration to AWS Native Services

Executive Summary:
Stratus10 worked along with RealtyMogul in optimizing their continuous delivery and deployment process. Jenkins was responsible for the CI/CD pipeline but it was difficult to maintain and implement new deployment features, the AWS Developer tools (Code Deploy, Code Build, Code Pipeline) replaced Jenkins as a new pipeline enhancing the deployment process and reducing the maintenance work to the minimum.

About RealtyMogul:
RealtyMogul is an online marketplace for real estate investing, connecting investors who want to invest in real estate with institutional quality real estate investments. Through the RealtyMogul platform, investors have the opportunity to invest in real estate opportunities online through a private, secure website. Investors can browse investments, review due diligence materials and sign legal documents securely online. Once invested, investors have access to an investor dashboard, giving them 24/7 access to watch how their money is working for them.

Website: https://www.realtymogul.com

Customer Challenges:
RealtyMogul was looking to optimize its deployment process and eliminate the burden of maintaining and managing servers to host Jenkins, all of these in a cost-efficient manner.

Their existing CI/CD pipeline managed by Jenkins presented multiple challenges like excessive maintenance, slow deployments, and was difficult to scale. The Jenkins jobs required custom scripts and security credentials like AWS secrets were needed to be hosted in Jenkins in order to run the jobs.

Triggering a deployment was a manual process that consisted of adding a Jenkins build job with parameters and adding the parameters such as deployment id and environment name manually. 

Jenkins was also cost-inefficient. The master and slave instances were used only a few times and remained idle for long periods of time.

Why AWS:
RealtyMogul wanted to optimize its current deployment process by leveraging the maintenance and management to AWS. Maintaining and updating Jenkins usually took hours of labor and staff to document all the complex processes.

AWS Developer tools were a perfect fit to solve the complexity of Jenkins. AWS Code Pipeline to orchestrate the overall deployment, AWS code build to build Docker Images and run Unit Testing, and AWS Code Deploy to deploy a new version of the docker images to ECS.

Why Stratus10:
Stratus10 was the perfect fit to deliver the CI/CD solution for RealtyMogul. Our expertise across the AWS suite of services ensured that RealtyMogul’s solution was delivered using the best combination of tools available. Our experience in delivering complex CI/CD pipelines across the AWS ecosystem resulted in a smooth transition of Jenkins to AWS Developer Tools.

The Solution:
Stratus10 delivered a solution consisting of AWS Code Pipeline, AWS Code Build, AWS Code Deploy, and Cloudformation.

CloudFormation was used to automate the creation of AWS resources such as ECS, Load Balancers, and IAM Roles.

Code Pipeline was used as the orchestration tool and the source code repository hosted in Github has direct integration with Code Pipeline using webhooks. The first stage of the Pipeline started when a commit was pushed to the Github Repository to a specific branch, the second stage consisted of Code Build that built the Docker image using the commit id as a tag and pushing this new created Docker image to an ECR repository. The next stage consisted of Unit Testing using Code Build, this stage ran multiple individual tests in the Docker image. The last stage was the deployment of the newly created Docker image to an ECS cluster running EC2 instances. The deployment consisted of creating a new task definition with the new docker image and updating the service with the new task definition. 

CloudFormation templates were used to create ECS services and tasks as well as to update any additional infrastructure configuration required during the deployment. In addition, CodeDeploy was used to update the ECS tasks definitions.


Results and Benefits:
The CI/CD solution delivered by Stratus10 has reduced the operational complexity, improved the performance and cost optimization goals set by the customer. Their deployments are now delivered through AWS managed services reducing the overhead of operation and management. By using Code Pipeline as an orchestrator the integration with the other AWS services is fully supported and managed by AWS. AWS Codebuild allows the client to pay just when a deployment is triggered and save costs of idle resources.

Use case: DevOps Automation

Client: RealtyMogul

Date: July 2020

Category: DevOps / Serverless / Migration / Containers