Slide 1

Slide 1 text

Erlang and the Cloud Roberto Aloi Erlang Solutions Ltd.

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

IT’S ALL about SCALABILITY

Slide 5

Slide 5 text

WHAT IS SCALABILITY?

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Definitions of Scalability “Property of a system that can accommodate changes in transaction volume without major changes to the system [...] A scalable system can be downsized as easily as it can grow” Barron's Marketing Dictionary “The ability of a system, network, or process, to handle a growing amount of work in a capable manner” André B. Bondi, 2000

Slide 8

Slide 8 text

WHY SCALABILITY IS SO IMPORTANT?

Slide 9

Slide 9 text

“The ability for a business or technology to accept increased volume without impacting the contribution margin” Wikipedia Alternative definition of Scalability Contribution Margin = Marginal Profit per Unit Sale

Slide 10

Slide 10 text

SCALABILITY = REVENUE

Slide 11

Slide 11 text

IT’S ALL about SCALABILITY

Slide 12

Slide 12 text

IT’S ALL about R E V E N U E

Slide 13

Slide 13 text

TWO KINDS OF SCALABILITY

Slide 14

Slide 14 text

HORIZONTAL (SCALE OUT) VERTICAL (SCALE UP)

Slide 15

Slide 15 text

CLOUD COMPUTING MULTI-CORE

Slide 16

Slide 16 text

HAVING INFINITE RESOURCES IS NOT ENOUGH. YOUR APPLICATION HAS TO BE DESIGNED TO SCALE.

Slide 17

Slide 17 text

SCALING PRINCIPLE #1: CONCURRENCY

Slide 18

Slide 18 text

- TONS OF PROCESSES - EXECUTING SIMULTANEOUSLY - REACTING TO EVENTS - PERFORMING SMALL COMPUTATIONS

Slide 19

Slide 19 text

Processes need to be easy to create and destroy. Context switch needs to be a cheap operation.

Slide 20

Slide 20 text

SCALING PRINCIPLE #2: HANDLING FAILURES

Slide 21

Slide 21 text

- FAIL IS UNAVOIDABLE - FAIL FAST - AVOID PROPAGATION OF FAILURES - RECOVER FROM FAILURE

Slide 22

Slide 22 text

SCALING PRINCIPLE #3: ISOLATION

Slide 23

Slide 23 text

- ISOLATE PROCESSES - SHARE NOTHING - NO RACE CONDITIONS - AVOID LOCKS

Slide 24

Slide 24 text

SCALING PRINCIPLE #4: IMMUTABILITY

Slide 25

Slide 25 text

- HAVE IMMUTABLE DATA - USE PURE FUNCTIONS - NO SIDE EFFECTS - REFERENTIAL TRANSPARENCY

Slide 26

Slide 26 text

SCALING PRINCIPLE #5: THINKING ASYNCHRONOUSLY

Slide 27

Slide 27 text

- ASYNCHRONOUS COMMUNICATION - MESSAGE PASSING - NO GUARANTEES

Slide 28

Slide 28 text

SCALING PRINCIPLE #6: DISTRIBUTION

Slide 29

Slide 29 text

- DECOUPLE COMPONENTS - DECENTRALIZE DATA - AVOID BOTTLENECKS - PREFER AVAILABILITY TO CONSISTENCY

Slide 30

Slide 30 text

IMMUTABILITY SCALABILITY 101 LARGE SCALE CONCURRENCY ASYNCHRONOUS COMMUNICATION RELIABILITY PREDICTABILITY DECOUPLING PROCESS ISOLATION FAULT ISOLATION NO SHARED MEMORY SYNCHRONIZATION RACE CONDITIONS EVENTUAL CONSISTENCY CAP THEOREM SMP MULTICORE CLOUD COMPUTING DECENTRALIZATION OF DATA MAINTENANCE NO DOWN TIME

Slide 31

Slide 31 text

SCALABILITY IS A COMPLICATED MATTER.

Slide 32

Slide 32 text

TO THE RESCUE

Slide 33

Slide 33 text

• OPEN SOURCE • CONCURRENCY-ORIENTED • LIGHTWEIGHT PROCESSES (10.000 PER CORE) • ASYNCHRONOUS MESSAGE PASSING • SHARE-NOTHING MODEL • PROCESS LINKING / MONITORING • SUPERVISION TREES AND RECOVERY STRATEGIES • TRANSPARENT DISTRIBUTION MODEL • SOFT-REAL TIME • LET-IT-FAIL PHILOSOPHY • HOT-CODE UPGRADES WHAT IS ERLANG DOES IT SOUND FAMILIAR?

