All the examples studied up to now were implemented as a single process. But software of a higher complexity, running either on the backend side or on the edge side, is usually split into multiple processes, and on multiple systems or devices. Communicating between processes and systems can be done in many different ways, and many solutions exist. For backend communication, one solution is to expose REST-oriented APIs, such as the audio transcoding service implemented throughout this book. The advantage of this solution is that it is easy to integrate with many existing tools. However, from a reactive point of view, it means that observables cannot be exposed outside the service: an HTTP request completes as soon as the first answer is sent, while an observable can send many items.
In cases where several services are implemented in a reactive...