Solution
Leverage your cloud provider's fully managed streaming service to implement all inter-component communication asynchronously, whereby upstream components delegate processing to downstream components by publishing domain events that are consumed downstream. Define cohesive groupings of producer components and provision a separate stream for each producer group. Consumers will subscribe to one or more streams as appropriate. Define a standard event envelope format that all events extend, so that all consumers can handle all events in a consistent manner. For example, all events could have the following fields: id, type, timestamp, and tags; and all other fields will be specific to the type of event. Leverage your cloud provider's function-as-a-service offering as the de facto standard approach for implementing stream processors.