Slide 34

Slide 34 text

SCALING IN PRACTICE #1: CONCURRENCY

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

SCALING IN PRACTICE #2: HANDLING FAILURES

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 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 41

Slide 41 text

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

Slide 42

Slide 42 text

Supervisors PidA PidC PidB

Slide 43

Slide 43 text

Supervisors PidA PidC PidB

Slide 44

Slide 44 text

Supervisors PidA PidC PidB Supervisor

Slide 45

Slide 45 text

Supervisors PidA PidC PidB Supervisor Workers

Slide 46

Slide 46 text

SCALING IN PRACTICE #3: ISOLATION

Slide 47

Slide 47 text

Corrupted Pid1 Pid2 Sane Pid1 Pid2 Corrupted

Slide 48

Slide 48 text

SCALING PRINCIPLE #4: IMMUTABILITY

Slide 49

Slide 49 text

X = 1 X = X + 1

Slide 50

Slide 50 text

X = 1 X = X + 1

Slide 51

Slide 51 text

SCALING PRINCIPLE #5: THINKING ASYNCHRONOUSLY

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

SCALING IN PRACTICE #6: DISTRIBUTION

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

ERLANG IS A VERY GOOD STARTING POINT BUT THERE ARE SOME LIMITATIONS

Slide 57

Slide 57 text

TO THE RESCUE

Slide 58

Slide 58 text

RELEASE STATEMENT OF AIMS “To scale the radical concurrency-oriented programming paradigm to build reliable general-purpose software, such as server- based systems, on massively parallel machines (10^5 cores).”

Slide 59

Slide 59 text

WP4 Scalable Infrastructure WP3 SD Erlang Language WP2 Virtual Machine WP5 Tools WP6 Case Studies LIMITATIONS ARE PRESENT AT THREE LEVELS

Slide 60

Slide 60 text

• PUSH THE RESPONSIBILITY FOR SCALABILITY FROM THE PROGRAMMER TO THE VM • ANALYZE PERFORMANCE AND SCALABILITY • IDENTIFY BOTTLENECKS AND PRIORITIZE CHANGES AND EXTENSIONS • TACKLE WELL-KNOWN SCALABILITY ISSUES • ETS TABLES (SHARED GLOBAL DATA STRUCTURE) • MESSAGE PASSING, COPYING AND FREQUENTLY COMMUNICATING PROCESSES VM LANGUAGE INFRASTRUCTURE

Slide 61

Slide 61 text

VM LANGUAGE INFRASTRUCTURE • TWO MAJOR ISSUES • FULLY CONNECTED CLUSTERS • EXPLICIT PROCESS PLACEMENT • SCALABLE DISTRIBUTED (SD) ERLANG • NODES GROUPING • NON-TRANSITIVE CONNECTIONS • IMPLICIT PROCESS PLACEMENT • PART OF THE STANDARD ERLANG/OTP PACKAGE • NEW CONCEPTS INTRODUCED • LOCALITY, AFFINITY AND DISTANCE

Slide 62

Slide 62 text

• MIDDLEWARE LAYER • SET OF ERLANG APPLICATIONS • CREATE AND MANAGE CLUSTERS OF (HETEROGENEOUS) ERLANG NODES • API TO MONITOR AND CONTROL ERLANG DISTRIBUTED SYSTEMS • EXISTING TRACING/LOGGING/DEBUGGING TOOLS PLUGGABLE • BROKER LAYER BETWEEN USERS AND CLOUD PROVIDERS • AUTO-SCALING VM LANGUAGE INFRASTRUCTURE CCL /sɪˈsɪlɪ/ ... AND MUCH MORE

Slide 63

Slide 63 text

BENCHERL

Slide 64

Slide 64 text

PERCEPT 2

Slide 65

Slide 65 text

LESSON OF THE DAY

Slide 66

Slide 66 text

IF I WRITE MY APPLICATION IN ERLANG, IT WILL SCALE

Slide 67

Slide 67 text

IF I WRITE MY APPLICATION IN ERLANG, IT WILL SCALE NOT.

Slide 68

Slide 68 text

IF I WRITE MY APPLICATION IN ERLANG, IT WILL SCALE NOT. Well, not automagically!

Slide 69

Slide 69 text

SHIPPED WITH BLACK MAGIC INSIDE

Slide 70

Slide 70 text

WHERE TO START WITH ERLANG

Slide 71

Slide 71 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 Erlang Best book about OTP

Slide 72

Slide 72 text

QUESTIONS? @robertoaloi https://speakerdeck.com/robertoaloi