The Many Flavors of API Coordination
Try out the many flavors of API coordination.
Join the DZone community and get the full member experience.Join For Free
With the increasingly collaborative scenarios in which APIs are used, as well as the growing maturity and scale of microservice architectures, the idea of API coordination has become a hot topic.
Sam Newman and Phil Calçado have popularized the “Back-end for Frontend (BFF)” deployment pattern, which describes a topological approach to coordinating service API calls. However, coordinating API calls in a distributed software system is not a new problem. It has been a concern even from the early days of SOA. In my experience, software architects can often conflate the different types of coordination when trying to determine function placement in their application integration efforts. To help address this pitfall, here is a classification system I use:
Aggregation is the stateless assembly of multiple responses in a fan-out/fan-in request/reply scenario. This is common when you have a remote network client who wants to reduce chattiness to the back-end, such as in the BFF pattern. This pattern can be handled by an infrastructure intermediary like an API gateway.
Orchestration is the stateful coordination of back-end requests and responses, where the sequence and content of interactions depend on prior responses. Historically, this has been implemented in stateful middleware (e.g. workflow engines), but may be better implemented in composite services owned by business-aligned teams.
Choreography is the reactive coordination of component actions based on events in a distributed system. This is a higher-level pattern that is best implemented by taking an event-driven approach to engineering a system of multiple components, not implemented strictly through middleware. Within the API choreography pattern, there is an implicit need for “event broadcasting” – the asynchronous distribution of events from one component to many subscribers – and this event distribution function is a good candidate for middleware implementation.
I have found that delineating API coordination in this way is helpful when determining the appropriate approach to implementation. Check out this article for more resources on application integration in general.
Published at DZone with permission of Matt McLarty, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.