API Design At Zalando
Zalando announced their Platform strategy in early 2015, but their move from Product to Platform company began five years earlier, with a migration from Magento to a bespoke, custom-built ecommerce stack
I was lucky to spend some time at Zalando, leading a Platform Product team building "data science as a service" APIs. I've already written about my experience helping to build these, and helping to create a developer experience to support them.
One of the key opportunities Bill de hÓra "sold" me on, prior to joining Zalando, was to learn more about the Platform governance structure in Zalando. How it was defined, has evolved, and how a strong Platform infrastructure - tools, processes, policies - enabled good API/Platform governance to happen in a 16,000+ person company.
I could spend a ton of time documenting, based on memory, the various aspects of Zalando's governance and infrastructure that impressed me the most. Instead, this excellent post from Maxim Tschumak and Dr. Thomas Frauenstein describes many of the decisions - and rationale for all of them - in detail.
At a high level, the aspects they talk about include:
- APIs-as-a-Product and API First Principles. APIs are treated as products, and are explicitly defined, reusable, and discoverable by teams within Zalando.
- API Design. Once customer research has begun, APIs are drafted outside of code first. They're also documented before a line of code is written (OpenAPI spec).
- API Discoverability. Because APIs are defined to a common standard, and can/should be used by any team across Zalando, an API portal consumes OpenAPI specs to produce a repository of discoverable APIs.
- Early Review and Feedback. At the prototyping stage, API consumers and other stakeholders can provide feedback. This helps to surface commonalities and differences between use cases, and across available APIs.
- API Implementation. Once all of the above has been achieved, implementation of APIs is the easy bit. A set of standard technologies makes this even easier.
- Publishing and Operation. Deployment is super simple (Kubernetes), by including the API specification in a Docker image. The API history is automatically tracked, and monitoring is easily activated using ZMON.
I highly recommend reading the full post at engineering.zalando.com.