Suppose we are implementing an image processor application. The end-user provides an image in some format your API will need to take this into account somehow and allows the user to perform combinations of the following operations:
Flip horizontal and vertical, rotate +/- n degrees, convert to grayscale, Resize, generate a thumbnail, rotate left, Rotate right
The user can specify which operation or operations to perform on the image. Upon completion of the transform, the user should have access to the resulting image file. Operations can be applied in an order specified by the caller.
The application should be designed to be cloud-hosted. Transformation pipelines should run quickly, and the caller should not have to wait an unreasonable time.
Assume this image processor application using a model where each transformation function is deployed in its own container, and that each container listens for work on a queue (think micro-services model). Complete the remaining model/design of this shared diagram showing how the “API” delivers work into the system and how the work might progress through the requested transformations until complete. (Note: I am defining “container” here to mean a standalone function, it might be helpful to think of “container” as a persistent process on a server somewhere in the network.)
(Hint: what is important here is order-preservation, so what is the right way to structure this?)