“GoodRx reduces pipeline deployment time by 50%”
As well as speeding up our pipeline, Codefresh has enabled us to improve performance, enhanced our security, and reduced latency.
The technological backdrop
GoodRx’s tech stack was a broad mix, reflecting the specific needs of each team and some additional tech inherited with the acquisition of other companies. The company primarily uses Python, Go, and Node.js to write code, and nearly all of its workload is on AWS, with some on GCP and Azure. For CI/CD, it predominantly used TravisCI, with some teams using CircleCI, GitLab, and other solutions.
As a fast-growing enterprise, GoodRx wanted to speed its engineering process from concept to deployment by modernizing and streamlining its infrastructure. The company also decided to move to container-based, serverless-based deployments. A key component of the new approach included unifying the CI/CD from the 7 different systems in use at the time to a single platform. Each team in the company was invited to submit its own list of requirements, and these were then condensed into a top 10. The most critical was finding a platform that could provide both a scalable private runner to run pipelines on their own clusters and support the company’s new Kubernetes-based infrastructure.
The hybrid requirement was a deal breaker for us; the new solution would [also] have to be compatible with [Kubernetes]. While most options we explored ticked one or other of these boxes, only Codefresh ticked both.
“Being able to deploy in a hybrid environment was a must-have for us and one of the main reasons we chose to migrate to Codefresh,” says Andy Chan, Principal Architect at GoodRx. “As a healthcare company, we have to be compliant with many regulations, so we can’t have our data sitting in someone else’s cloud. Also, since we had almost completed our migration to Kubernetes, the new solution we selected would have to be compatible with that. While most options we explored ticked one or other of these boxes, only Codefresh ticked both.” Codefresh’s Hybrid mode (a software-as-a-service [SaaS] engine with private deployed Codefresh runtime environments) allowed them to manage the workload and deploy more safely and easily to their production environments.
Within two months, GoodRx had migrated 99% of its workload, comprising more than 100 projects, from TravisCI onto Codefresh, taking a lift and shift approach to translate the logic almost line by line. No additional optimization was required.
“The migration was pretty straightforward, with just a short learning curve as we got used to the differences between Codefresh and the other solutions we had been using,” Chan said. “The Codefresh team was on hand to provide support along the way.”
The migration was pretty straightforward [and] the Codefresh team were on hand to provide support along the way.
Since the migration to Codefresh, GoodRx’s developers have improved the speed of their pipeline, enhanced performance, and reduced latency. They are also enjoying the deeper insight provided through the Codefresh deployment dashboards to view their container development without having to log in to the AWS Console. They also noted they make good use of the helpful metrics like CPU and memory usage that are part of the Codefresh user interface (UI).
Meanwhile, the company’s security team is happy with the built-in secret sharing features that make it easier for developers to use and share proprietary information, on top of the overall benefits of a hybrid cloud environment.
Once a piece of code is in GitHub, Codefresh almost instantly creates the pipeline and starts working…this is a huge time-saving improvement.
“Once a piece of code is in GitHub, Codefresh almost instantly creates the pipeline and starts working,” Chan said. “In the past, we would have to wait and wait until an available worker could pick up the job and get started, so this is a huge time-saving improvement. We decreased a TravisCI pipeline from 45 minutes down to 20 minutes in Codefresh — even without any optimization. Since we are now able to deploy workers natively in our own environment, latency has been cut down in a big way, and we can also control the hardware specs so if we have a really specific requirement on build time, we can choose a faster machine. As well as being compatible with a hybrid cloud environment (SaaS plus private runner), Codefresh has a built-in variable-sharing or secret sharing feature that can easily be used at a global company-wide level. This can’t be found in most other products and this has been ultra-helpful in enhancing security.”
GoodRx is now looking forward to completing its GitOps and Kubernetes integration so it can gain the full benefits of the Codefresh solution.