Everything related to Stream Processing is currently more or less well structured in the sense that it is clear which components exist, what their responsibilities are, how they interact and what the main mechanisms are. Yes, there are problmens but they are not "structural". However, everything besides Stream Processing is chaos. We need to bring some order and structure here -
- Which kinds of interactions exist besides Stream Processing? Which facilities do we have to address them?
- Which components are inside the broker and what are their main responsibilites? How can they interact?
- Hat state is there and how is it managed?
- Where are certain "aspects" of the client api protocol managed? For instance, if a request for which a broker is currently not leader is received it needs to be rejected. Currently this works differently for commands vs. control messages. This should probably be unified.