API-ACE - Analytics-based Continuous Design and Evolution of Microservice APIs
As we enter the age of continuity, service-oriented software systems are not only open towards the rest of the world, but are expected to continuously evolve to deal with changing requirements and adapt to their dynamic environment and unpredictable workloads. This project will focus on the critical element of such systems, the interface (or API), which decouples the internal implementation of every microservice from its consumers. The project will focus on the needs of designers of microservice APIs who attempt to balance consumer requirements against service implementation constraints by exposing the minimal and simplest possible surface to connect the two. While different API design strategies have been proposed (such as consumer-driven contracts or API-first design), there is a tendency to assume APIs will freeze just before the corresponding microservice is deployed into production. In reality APIs continue to change together with the rest of the microservice architecture, but their safe evolution becomes increasingly difficult and expensive, especially when having to ensure that each microservice can continue to independently undergo a high frequency stream of changes, supported by continuous delivery processes handling many releases a day. The objective of the API-ACE project is to establish a novel data-driven approach to the design and evolution of microservice APIs where the expectations of API designers can be continuously validated against the actual usage of the API by their consumers. To do so, a deeper understanding of APIs and the corresponding design processes is required so that the impact of each decision on the quality of the resulting architecture can be estimated. Focusing on APIs will allow us to reduce the complexity of the problems involved as modeling APIs will allow to abstract away implementation details of each microservice without removing the information (e.g., the behavior of consumers interacting with the API) necessary to study the relationship between critical API design decisions and the corresponding API qualities affecting the entire microservice architecture. In more detail, we plan to address the following research questions in our studies: How can API quality aspects be rigorously specified? How can API qualities be quantified beyond relying on manually created estimates? How can API qualities be checked in a rapid release context both within the delivery pipeline and at runtime? How can such checks be specified against a formal model of the API? How can a continuous feedback loop supporting the re-design of microservice APIs be established supported by a rich set of API quality indicators, design heuristics and guidances to fix quality defects?