Application Abstraction: Unlocking the Next 6X in Development Velocity at Intuit (Part 1)

Bala Chandrasekaran
Intuit Engineering
Published in
5 min readMay 13, 2022

This blog post is co-authored by Intuit’s Bala Chandrasekaran, Principal Product Manager, Todd Ekenstam, Principal Software Engineer, and Edward Lee, Chief Architect, Development Platform

Systems are maturing to understand user intents and behavior more intelligently with the help of data generated and technologies like machine learning

Intuit is the global technology platform that helps consumers and small businesses overcome their most important financial challenges. Serving more than 100 million customers worldwide — with products such as TurboTax, QuickBooks and Mint — we believe that everyone should have the opportunity to prosper. That’s why our developers never stop working to find new, innovative ways to make that possible.

It’s also why our products are built and operated on a Kubernetes-based development platform.

Intuit has been both an early adopter and a major contributor to cloud-native technologies and related best practices. Developers across Intuit use our software development platform to reduce time spent managing and troubleshooting infrastructure, and to easily adopt modern software development and operational practices such as chaos engineering and progressive delivery.

We’ve increased our development velocity (production releases per developer) six-fold — across 6,000 developers and 2,000 application services — over the past four years.

Unlocking the Next 6X Improvement in Development Velocity at Intuit

Now we’re embarking on a journey to unlock the next 6X improvement in development velocity. To that end, we started with our users — application developers — to identify common productivity challenges. As a core tenet of customer-driven innovation here at Intuit (for developers and customers alike) our approach is to “fall in love with the problem, not the solution.”

Here’s what we learned:

  • Version Upgrades: Developers are required to adopt newer versions of Kubernetes API resources when Kubernetes upgrades are delivered for our development platform. For example, Kubernetes 1.22 removed a few APIs including Ingress networking API. Also, developers must update Kubernetes manifests that either create or revise application best practices. For example, configurable scaling policy requires new fields in the horizontal pod autoscaler (HPA).
  • Application Resource Needs: Developers spend an inordinate amount of time to precisely identify compute resource needs. It is extremely hard for developers to accomplish that without wasting infrastructure or compromising service availability. Because, it requires developers to understand, analyze and configure multiple Kubernetes components such as container resource specifications, Namespace resource quotas and various auto-scaling primitives [Vertical Pod Autoscaler (VPA) and HPA]. Moreover, such configurations must be continuously updated as the product features and customer usage patterns evolve.
  • Technology Adoption: While Intuit’s development platform delivers the essential security, operational excellence and compliance necessary for financial products, developers at Intuit have the ability to further customize the platform through Kubernetes manifests (YAMLs). Developers spend critical development cycles updating Kubernetes manifests and application code when adopting new features, such as service mesh, for application-centric networking and features such as authentication and throttling.

On the one hand, application teams that are focused on delivering value perceive any time spent on activities listed above as a lost opportunity. On the other hand, the platform engineering development platform creates opportunities to improve security, performance, resiliency or cost (efficiency) of the services that make up Intuit’s technology platform.

When developer adoption of such platform capabilities is spread over several months, it’s costly to operate and support multiple versions with disparate features. In turn, adding such an operational burden to the platform tends to decelerate platform innovation.

Our peers in the CNCF end-user community concur on the challenges of managing developer experiences, given Kubernetes rapid adoption by today’s organizations across diverse market sectors.

Is there a win-win for all?

Application Abstraction: Last Mile Delivery of Cloud Native Technologies

At Intuit, we believe the right approach is to decouple application and platform concerns to allow developers to define an application service based on business needs. With application abstraction approach, they’ll be able to define services in terms of SLAs (service-level agreements), such as P90 response time, multi-regional availability or average monthly cost, rather than defining services as Kubernetes or cloud resources. Our innovations in Argo Rollouts are already enabling developers to progressively deliver services over a lifetime.

We like to think of application-centric abstraction as the last mile delivery of cloud native technologies within enterprises like Intuit! We’re confident that our decision to build an application abstraction layer will deliver on 80 percent of the common productivity challenges our developers face in their day-to-day work.

Almost all of the managed services or community projects we’ve observed provide an abstraction of infrastructure or other complex components. While this will continue to benefit us at Intuit, separating the concerns of developers and platform operators will be instrumental in driving further efficiencies.

And, while community-driven projects can still provide us with generic building blocks, as an end-user of public cloud and cloud native technologies, we have an unique opportunity to define more opinionated abstractions that unlock greater benefits to our developers. Ultimately, making it easy for our developers to build applications faster, with high availability, security, and efficiency.

The Next Frontier for Development at Intuit

We’re delighted with our progress in driving development velocity over the past few years, and excited about what the future holds as we continue on our journey.

We’re grateful to community projects, such as Open Application Model (OAM), for paving the way for abstraction of Kubernetes and cloud resources to reduce complexity for developers. And, we’re inspired by the progress we’ve made as a cloud native community in laying a strong foundation for this work through our collaboration on innovation projects for abstraction of underlying infrastructure components.

For a deeper dive, read Part 2 of this blog post to learn how we’re building an Intuit Application Abstraction layer on top of our Kubernetes-based development platform to unlock the next 6X improvement in development velocity.

If you’re attending KubeCon/CloudNativeCon Europe 2022 (5/16–20), we are, too! You can learn more about our Kubernetes-based development platform, and our contributions to cloud-native technology innovation in a variety of sessions throughout the week at the main conference, and co-located events (GitOpsCon Europe, Kubernetes AI Day Europe).

And, if this blog has sparked your curiosity about the tech innovation our developers are driving here at Intuit, visit here and take a moment to join our talent community. We’re hiring!

--

--

Bala Chandrasekaran
Intuit Engineering

Platform Product Management @ Intuit. Curious about cloud-native technologies and data-intensive applications