Modern CPU architectures are designed as message passing systems with fast and fat on-chip networks. Many of the common abstractions held up as models of great interactions break down horribly in message passing systems when used at scale because they are, in reality, too tightly coupled when communication delay can’t be ignored.
But here is a secret, it’s all about the protocols. What can we learn from protocol design that could make being message-driven easier? What are some of the common pitfalls and best practices to creating resilient protocols? And what does it really mean to be message driven?