Scaling out your application using remote actors
One of the key points of distributed programming is its ability to scale up the performance of your application horizontally. Let's assume a scenario where an actor receives messages to be processed, and this processing takes some time:
Everything works as expected until the rate of messages starts increasing. Then you realize that the bottleneck of your system is your actor, so you decide to create a pool of actors for processing the messages:
This solution works well; however, sooner or later you will notice an increase in CPU and memory usage, as the rate of messages keeps growing. To solve this, you decide to scale your system vertically and run your application in a larger machine with more CPU and memory.
However, at some point, your CPU and RAM would again reach the limit. Then you realize that throwing more hardware is not a long-term solution. Therefore, as an alternate solution, you decide to scale your system horizontally using Akka...