2. source worker2
worker1
worker3
Cluster
The problem: Distributed monolith
All components are bound to the same
stack and framework.
One tightly coupled blob of code distributed
across machines.
Network
Whatever you have here
Must also be here
3. Cluster
source worker2
worker1
worker3
Framework specific protocols
For example, all of the major Actor Model
frameworks and languages have their own
specific homegrown protocols
Erlang OTP, Akka, Akka.NET, MsOrleans,
none of them can talk to eachother using
their own cluster protocols.
Homegrown,
non standard,
framework
specific protocol
Network
4. Cluster
producer
consumer
consumer
consumer
Embracing The Unix Philosophy
What if we instead shrink the responsibility of
the cluster?
Instead of encapsulating everything, including
business logic, we can limit the scope to data
transport and cluster semantics only.
6. source worker2
worker1
worker3
Cluster
producer
Elasticity by partitions
We start out by having a much higher
number of partitions than consumers.
partition
partition
partition
consumer
partition
partition
partition
partition
partition
partition
consumer
consumer