Estudando um pouco de Erlang para entender melhor o Elixir, achei impressionante algumas características fundamentais da plataforma. É fascinante como Erlang trata a concorrência de forma intrínseca desde sua fundação.
Ele faz isso utilizando os chamados Processos Erlang (ou atores leves), q são gerenciados inteiramente pelo runtime da Erlang Virtual Machine (VM) e n dependem das threads tradicionais do sistema operacional (SO).
Isso permite que Erlang lide com dezenas de milhares de processos leves simultaneamente com overhead mínimo – um conceito q o Java só começou a abordar recentemente com a implementação das Virtual Threads (Projeto Loom). Erlang já faz isso desde os anos 80!
Ainda mais impressionante é a plataforma OTP (Open Telecom Platform), q transforma o Erlang em um ecossistema completo para construção de sistemas distribuídos e tolerantes a falhas.
Em um servidor web padrão, frequentemente dependemos de uma pilha de tecnologias heterogêneas como nginx, redis, mongodb, Upstart/systemd p/ monitoramento e recuperação de falhas.
O Erlang/OTP é capaz de absorver essas funções dentro do seu próprio ambiente de runtime. Bibliotecas como Cowboy substituem o nginx,ETS/Mnesia/DETS substituem o Redis p/ muitos casos de estado em memória, e os Supervisors do OTP substituem ferramentas externas como o Upstart, garantindo que a aplicação se recupere automaticamente de falhas sem precisar "sair" da Erlang VM.
