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
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.
Part of the track
Modern APIs: Building and Evolving Hosted by Thomas Betts Senior Laureate Software Architect @BlackbaudFrom 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 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. 11:50 Pacific DEKJ Session Application Programming Interface What API Product Managers Need Deepa Goyal Product Strategy @Postman, previously Product Developer @PayPal & @Twilio With thousands of APIs being built across the industry, serving millions of developers worldwide, and driving billions in revenue, there is a need to manage APIs as products. Building great API products requires both building technically sound APIs and creating an API experience to match. 13:40 Ballroom BC Session Application Programming Interface Scaling GraphQL Adoption at Netflix Tejas Shikhare Senior Software Engineer @Netflix GraphQL is steadily gaining popularity as an API technology choice for Client to Server communication. However, it can be daunting to realize the benefits of GraphQL without significant investment. 14:55 Ballroom BC Session [Panel] Who Cares About Your API? Brandon Byars, Jim Barton, Deepa Goyal, Tejas Shikhare Who cares about your API? Everyone. DevOps has shown us that when developers care about operations, they write better software. What other viewpoints should developers consider when they're building software? 16:10 Seacliff D Session Unconference: Modern APIs Shane Hastie Global Delivery Lead for SoftEd and Lead Editor for Culture & Methods at InfoQ.com What is an unconference? At QCon SF, we’ll have unconferences in most of our tracks. 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 Controversy over the future of service meshes and their architectures is swirling. This is a vital discussion as enterprise migration to microservice and Kubernetes-based architectures continue. This talk incorporates the latest community developments to explore what the future looks like.