Slide 1

Slide 1 text

Elixir & OTP Microservices Without Pain @justincampbell

Slide 2

Slide 2 text

Elixir & OTP Sitting in a tree

Slide 3

Slide 3 text

Building $#!+ that doesn't break

Slide 4

Slide 4 text

Elixir: Erlang that doesn't suck

Slide 5

Slide 5 text

"Microservices"

Slide 6

Slide 6 text

Elixir ~ Erlang

Slide 7

Slide 7 text

Elixir 4 Tools 4 Modules 4 Functions 4 Pattern-Matching

Slide 8

Slide 8 text

Fibonacci Sequence 0 1 1 2 3 5 8 13 21 34 55

Slide 9

Slide 9 text

Processes

Slide 10

Slide 10 text

OTP Open Telecom Platform

Slide 11

Slide 11 text

OTP 4 Erlang 4 protocol for communication between nodes 4 request broker 4 Dialyzer (static analysis) 4 Mnesia (distributed database server) 4 standard lib

Slide 12

Slide 12 text

GenServer handle_call(message, {from, ref}, state) handle_cast(message, state) {:reply, reply, state} {:reply, reply, state, timeout} {:reply, reply, state, :hibernate} {:noreply, state} {:noreply, state, timeout} {:noreply, state, :hibernate} {:stop, reason, reply, state} {:stop, reason, state}

Slide 13

Slide 13 text

GenServer GenServer.start_link -> init GenServer.call -> handle_call GenServer.cast -> handle_cast

Slide 14

Slide 14 text

Spyfall or something

Slide 15

Slide 15 text

Services Decision 4 Start with a monolith, move to microservices as needed. 4 Start with a monolith, stay as a monolith. 4 Start with microservices. snowsuit.io/issue07.html

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

Resources 4 elixir-lang.org 4 phoenixframework.org 4 howistart.org/posts/elixir 4 learnyousomeerlang.com 4 elixirsips.com 4 phoenixscreencasts.org