ELIXIR Tolerncia a Falhas para Adultos @akitaonrails ELIXIR - - PowerPoint PPT Presentation

elixir
SMART_READER_LITE
LIVE PREVIEW

ELIXIR Tolerncia a Falhas para Adultos @akitaonrails ELIXIR - - PowerPoint PPT Presentation

ELIXIR Tolerncia a Falhas para Adultos @akitaonrails ELIXIR Tolerncia a Falhas para Adultos @akitaonrails @akitaonrails FIM DA LEI DE MOORE THREADS! (NO USE) THREADS! (NO USE) EVENTOS! (NO USE) EVENTOS! (NO USE) BAIXA


slide-1
SLIDE 1

ELIXIR

Tolerância a Falhas para Adultos

@akitaonrails

slide-2
SLIDE 2

ELIXIR

Tolerância a Falhas para Adultos

@akitaonrails

slide-3
SLIDE 3

@akitaonrails

slide-4
SLIDE 4
slide-5
SLIDE 5
slide-6
SLIDE 6
slide-7
SLIDE 7
slide-8
SLIDE 8
slide-9
SLIDE 9
slide-10
SLIDE 10

FIM DA LEI DE

MOORE

slide-11
SLIDE 11

THREADS! (NÃO USE)

slide-12
SLIDE 12

THREADS! (NÃO USE)

slide-13
SLIDE 13
slide-14
SLIDE 14

EVENTOS! (NÃO USE)

slide-15
SLIDE 15

EVENTOS! (NÃO USE)

slide-16
SLIDE 16
slide-17
SLIDE 17
slide-18
SLIDE 18

BAIXA LATÊNCIA

slide-19
SLIDE 19

CO-ROTINAS

(SUBROTINAS, FIBRAS)

slide-20
SLIDE 20
slide-21
SLIDE 21
slide-22
SLIDE 22

CASOS REAIS

slide-23
SLIDE 23
slide-24
SLIDE 24

“Since cut-over of the fjrst 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 fjeld engineers do not learn maintenance skills.”

Bernt Nilsson - director of Ericsson’s Next Generation Systems program
slide-25
SLIDE 25
slide-26
SLIDE 26
slide-27
SLIDE 27
slide-28
SLIDE 28
slide-29
SLIDE 29
slide-30
SLIDE 30
slide-31
SLIDE 31
slide-32
SLIDE 32
slide-33
SLIDE 33
slide-34
SLIDE 34
slide-35
SLIDE 35
slide-36
SLIDE 36

BÁSICO …

slide-37
SLIDE 37
slide-38
SLIDE 38
slide-39
SLIDE 39

PEER-TO-PEER NETWORKING

slide-40
SLIDE 40
slide-41
SLIDE 41
slide-42
SLIDE 42

