As members of the Intuit® software engineering team, we understand—and fully support—the company’s mission of powering prosperity around the world. One way we do this is by solving customer problems across Intuit and the industry. We had an opportunity to solve one such problem (revolving around Kubernetes and Continuous Delivery), and our efforts led us to being named Scott Cook Innovation Award winners for the category of New to the World. We also won the Top End User Award from the Cloud Native Computing Foundation (CNCF).
It’s an honor to have our efforts and our solution recognized. It’s even more of an honor to be able to help individuals and businesses across the globe become more efficient, while also contributing to the open-source community. So how did we do it? Glad you asked.
Novel approach to new code releases
Before discussing our solution for releasing code faster when moving applications to Kubernetes, here’s a brief background on Kubernetes.
In 2018, when Intuit began migrating thousands of services to Kubernetes, there was a need to improve the development process by adopting DevOps tools and practices leaning on capabilities provided by technologies such as Kubernetes and containers. To help alleviate these pressures, Intuit acquired Applatix, an open-source contributor, CNCF member, and creator of Argo, a container-native workflow engine for Kubernetes.
In welcome to Applatix, Intuit Executive Vice President and CTO Marianna Tessel wrote, “By acquiring Applatix, we are able to further improve our development process by adopting devops tools and practices leaning on capabilities provided by technologies like Kubernetes and containers. Their addition to the Intuit team will bring new capabilities to our services-based platform and fully automate our CI/CD/CO (continuous operations) pipelines, allowing us to improve our customer and developer experiences.”
The charter for the Applatix team was simple: Create a self-service developer platform that is easy to use, takes away the toil of infrastructure management, and lets them use the cloud native technologies they want, with an amazing developer experience.
While building the platform, we realized there’s a need for an enterprise- ready continuous delivery solution.
This is where our solution comes in. We knew that the only way to improve developer productivity was to simplify the release process, so we developed a declarative, GitOps-based Continuous Delivery tool for Kubernetes called Argo CD (Continuous Delivery).
While Kubernetes provides users the ability to declaratively define their target state, Argo CD allows users to declaratively specify applications using GitOps, as well as the process for deploying, monitoring, and managing complex deployments.
Application definitions, configurations, and environments should be declarative and version controlled. Application deployment and lifecycle management should be automated, auditable, and easy to understand.
Before Argo CD, imperative scripts were used to execute the steps in deploying applications. When something went wrong, developers had to manually determine which step failed, and create compensating steps to complete the deployment. For complex deployments that used canary or blue-green deployment strategies, it was very difficult to determine exactly what went wrong and how to fix it. Even when the deployment seemed successful, there was no way to easily verify that the state of the system matched the desired target state. It was not uncommon for latent deployment problems to manifest over time as the load or environmental conditions changed.
Argo CD enables automated deployments using GitHub as the source of truth for the desired state of the application. Any updates to the repository are then used by Argo CD to ensure that the corresponding applications are updated to reflect those changes. This gives organizations a powerful tool to automate deployments, and an easy and standardized way to to version control and audit.
Users can also take advantage of Argo CD’s real-time interactive visualizations of Kubernetes resources and deployments to help them troubleshoot. Argo CD was built for Intuit’s enterprise-grade and scale needs, and includes features such as SSO, RBAC, Multi cluster support, a lightweight cluster cache, and smart client-side diff algorithms that give the tool the power to monitor two million constantly changing resources and reconciling data stores in several thousand Git repositories.
This simple and fast tool has:
- Decreased deployment time by 80%.
- Decreased rollbacks to under 10 minutes.
- Decreased hours developers spent writing detailed instructions (Argo CD automatically fills in the details).
- Decreased hours spent in meetings overseeing the old deployment process.
Annually, Argo CD saves Intuit 500,000 developer hours (equivalent to 57 years).
With such time savings and increases in productivity, we recognized that this tool would add value to other companies in the industry, so we open-sourced it. Today, more than 170 companies use Argo CD, including Red Hat, TicketMaster, Major League Baseball, Tesla, Volvo Cars, and Swisscom. Here is the official list of users of Argo CD outside Intuit.
We are currently working together with the community and vendors such as CodeFresh and Red Hat to build and define the future roadmap for Argo CD, so we can continue to deliver value and innovation to Intuit and the community.
Powering prosperity through open source
We’re excited that our new Continuous Delivery solution that was designed to solve an Intuit challenge is now helping hundreds of other companies. The fact that it has grown from a few Intuit engineers to an open source community of nearly 400 contributors, where external contributions now count for 80% of the code, is equally exciting.
Intuit is committed to building a culture of open source. Working together—harnessing the power of many—allows us to drive innovation in the tech industry, embrace the security benefits of open source software, and ultimately help ensure the prosperity of each individual.