Couple of architectural questions:
1. There is no persistence of message passed between a Source to Destination? A Worker reads from stdout and puts to stdin and this is all ephemeral
2. A Worker is also a container that lives independently of a source/destination container?
a. If so, is a Worker tightly coupled with a Source/Dest pair? I.e. create a connection, it gets its own worker
b. How many workers are there? Is there a set # in the cluster, 1 per source/dest...?
c. If a worker fails, what is the impact to the related Source/Dest?
3. If a Destination fails, what is the impact to its Source?
a. What happens to in-flight data? Do we assume the data is persistent and we can re-consume?
b. If a destination commits part of its messages to the downstream application, but fails - what is the ability for it to resume? I assume there isn't any?
4. Can a source/destination scale independently? I.e. where the down/upstream application would support parallelism, e.g. Kafka, could a Source scale itself to be many containers working as a consumer group?
a. If so, is the Worker able to scale with it to be able to consume from many Sources in parallel?