an introduction to erlang -...
TRANSCRIPT
![Page 1: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/1.jpg)
An Introduction to Erlang
Erlang Solutions Ltd
Francesco Cesarini Founder, Technical Director
@FrancescoC [email protected]
From behind the trenches…
GOTO Copenhagen May 13th, 2011
![Page 2: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/2.jpg)
© 2011 – Erlang Solutions Ltd.
So Here I Am….
![Page 3: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/3.jpg)
© 2011 – Erlang Solutions Ltd.
The Computer Science Lab
![Page 4: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/4.jpg)
© 2011 – Erlang Solutions Ltd.
Telecom Applications: Issues
Complex
No down time
Scalable
Maintainable
Distributed
vs
Time to Market Access transport and switching networks
Cellular PLMN
PSTN/ ISDN
Data/ IP Networks
CATV
Services
Past Single-service networks
Clients/applications
Present Multiservice networks/client server
Backbone Network
Access Access Access
Content Content
Control
Communication applications
Media Gateways
![Page 5: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/5.jpg)
© 2011 – Erlang Solutions Ltd.
The Ancestors
![Page 6: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/6.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights
Declarative
Concurrent
Robust
Distributed
Hot code loading
Multicore Support
OTP
Functional programming language
High abstraction level Pattern matching
Concise readable programs
![Page 7: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/7.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights: Factorial
n! = 1
n*(n-1)!
n = 0
n! 1
Definition
-module(ex1). -export([factorial/1]).
factorial(0) -> 1; factorial(N) when N >= 1 -> N * factorial(N-1).
Implementation
Eshell V5.0.1 (abort with ^G) 1> c(ex1). {ok,ex1} 2> ex1:factorial(6). 720
Factorial using Recursion
![Page 8: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/8.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights: High-level Constructs
QuickSort using List Comprehensions
-module(ex2). -export([qsort/1]).
qsort([Head|Tail]) -> First = qsort([X || X <- Tail, X =< Head]), Last = qsort([Y || Y <- Tail, Y > Head]), First ++ [Head] ++ Last; qsort([]) -> [].
Eshell V5.0.1 (abort with ^G) 1> c(ex2). {ok,ex2} 2> ex2:qsort([7,5,3,8,1]). [1,3,5,7,8]
"all objects Y taken from the list
Tail, where Y > Head"
![Page 9: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/9.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights: High-level Constructs
<< SourcePort:16, DestinationPort:16, SequenceNumber:32, AckNumber:32, DataOffset:4, _Reserved:4, Flags:8, WindowSize:16, Checksum:16, UrgentPointer:16, Payload/binary>> = Segment,
OptSize = (DataOffset - 5)*32, << Options:OptSize, Message/binary >> = Payload, << CWR:1, ECE:1, URG:1, ACK:1, PSH:1, RST:1, SYN:1, FIN:1>> = <<Flags:8>>,
%% Can now process the Message according to the %% Options (if any) and the flags CWR, ..., FIN
etc…
Parsing a TCP packet using the Bit Syntax
![Page 10: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/10.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights
Declarative
Concurrent
Robust
Distributed
Hot code loading
Multicore Support
OTP
Either transparent or explicit concurrency
Light-weight processes Highly scalable
![Page 11: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/11.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights: Concurrency
Creating a new process using spawn
-module(ex3). -export([activity/3]).
activity(Name,Pos,Size) -> …………
Pid = spawn(ex3,activity,[Joe,75,1024])
activity(Joe,75,1024)
![Page 12: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/12.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights: Concurrency
10 100 1,000 10,000 100,000 Number of processes 1
10
100
1,000
Mic
rose
cond
s/pr
oces
s erlang
java
C#
Source: Joe Armstrong SICS
Process creation time
![Page 13: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/13.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights: Concurrency
Processes communicate by asynchronous message passing
Pid ! {data,12,13} receive {start} -> ……… {stop} -> ……… {data,X,Y} -> ……… end
receive {start} -> ……… {stop} -> ……… {data,X,Y} -> ……… end
![Page 14: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/14.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights: Concurrency
10 100 1,000 10,000 100,000 Number of processes 1
10
1,000
100,000
Mic
rose
cond
s/m
essa
ge
erlang java
C#
10,000
100
1 Source: Joe Armstrong SICS
Message passing times
![Page 15: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/15.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights
Declarative
Concurrent
Robust
Distributed
Hot code loading
Multicore Support
OTP
Simple and consistent error recovery
Supervision hierarchies "Program for the correct case"
![Page 16: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/16.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights: Robustness
Cooperating processes may be linked together
using spawn_link(…,…,…) or link(Pid)
![Page 17: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/17.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights: Robustness
When a process terminates, an exit signal is sent to all linked processes
… and the termination is propagated
![Page 18: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/18.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights: Robustness Exit signals can be trapped and received as messages
receive {‘EXIT’,Pid,...} -> ... end
![Page 19: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/19.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights: Robustness
Robust systems can be built by layering
“Supervisors”
“Workers”
![Page 20: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/20.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights
Declarative
Concurrent
Robust
Distributed
Hot code loading
Multicore Support
OTP
Explicit or transparent distribution
Network-aware runtime system
![Page 21: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/21.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights: Distribution
Erlang Run-Time System Erlang Run-Time System
B ! Msg
network
C ! Msg
![Page 22: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/22.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights: Distribution
loop() -> receive {From, {apply, M, F, A}} -> Answer = apply(M, F, A), From ! {rex, node(), Answer} loop(); _Other -> loop() end.
{rex, Node} ! {self(), {apply, M, F, A}}, receive {rex, Node, What} -> What end
{rex, Node} ! {self(), {apply, M, F, A}}, receive {rex, Node, What} -> What end
{rex, Node} ! {self(), {apply, M, F, A}}, receive {rex, Node, What} -> What end
loop() -> receive {From, {apply, M, F, A}} -> Answer = apply(M, F, A), From ! {rex, node(), Answer} loop(); _Other -> loop() end.
loop() -> receive {From, {apply, M, F, A}} -> Answer = apply(M, F, A), From ! {rex, node(), Answer} loop(); _Other -> loop() end.
loop() -> receive {From, {apply, M, F, A}} -> Answer = apply(M, F, A), From ! {rex, node(), Answer} loop(); _Other -> loop() end.
Simple Remote Procedure Call
![Page 23: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/23.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights
Declarative
Concurrent
Robust
Distributed
Hot code loading
Multicore Support
OTP
Easily change code in a running system
Enables non-stop operation Simplifies testing
![Page 24: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/24.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights: Hot Code Swap
Version 1 Version 2
![Page 25: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/25.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights
SMP support provides linear scalability out of the box thanks to its no shared
memory approach to concurrency.
Declarative
Concurrent
Robust
Distributed
Hot code loading
Multicore Support
OTP
![Page 26: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/26.jpg)
© 2011 – Erlang Solutions Ltd.
Ericsson’s strategy with SMP
Make it work -> measure -> optimize
Hide the problems and awareness of SMP from the programmer Programmed in the normal style using processes for encapsulation and parallelisation
![Page 27: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/27.jpg)
© 2011 – Erlang Solutions Ltd.
Multicore Erlang
Erlang VM
Scheduler #1
Scheduler #2
run queue
Scheduler #2
Scheduler #N
run queue
run queue
migration logic
migration logic
![Page 28: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/28.jpg)
© 2011 – Erlang Solutions Ltd.
Tilera “Tile64”
Chatty
500 processes created
Each process randomly sends messages and receives a response from all other processes
![Page 29: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/29.jpg)
© 2011 – Erlang Solutions Ltd.
Multicore Benchmark – Big Bang
Erlang/OTP R13B on Tilera Pro 64-core
![Page 30: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/30.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights
Declarative
Concurrent
Robust
Distributed
Hot code loading
Multicore Support
OTP
Provides the design patterns, libraries and tools to develop
distributed fault tolerant systems.
![Page 31: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/31.jpg)
© 2011 – Erlang Solutions Ltd.
Open Telecom Platform
P
T
Applications & Libraries
System Design Principles
![Page 32: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/32.jpg)
© 2011 – Erlang Solutions Ltd.
OTP: System Design Principles
A set of abstract principles and design rules. ! They describe the software architecture of an Erlang System ! Needed so existing tools will be compatible with them ! Facilitate understanding of the system among teams
A set of generic behaviours. ! Each behaviour is a formalisation of a design pattern ! Contains frameworks with generic code ! Solve a common problem ! Have built in support for debugging and software upgrade ! Facilitate understanding of the sub blocks in the system
![Page 33: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/33.jpg)
© 2011 – Erlang Solutions Ltd.
Erlang Highlights
Declarative
Concurrent
Robust
Distributed
Hot code loading
Multicore Support
OTP
![Page 34: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/34.jpg)
© 2011 – Erlang Solutions Ltd.
![Page 35: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/35.jpg)
© 2011 – Erlang Solutions Ltd.
The Myths of Erlang….
Is it Documented?
Is the developer supporting it?
What visibility does support staff have into what is going on? ! SNMP ! Live Tracing ! Audit Trails ! Statistics ! CLI / HTTP Interface
How much new code was actually written?
![Page 36: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/36.jpg)
© 2011 – Erlang Solutions Ltd.
![Page 37: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/37.jpg)
© 2011 – Erlang Solutions Ltd.
The Myths of Erlang….
Yes, it is easy for ! Simple patches ! Adding functionality without changing the state
Non backwards compatible changes need time time ! Database schema changes ! State changes in your processes ! Upgrades in distributed environments
Test, Test, Test ! A great feature when you have the manpower!
![Page 38: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/38.jpg)
© 2011 – Erlang Solutions Ltd.
![Page 39: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/39.jpg)
© 2011 – Erlang Solutions Ltd.
The Myths of Erlang….
![Page 40: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/40.jpg)
© 2011 – Erlang Solutions Ltd.
The Myths of Erlang….
99,999 (Five Nines) is a more like it! ! Achieved at a fraction of the effort of Java & C++
Upgrades are risky! Non Software related issues ! Power Outages ! Networking ! Hardware Faults
![Page 41: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/41.jpg)
© 2011 – Erlang Solutions Ltd.
The Myths of Erlang….
99,999 (Five Nines) is a more like it! ! Achieved at a fraction of the effort of Java & C++
Upgrades are risky! Non Software related issues ! Power Outages ! Network Failures, Firewall Configurations ! Hardware Faults
![Page 42: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/42.jpg)
© 2011 – Erlang Solutions Ltd.
Questions
![Page 43: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/43.jpg)
© 2011 – Erlang Solutions Ltd.
More Information
Programming Erlang ! Software for a Concurrent World ! by Joe Armstrong
Erlang Programming ! A Concurrent Approach to Software Development ! by Francesco Cesarini & Simon Thompson
Erlang and OTP in Action ! Large-scale software design with OTP ! by Richard Carlsson, Martin Logan & Eric Merrit
![Page 44: An Introduction to Erlang - gotocon.comgotocon.com/dl/goto-cph-2011/slides/FrancescoCesarini_ErlangFromBehind... · An Introduction to Erlang Erlang Solutions Ltd Francesco Cesarini](https://reader036.vdocuments.us/reader036/viewer/2022062223/5e1710d37b972e3723711d66/html5/thumbnails/44.jpg)
© 2011 – Erlang Solutions Ltd.