If data is the oil of the information age, the Web and Application Programming Interfaces (APIs) are its pipelines. What does it take to craft Web APIs of quality and style that feed single-page application frontends rapidly and integrate legacy application backends sustainably?
- Context matters. One size does not fit all; blind faith in a single paradigm, principle, or pattern is bound to fail. Functional and non-functional requirements must drive the design instead. A responsible Web engineer has a rich toolbox to choose from, which includes agile practices and domain-driven design.
- Contracts rule. A unified interface as provided by HTTP promotes interoperability, but does not cover all concerns that consumers and providers have to agree on in practice. The success of OpenAPI Specification and the emergence of platform-independent contract languages make the need for contract modeling and management evident.
- Components contain cost and risk. The list of candidate frameworks, libraries, and other assets continues to grow day by day, both on the application and on the infrastructure level. Microservices and microfrontends promise to promote modularity and loose coupling; API gateways, container technologies, cluster managers, discovery services and service meshes claim to increase flexibility and reliability. Patterns can bring order to chaos by structuring this design space and sharing component-level design wisdom.
This presentation motivates these the three dimensions of Web API design and evolution (context, contracts, and components) in real-world projects, presents recent results from the community and identifies open problems. It debunks some myth about API and service design along the way.
See Olaf’s Blog Post about his ICWE 2020 Keynote.