Slide 1

Slide 1 text

TEXT WHY YOU SHOULD BUILD your next application IN ERLANG

Slide 2

Slide 2 text

TEXT WHEN YOU SHOULD BUILD your next application IN ERLANG

Slide 3

Slide 3 text

ERLANG IS NOT A MAGIC LANGUAGE.

Slide 4

Slide 4 text

USE THE RIGHT TOOL FOR THE RIGHT JOB

Slide 5

Slide 5 text

ERLANG WAS DESIGNED TO HELP YOU WRITING SYSTEMS DISTRIBUTED

Slide 6

Slide 6 text

ERLANG WAS DESIGNED TO HELP YOU WRITING SYSTEMS SCALABLE

Slide 7

Slide 7 text

ERLANG WAS DESIGNED TO HELP YOU WRITING SYSTEMS RELIABLE

Slide 8

Slide 8 text

ERLANG WAS DESIGNED TO HELP YOU WRITING SYSTEMS ROBUST

Slide 9

Slide 9 text

ERLANG WAS DESIGNED TO HELP YOU WRITING SYSTEMS FAULT TOLERANT

Slide 10

Slide 10 text

ERLANG WAS DESIGNED TO HELP YOU WRITING SYSTEMS MASSIVELY CONCURRENT

Slide 11

Slide 11 text

Do you need a distributed system? Do you need a scalable system? Do you need a reliable system? Do you need a fault-tolerant system? Do you need a massively concurrent system? Do you need a distributed system? Do you need a scalable system? Do you need a reliable system? Do you need a fault-tolerant system? Do distributed system? Do you need a scalable system? Do you need a reliable system? Do you need a fault-tolerant system? Do you need a massively NEED ERLANG? DO YOU

Slide 12

Slide 12 text

THEN USE ERLANG.

Slide 13

Slide 13 text

ERLANG IS NOT DIFFICULT TO LEARN - O N C E Y O U G E T PA S T T H E I N I T I A L H E A D A C H E - YOU WON’T BE ABLE TO LIVE WITHOUT IT

Slide 14

Slide 14 text

ERLANG MAKES YOUR LIFE EASIER - N O T T H E O T H E R WAY A R O U N D - HAVE A LOOK TO OTP

Slide 15

Slide 15 text

ERLANG IS ALSO FUN - B U T D O N ’ T T E L L Y O U R B O S S - OR YOU’LL GET PAID LESS

Slide 16

Slide 16 text

WHERE TO START @ r o b e r t o a l o i

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

WHERE TO START LET’S TALK ABOUT ERLANG

Slide 19

Slide 19 text

... But in Practice? NICE WORDS SCALABILITY ROBUSTNESS FAULT TOLERANCE MASSIVE CONCURRENCY DISTRIBUTION

Slide 20

Slide 20 text

WHERE TO START PROCESSES AND MESSAGE PASSING

Slide 21

Slide 21 text

CREATE (SPAWN) A PROCESS spawn(math, fact, [5]) Pid1 Processes

Slide 22

Slide 22 text

CREATE (SPAWN) A PROCESS spawn(math, fact, [5]) math:fact(5) Pid2 Pid1 Processes

Slide 23

Slide 23 text

AND SEND A MESSAGE TO IT Pid2 Pid1 Pid2 ! {self(),msg} Message Passing

Slide 24

Slide 24 text

AND SEND A MESSAGE TO IT Pid2 Pid1 Pid2 ! {self(),msg} {Pid1,msg} Message Passing

Slide 25

Slide 25 text

LINKS AND EXIT SIGNALS

Slide 26

Slide 26 text

CREATE A BI-DIRECTIONAL LINK BETWEEN PROCESSES Links PidB PidA link(PidB)

Slide 27

Slide 27 text

CREATE A BI-DIRECTIONAL LINK BETWEEN PROCESSES Links PidB PidA link(PidB)

Slide 28

Slide 28 text

PROPAGATING EXIT SIGNALS Exit Signals PidA PidB PidC

Slide 29

Slide 29 text

PROPAGATING EXIT SIGNALS Exit Signals PidA PidB PidC

Slide 30

Slide 30 text

PROPAGATING EXIT SIGNALS Exit Signals PidB {'EXIT', PidA, Reason} PidC

Slide 31

Slide 31 text

PROPAGATING EXIT SIGNALS Exit Signals PidB PidC

Slide 32

Slide 32 text

PROPAGATING EXIT SIGNALS Exit Signals PidC {'EXIT', PidB, Reason}

Slide 33

Slide 33 text

PROPAGATING EXIT SIGNALS Exit Signals

Slide 34

Slide 34 text

Trap Exit TRAPPING AN EXIT SIGNAL PidA PidC PidB

Slide 35

Slide 35 text

Trap Exit TRAPPING AN EXIT SIGNAL PidA PidC PidB

Slide 36

Slide 36 text

Trap Exit TRAPPING AN EXIT SIGNAL {'EXIT', PidA, Reason} PidC PidB

Slide 37

Slide 37 text

Trap Exit TRAPPING AN EXIT SIGNAL PidC PidB

Slide 38

Slide 38 text

SUPERVISORS

Slide 39

Slide 39 text

Supervisors PidA PidC PidB

Slide 40

Slide 40 text

Supervisors PidA PidC PidB

Slide 41

Slide 41 text

Supervisors PidA PidC PidB Supervisor

Slide 42

Slide 42 text

Supervisors PidA PidC PidB Supervisor Workers

Slide 43

Slide 43 text

LET IT CRASH (OR FAIL)

Slide 44

Slide 44 text

Let It Crash convert(Day) -> case Day of monday -> 1; tuesday -> 2; wednesday -> 3; thursday -> 4; friday -> 5; saturday -> 6; sunday -> 7; Other -> {error, unknown_day} end.

Slide 45

Slide 45 text

DISTRIBUTED ERLANG

Slide 46

Slide 46 text

Distributed Erlang erl -sname london erl -sname krakow erl -sname stockholm

Slide 47

Slide 47 text

OTP

Slide 48

Slide 48 text

OTP Servers Finite State Machines Event Handlers Supervisors Applications Less Code Less Bugs More Solid Code More Tested Code More Free Time

Slide 49

Slide 49 text

Y U NO SHOW ME CODE!?

Slide 50

Slide 50 text

WHERE TO START DEMO TIME (if it can go wrong, it will)

Slide 51

Slide 51 text

WHO USES ERLANG?

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

WHERE TO START

Slide 55

Slide 55 text

erlang.org github.com/erlang/otp erlang-solutions.com www.learnyousomeerlang.org elearning.erlang-solutions.com Erlang Programming Erlang and OTP in Action Official Home Page Sources Binary Packages, News, Events Best Online Tutorial Commercial e-learning solution Best book about basics Best book about OTP

Slide 56

Slide 56 text

QUESTIONS? @robertoaloi