(De agora em diante chamada de “dialplan python”) - Todos os devs python acabaram saindo do time de telefonia. - Python é notoriamente mais difícil de escalar vertical & horizontalmente do que Elixir “The Python situation”
- É o "segredo" por trás do Whatsapp - Metade da telefonia do mundo é feita em Erlang (citation needed) - "Nine-nines availability" Coisas que ouvimos falar:
baixa variância da latência) - Verticalmente Escalável - Distribuição e Concorrência são cidadãos de 1a classe - Garantias de execução fornecidas pelo runtime (a base para tolerância a falha) - "Alta performance" Características da VM do Erlang
um BR! José Valim <3 - A semântica é absolutamente a mesma entre Elixir e Erlang. (mais parecido com TypeScript/JS do que Clojure/Java, Elm/JS, etc) - Para a plataforma, código Elixir e código Erlang são *indistinguíveis* Elixir é só uma pequena gota
and Robert did not aim to implement a functional programming language, they wanted a runtime where they could build distributed, fault-tolerant applications. It just happened that the foundation for writing such systems share many of the functional programming principles. And it reflects in both Erlang and Elixir. Therefore, the discussion becomes much more interesting when you ask about their end-goals and how functional programming helped them achieve them. The further we explore those goals,we realize how they tie in with immutability and the control of shared state, for example: ..." -- Valim, José Elixir Beyond Functional Programming
desenvolvedores dessa geração. - Existem inúmeras barreiras para adoção de Erlang: falta ferramental, docs difíceis de ler, zero polimorfismo de dados, etc. - Elixir traz o "21st century" para a Erlang-landia, através de metaprogramming, ferramental coeso e bem desenhado, documentação *excelente* e uma comunidade vibrante e acolhedora Raison d'être do Elixir:
o projeto - Codar & deploy-ar continuamente (shadow deploys) - Verificar a paridade de features (Tudo isso enquanto o tráfego de *PRODUÇÃO* cresce dia após dia!) Nossa jornada
necessário "desacelerar" o desenvolvimento de novas features para pagar "débito técnico" - É fundamental frasear os benefícios em *termos de negócio* Buscar "buy-in" stakeholders de negócio
Nenhuma outra responsabilidade. (#sqn) - Re-escrever é um trabalho imenso em que você busca um "alvo em movimento". Se você não conseguir focar, você vai fracassar Reservar recursos
causadas por falhas em serviços "downstream". - Quando não era esse o caso, "gravar" a resposta das dependências era suficiente para reproduzir o cenário de erro. Verificar paridade de Features
causadas por falhas em serviços "downstream". - Quando não era esse o caso, "gravar" a resposta das dependências era suficiente para reproduzir o cenário de erro. Verificar paridade de Features (Tipo o VCR do Ruby)