&gt; I&#x27;m a huge advocate of log based architectures, which take message passing architectures to another level. That is, message passing architectures are good at limiting the things that can happen, log based architectures do that and add the benefit of capturing what did happen.<p>AKA Event-based programming. Events are what <i>has</i> happened. Components define what events to respond to and how.<p>In practice you need a combination of events and messages (or &#x27;commands&#x27;). Which one to use depends on NFRs like dependency, complexity, performance, maintainability, etc.