qcon sp 2016 - elixir: tolerância a falhas para adultos

112
ELIXIR Tolerância a Falhas para Adultos @akitaonrails

Upload: fabio-akita

Post on 16-Apr-2017

2.070 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

ELIXIRTolerância a Falhas para Adultos

@akitaonrails

Page 2: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

ELIXIRTolerância a Falhas para Adultos

@akitaonrails

Page 3: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

@akitaonrails

Page 4: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 5: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 6: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 7: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 8: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 9: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 10: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

FIM DA LEI DE

MOORE

Page 11: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

THREADS! (NÃO USE)

Page 12: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

THREADS! (NÃO USE)

Page 13: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 14: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

EVENTOS! (NÃO USE)

Page 15: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

EVENTOS! (NÃO USE)

Page 16: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 17: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 18: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

BAIXA LATÊNCIA

Page 19: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

CO-ROTINAS (SUBROTINAS, FIBRAS)

Page 20: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 21: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 22: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

CASOS REAIS

Page 23: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 24: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

“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

Page 25: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 26: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 27: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 28: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 29: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 30: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 31: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 32: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 33: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 34: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 35: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 36: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

BÁSICO …

Page 37: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 38: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 39: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

PEER-TO-PEER NETWORKING

Page 40: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 41: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 42: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

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

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

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

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

Page 43: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

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

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

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

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

Page 44: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

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

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

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

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

Page 45: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

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

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

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

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

Page 46: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

PATTERN MATCHING

Page 47: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 48: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 49: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

CALL BY PATTERN

Page 50: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

Spawn, Send, Receive

Page 51: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

"PID" (Process ID)

Page 52: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 53: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 54: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

PROCESSOS (GREEN THREADS)

Page 55: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

List/Kill

Page 56: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 57: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 58: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

ASYNCHRONOUS EXCEPTIONS

Page 59: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

ASYNCHRONOUS EXCEPTIONS

Page 60: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

Link, Flag

Page 61: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 62: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 63: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 64: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 65: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

ACTORS!

Page 66: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

GenServer

Page 67: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

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

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

Page 68: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

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

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

Page 69: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 70: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 71: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 72: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 73: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 74: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 75: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 76: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 77: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

SUPERVISOR TREE (supervisor - supervisees/workers)

Page 78: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

OTP (Open Telecom Platform)

Page 79: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 80: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 81: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

MICRO “YOCTO” SERVICES

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

Page 82: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

MICRO “YOCTO” SERVICES

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

Page 83: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

MICRO “YOCTO” SERVICES

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

Page 84: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 85: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 86: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 87: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 88: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

• Keywords, Maps, Comprehensions

Page 89: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

• Keywords, Maps, Comprehensions

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

Page 90: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

• Keywords, Maps, Comprehensions

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

• TypeSpecs, Behaviors

Page 91: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

• Keywords, Maps, Comprehensions

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

• TypeSpecs, Behaviors

• Agents, Tasks, GenEvent

Page 92: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

• Keywords, Maps, Comprehensions

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

• TypeSpecs, Behaviors

• Agents, Tasks, GenEvent

• Macros, Sigils

Page 93: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

• Keywords, Maps, Comprehensions

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

• TypeSpecs, Behaviors

• Agents, Tasks, GenEvent

• Macros, Sigils

• Armazenamento: ETS, DETS, Mnesia

Page 94: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

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

Page 95: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

“quase” …

Page 96: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

Erlang: PRONTO! (30 anos)

Page 97: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 98: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 99: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

APRENDENDO

Page 100: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 101: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 102: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 103: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 104: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 105: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 106: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 107: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 108: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 109: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 110: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos
Page 111: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

OBRIGADO!www.akitaonrails.com/elixir

@akitaonrails

Page 112: QCON SP 2016 - Elixir: Tolerância a Falhas para Adultos

OBRIGADO!www.akitaonrails.com/elixir

@akitaonrails