[a, b, c] = [a, 2, 3] {:ok, message} = {:ok, “world"} {:ok, [hello: message]} = {:ok, [hello: “world”]} [hello: message, world: message2] #=> [{:hello, message}, {:world, message2}]

slide-43
SLIDE 43

[a, b, c] = [a, 2, 3] {:ok, message} = {:ok, “world"} {:ok, [hello: message]} = {:ok, [hello: “world”]} [hello: message, world: message2] #=> [{:hello, message}, {:world, message2}]

slide-44
SLIDE 44

[a, b, c] = [a, 2, 3] {:ok, message} = {:ok, “world"} {:ok, [hello: message]} = {:ok, [hello: “world”]} [hello: message, world: message2] #=> [{:hello, message}, {:world, message2}]

slide-45
SLIDE 45

[a, b, c] = [a, 2, 3] {:ok, message} = {:ok, “world"} {:ok, [hello: message]} = {:ok, [hello: “world”]} [hello: message, world: message2] #=> [{:hello, message}, {:world, message2}]

slide-46
SLIDE 46

PATTERN

MATCHING

slide-47
SLIDE 47
slide-48
SLIDE 48
slide-49
SLIDE 49

CALL BY

PATTERN

slide-50
SLIDE 50

Spawn, Send, Receive

slide-51
SLIDE 51

"PID"

(Process ID)

slide-52
SLIDE 52
slide-53
SLIDE 53
slide-54
SLIDE 54

PROCESSOS

(GREEN THREADS)

slide-55
SLIDE 55

List/Kill

slide-56
SLIDE 56
slide-57
SLIDE 57
slide-58
SLIDE 58

ASYNCHRONOUS

EXCEPTIONS

slide-59
SLIDE 59

ASYNCHRONOUS

EXCEPTIONS

slide-60
SLIDE 60

Link, Flag

slide-61
SLIDE 61
slide-62
SLIDE 62
slide-63
SLIDE 63
slide-64
SLIDE 64
slide-65
SLIDE 65

ACTORS!

slide-66
SLIDE 66

GenServer

slide-67
SLIDE 67

[h, t] = [1, 2, 3] #=> h = 1, t = [2,3] Process.list |> Enum.reverse #=> Enum.reverse(Process.list())

slide-68
SLIDE 68

[h, t] = [1, 2, 3] #=> h = 1, t = [2,3] Process.list |> Enum.reverse #=> Enum.reverse(Process.list())

slide-69
SLIDE 69
slide-70
SLIDE 70
slide-71
SLIDE 71
slide-72
SLIDE 72
slide-73
SLIDE 73
slide-74
SLIDE 74
slide-75
SLIDE 75
slide-76
SLIDE 76
slide-77
SLIDE 77

SUPERVISOR TREE

(supervisor - supervisees/workers)

slide-78
SLIDE 78

OTP

(Open Telecom Platform)

slide-79
SLIDE 79
slide-80
SLIDE 80
slide-81
SLIDE 81

MICRO

“YOCTO”

SERVICES

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

slide-82
SLIDE 82

MICRO

“YOCTO”

SERVICES

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

slide-83
SLIDE 83

MICRO

“YOCTO”

SERVICES

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

slide-84
SLIDE 84
slide-85
SLIDE 85
slide-86
SLIDE 86
slide-87
SLIDE 87
slide-88
SLIDE 88
  • Keywords, Maps, Comprehensions
slide-89
SLIDE 89
  • Keywords, Maps, Comprehensions
  • Documentação testável/executável
slide-90
SLIDE 90
  • Keywords, Maps, Comprehensions
  • Documentação testável/executável
  • TypeSpecs, Behaviors
slide-91
SLIDE 91
  • Keywords, Maps, Comprehensions
  • Documentação testável/executável
  • TypeSpecs, Behaviors
  • Agents, Tasks, GenEvent
slide-92
SLIDE 92
  • Keywords, Maps, Comprehensions
  • Documentação testável/executável
  • TypeSpecs, Behaviors
  • Agents, Tasks, GenEvent
  • Macros, Sigils
slide-93
SLIDE 93
  • Keywords, Maps, Comprehensions
  • Documentação testável/executável
  • TypeSpecs, Behaviors
  • Agents, Tasks, GenEvent
  • Macros, Sigils
  • Armazenamento: ETS, DETS, Mnesia
slide-94
SLIDE 94 Javascript
  • shared mutable global state
Blocking Event Loop Rust
  • Low Level
Async in progress No coroutines Go Suture (OTP Clone) goroutines sem ID shared mutable state static signatures Scala Akka (OTP Clone) shared mutable state static signatures Clojure Pulsar / Quasar Almost Erlang-like Process JVM limitations
slide-95
SLIDE 95

“quase” …

slide-96
SLIDE 96

Erlang:

PRONTO! (30 anos)

slide-97
SLIDE 97
slide-98
SLIDE 98
slide-99
SLIDE 99

APRENDENDO

slide-100
SLIDE 100
slide-101
SLIDE 101
slide-102
SLIDE 102
slide-103
SLIDE 103
slide-104
SLIDE 104
slide-105
SLIDE 105
slide-106
SLIDE 106
slide-107
SLIDE 107
slide-108
SLIDE 108
slide-109
SLIDE 109
slide-110
SLIDE 110
slide-111
SLIDE 111

OBRIGADO!

www.akitaonrails.com/elixir @akitaonrails

slide-112
SLIDE 112

OBRIGADO!

www.akitaonrails.com/elixir @akitaonrails