Chapter 3. Reactive on the System Level
One Actor is no Actor. Actors come in Systems.
Carl Hewitt, creator of the actor model of concurrent computation
More than 95 percent of your organization’s problems derive from your systems, processes, and methods, not from your individual workers. […] Your people are doing their best, but their best efforts cannot compensate for your inadequate and dysfunctional systems. Changing the system will change what people do. Changing what people do will not change the system.
Peter R. Scholtes, The Leaders Handbook
In reality, we rarely talk about a single instance of a single application. Instead, we talk about systems, composed of multiple services, possibly implemented using various technologies and each of them having different latency and up-time requirements. As we’ll discover in this chapter, many of the concepts and requirements we talked about in the previous chapter translate directly to the system level.
We often are led to think this is solely a technical aspect of systems. I would argue that that’s only part of the story. Applications need to scale both in the technical meaning of the word, but also in the organizational meaning of it. Distributed systems (microservices being a good example) allow you to divide responsibilities into multiple applications, and those have their own dedicated teams, with well-defined responsibilities. So, as it turns out, distributed systems allow and help you scale your organization. They allow ...