elixir: tolerância a falhas para adultos - oneday baixada santista

202
ELIXIR Tolerância a Falhas para Adultos @akitaonrails

Upload: fabio-akita

Post on 15-Apr-2017

725 views

Category:

Technology


1 download

TRANSCRIPT

ELIXIRTolerância a Falhas para Adultos

@akitaonrails

@akitaonrails

23 e 24 de Setembro @rubyconfbr

FIM DA LEI DE

MOORE

THREADS! (NÃO USE)

THREADS! (NÃO USE)

EVENTOS! (NÃO USE)

EVENTOS! (NÃO USE)

BAIXA LATÊNCIA

CO-ROTINAS (SUBROTINAS, FIBRAS)

CASOS REAIS

“Since cut-over of the first nodes in British Telecom's network in January 2002 only one minor fault has occurred, resulting in 99.9999999% availability.”

“The network performance has been so reliable that there is almost a risk that our field engineers do not learn maintenance skills.”

Bernt Nilsson - director of Ericsson’s Next Generation Systems program

BÁSICO …

PEER-TO-PEER NETWORKING

[a,b,c]=[a,2,3]

{:ok,message}={:ok,“world"}

{:ok,[hello:message]}={:ok,[hello:“world”]}

[hello:message,world:message2]#=>[{:hello,message},{:world,message2}]

[a,b,c]=[a,2,3]

{:ok,message}={:ok,“world"}

{:ok,[hello:message]}={:ok,[hello:“world”]}

[hello:message,world:message2]#=>[{:hello,message},{:world,message2}]

[a,b,c]=[a,2,3]

{:ok,message}={:ok,“world"}

{:ok,[hello:message]}={:ok,[hello:“world”]}

[hello:message,world:message2]#=>[{:hello,message},{:world,message2}]

[a,b,c]=[a,2,3]

{:ok,message}={:ok,“world"}

{:ok,[hello:message]}={:ok,[hello:“world”]}

[hello:message,world:message2]#=>[{:hello,message},{:world,message2}]

PATTERN MATCHING

CALL BY PATTERN

Spawn, Send, Receive

"PID" (Process ID)

PROCESSOS (GREEN THREADS)

List/Kill

ASYNCHRONOUS EXCEPTIONS

ASYNCHRONOUS EXCEPTIONS

Link, Flag

ACTORS!

GenServer

[h,t]=[1,2,3]#=>h=1,t=[2,3]

Process.list|>Enum.reverse#=>Enum.reverse(Process.list())

[h,t]=[1,2,3]#=>h=1,t=[2,3]

Process.list|>Enum.reverse#=>Enum.reverse(Process.list())

SUPERVISOR TREE (supervisor - supervisees/workers)

OTP (Open Telecom Platform)

MICRO “YOCTO” SERVICES

(Micro > Nano > Pico > Femto > Atto > Zepto > Yocto)

MICRO “YOCTO” SERVICES

(Micro > Nano > Pico > Femto > Atto > Zepto > Yocto)

MICRO “YOCTO” SERVICES

(Micro > Nano > Pico > Femto > Atto > Zepto > Yocto)

• Keywords, Maps, Comprehensions

• Keywords, Maps, Comprehensions

• Documentação testável/executável

• Keywords, Maps, Comprehensions

• Documentação testável/executável

• TypeSpecs, Behaviors

• Keywords, Maps, Comprehensions

• Documentação testável/executável

• TypeSpecs, Behaviors

• Agents, Tasks, GenEvent

• Keywords, Maps, Comprehensions

• Documentação testável/executável

• TypeSpecs, Behaviors

• Agents, Tasks, GenEvent

• Macros, Sigils

• Keywords, Maps, Comprehensions

• Documentação testável/executável

• TypeSpecs, Behaviors

• Agents, Tasks, GenEvent

• Macros, Sigils

• Armazenamento: ETS, DETS, Mnesia

Javascript - shared mutable global stateBlocking Event Loop

Rust -Low Level Async in progress No coroutines

Go Suture (OTP Clone)

goroutines sem ID shared mutable statestatic signatures

Scala Akka (OTP Clone)

shared mutable statestatic signatures

Clojure Pulsar / Quasar Almost Erlang-like Process JVM limitations

“quase” …

Erlang: PRONTO! (30 anos)

APRENDENDO

OBRIGADO!www.akitaonrails.com/elixir

@akitaonrails