процессы ты недооцениваешь. процессы это про изоляцию ошибок и владение ресурсами.
например, тебе не нужно думать о том, есть ли у тебя в треде пула toplevel exception handler - процесс упадет, будет переподнят, если понадобится, и всё. нет реиспользования.
или например, ты изолируешь каждый пользовательский ws-коннект в отдельный процесс, сокетом владеет он. сокет закрылся - процесс получил нотификацию, сдох. процесс упал или завершился по команде - сокет закрылся автоматом. контроллер пабсаба поймал уведомление о сдохшем подписчике, вычеркнул его из списка. (да хоть бы и не вычеркнул, см. дальше)
в мониторинге алерт "нода сожрала почти всю память"? подключился к живой ноде, вытащил список процессов с использованной памятью, локализовал виновника. не нашел - вытащил список ets с тем же футпринтом, нашел.
процессы - уровень гранулярности gc, больше никакого stop the world.
в конце концов, именно процессы и их реализация позволяют выполнять код, написанный как блокирующий, асинхронно.
короче, процессы это офигенно, и в подходящей роли beam по совокупности факторов вообще никто никогда не догонит.