At the center of concurrent, distributed systems is the concept of 𝗰𝗼𝗼𝗿𝗱𝗶𝗻𝗮𝘁𝗶𝗼𝗻. Yet I do not know a canonical definition of coordination According to your mental model, what is coordination?!
@DominikTornow Coordination is a kind of tight-coupling. A and B are tightly coupled when A has to do this so that B can do that. A's action can come after B's: cleanup. Coordinating distributed code is there to manage that kind of relationship at a distance.
@DominikTornow Something like that, I would say. Take a messy environment, where each peer doesn't "talk" with each other. Make them "talk" and collaborate with each other in order to a achieve a Goal. I would also say that a Goal is a central piece in order to exist coordination.
Coordination is expression of the system in an explicitly defined frame of reference, serving as the universal "ground truth" against which distributed system is operating in. Analogous to the origin point (0,0) in a classical coordinate system, a distributed system must establish at least one ground truth, or a hierarchy of such truths, that functions as the reference system for coordination. The ground truth in reference where everything else is expressed in respect to, and are subject to its governance in transforming the system as proposals from subservient systems being reflected by announcements of the coordinator in susequent evolution. This does not mean the coordination is centralized, but rather that any part that is being coordinated has explicitly defined ground truth somewhere in the distributed system. Example: State of a system is being expressed by in memory database table, e.g. a domain model of a robotic welding arm. The moment such state is extracted and distributed to other parts of the distributed system, this snapshot is stale in reference of its evolution in time e.g. current joint values in comparison to the ground truth. Then some moment in time later by a part feeding conveyor. With the appreciation to the information being stale. Once the state propagates across the distributed system and is being modified by new desired state, such as conveyor moving the part to achieve larger collective weld head travel distance while achieving high collective accuracy, the modification can be expressed in respect to that snapshot with evolution id such as timestamp and propagated back to the coordinator in this situation being the welding arm. Now, this modification can be implemented in respect to other modifications that happened across the system in the same time coordinates, where the conveyor propagates its ground truth to the opposite direction. This could include third entity such as predictive engine being then augmented with human operator control instructions for higher level tasks. Spatial configuration expressed in reference to evolution in units of time, with multiple subsystems being coordinated by respecting each others ground truths expressed in respect to temporal reference and spatial reference. How about that?
@DominikTornow The frame of reference nodes use to reconstruct the shared timeline of events: The consistency model
@DominikTornow Relentless bureaucratic meetings between processes instead of just making your own decisions independently, and worrying about the consequences later.
@DominikTornow generically, it's when different nodes of a network communicate with each other to form a common goal, and each of them takes action to move closer to this goal