API Evolution Without Versioning

QCon San Francisco 2022

Session Application Programming Interface

API Evolution Without Versioning

Tuesday Oct 25 / 10:35AM PDT, Ballroom BC

Abstract

Versioning is usually the first–and too often, the only–technique architects reach for when imagining a breaking change to an API’s interface. Based on my experience managing the evolution of a public API, I’ve recently cataloged several alternative techniques and their tradeoffs. I released the first version of an open-source service virtualization tool called mountebank in early 2014. Since that time, I have made or incorporated several breaking changes to its public API, some of them significant, without once requiring users to manage a version upgrade process.

In this presentation, I’ll share the learnings I’ve collected over nearly a decade of changes, including:

  • Patterns of evolution in addition to versioning

  • The natural tradeoffs that exist between API elegance, obviousness, and stability

  • Broadening the conversation from API evolution as an architectural concern to a broader product management concern

Interview

I'm in a technology leadership role at ThoughtWorks, so it's a lot of community building capability development and a lot of trying to make sure that the flow of knowledge between the work that we do in various teams happens so that we can all learn from each other. A rising tide lifts all ships mentality. 

I have maintained an open source product that is controllable through an API for about nine years. And I intentionally did it as an experiment to try to play with a versionless approach to an API. So even though it's evolved considerably in the nine years, it's done so without requiring an upgrade from consumers and there's some downsides to that that we'll talk about in the talk, but the upsides is a much easier consumer experience. And so I wanted to talk about various strategies and patterns that I've used to help maintain that consumer experience through a long lived, flexible API.

The persona would be for those developers, architects, technical product managers who are interested in treating API as a product, maybe more strategic APIs, maybe they are partner or public APIs or strategic inside the enterprise, and looking for patterns of evolution that take into account not just implementation complexity, which is a common concern today, but also consumption complexity.

Partly, I want them to walk away with more empathy for what it means to be on the receiving end of an API that goes through rapid versioning and just the busy work required to keep up with the pace of evolution. And then a little bit of awareness in terms of the tradeoffs around implementation complexity and interface complexity.

Topics

Application Programming Interface Modern APIs Open Source Patterns of Evolution Versioning DevOps Architecture
76% senior dev or higher
1:11 speaker ratio
60+ practitioners

QCon San Francisco 2022 is a three day conference for senior software engineers, architects and team leads. An international program committee of working engineers selects every session. Patterns and practices, not products and pitches.

Share

From the same track

Tuesday 25 October

10:35 Ballroom BC Session Application Programming Interface API Evolution Without Versioning Brandon Byars North America Head of Technology @thoughtworks 11:50 Pacific DEKJ Session Application Programming Interface What API Product Managers Need Deepa Goyal Product Strategy @Postman, previously Product Developer @PayPal & @Twilio 13:40 Ballroom BC Session Application Programming Interface Scaling GraphQL Adoption at Netflix Tejas Shikhare Senior Software Engineer @Netflix 14:55 Ballroom BC Session [Panel] Who Cares About Your API? Brandon Byars, Jim Barton, Deepa Goyal, Tejas Shikhare 16:10 Seacliff D Session Unconference: Modern APIs Shane Hastie Global Delivery Lead for SoftEd and Lead Editor for Culture & Methods at InfoQ.com 17:25 Ballroom BC Session Application Programming Interface Sidecars, eBPF and the Future of Service Mesh Jim Barton Field Engineer @Solo, previously @Redhat @Amazon & @Zappos