Horizontal scaling is what's hard for a lot of systems, but simple with Erlang and Elixir since they are, by design, meant to support concurrent and distributed workloads. That's why I was asking if they meant horizontal and not vertical.
Erlang and Elixir are not uniquely easy to scale horizontally, but they are (if you don't fight their nature and produce programs that consist of one giant execution thread) ridiculously easy to scale horizontally by tacking on additional CPU cores or physical CPUs.
2014 - https://www.infoq.com/presentations/whatsapp-scalability/
There is also Lasp, which is very interesting: https://lasp-lang.readme.io/docs
My interpretation was vertical scaling is within a single node and adding cores or CPUs to a single node is vertical. Multi-core and multi-node really present similar problems, so adding more cores or adding more nodes isn't terribly different from a design perspective.
> ...easy to scale horizontally by tacking on additional CPU cores or physical CPUs.
If you define adding more cores to a single machine is actually horizontal scaling, then we agree in principle, just not in the definition of scaling.
Not true in practice. You can scale hardware easily to hundreds of cores, if your app is able to spread the load, but the performance ceiling is very low if your app is single-threaded.
The BEAM with its design is very parallel, and the more cores, the happier it is.