Running your applications in Erlang is its own microservices architecture. Each process is essentially microservice that can interact with others on any node in your cluster by sending messages. Everything is handled for your by the runtime. Processes on a different node? No problem, they're easy to discover and if a message does go to another node the serialization is handled for you. Erlang is so powerful I'd actually invert your question.
Probably faster and more direct and less fiddling around with encoding stuff in JSON. I'm pretty sure both Ruby and Erlang have richer types than JSON.