Por que Elixir?

Thomaz Leite

Parte 1

Runtime

Erlang

Elixir

32 desenvolvedores

50 bilhões de mensagens por dia

http://sequoiacapital.tumblr.com/post/77211282835/four-numbers-that-explain-why-facebook-acquired​

AXD 301 Switch

Mais de 20 anos sem downtime

Erlang is a programming language used to build massively scalable soft real-time systems with requirements on high availability. Some of its uses are in telecoms, banking, e-commerce, computer telephony and instant messaging. Erlang's runtime system has built-in support for concurrency, distribution and fault tolerance.

Concorrência

Concorrência
vs

Paralelismo

Shared Memory Concurrency

Maioria das linguagens

A thread é o building block

Mutexes, semaphores, locks, caches, etc.

Message Passing Concurrency

Erlang, Elixir, LFE

O processo é o building block

Spawn, send e receive

Actor Model

Orientação a objetos de verdade

Distribuição

Mnesia

Banco de dados distribuído

http://erlang.org/doc/man/mnesia.html

Tolerância a Erros

"Let it crash"

(Deixa quebrar)

Link entre processos

Supervisor

Árvore de supervisão

Registro de nomes

Elixir

Tooling

Polymorphism

Metaprogramming

Made with Slides.com