Bjarne D - PowerPoint PPT Presentation

Loading...

PPT – Bjarne D PowerPoint presentation | free to download - id: e2a14-ZDc1Z



Loading


The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
About This Presentation
Title:

Bjarne D

Description:

Bjarne D cker. Real-Time in Sweden, Halmstad. (ppt) ... 2001-03-19 ETX/D/XPS-01:002 Uen 1. Bjarne D cker bjarne_at_erix.ericsson.se ... – PowerPoint PPT presentation

Number of Views:30
Avg rating:3.0/5.0
Slides: 50
Provided by: eric419
Learn more at: http://www.erlang.se
Category:

less

Write a Comment
User Comments (0)
Transcript and Presenter's Notes

Title: Bjarne D


1
Concurrent Functional Programming with Erlang and
OTP (Open Telecom Platform)
  • Bjarne Däcker ltbjarne_at_erix.ericsson.segtComp
    uter Science Laboratory
  • Ericsson Utvecklings AB
  • Acknowledgements
  • Thomas Arts ltthomas_at_erix.ericsson.segt
  • Hans Nilsson lthans_at_erix.ericsson.segt
  • Torbjörn Keisu lttorbjorn.keisu_at_ericsson.comgt
  • Ulf Wiger ltulf.wiger_at_ericsson.comgt

2
The setting
  • 1995 PC Week Study of software projects
  • 16 successful
  • 53 operational (but less than successful)
  • 31 cancelled
  • Butler Group 1997 on large software projects
  • 5 out of 6 large projects fail
  • In gt300M companies, 9 out of 10 large projects
    fail
  • How to approach this?
  • Use high-level modeling tools generate code?
  • Raise the level of programming language?
  • Fight all causes for project failure!

3
Telecom industry
  • Switches, routers,
  • base-stations
  • Networks
  • Mobile telephones

4
  • Requirements on a Programming Technology for
    Telecommunication Switching Systems
  • Massive concurrency
  • Soft realtime
  • Distribution
  • Interaction with hardware
  • Very large software systems
  • Complex functionality
  • Continuous operation for many years
  • Software maintenance without stopping the system
  • Stringent quality and reliability requirements
  • Fault tolerance errors

5
History of Erlang
No language well suited for telecom
systems development
1984 Ericsson Computer Science Lab formed
1998 Open Source Erlang
1991 First fast implementation
1987 Early Erlang Prototype projects
1984-86 Experiments programming POTS with
several languages
1996 Open Telecom Platform (research on
verification...)
1995 Several new projects
1993 Distributed Erlang
6
  • The Ancestry of Erlang

Functional programming languages like ML or
Miranda
Concurrent systems programming languages like
Ada, Modula or Chill
Concurrent functional programming language Erlang
7
Erlang Highlights
Functional programming language High abstraction
level Pattern matching Concise readable programs
  • Declarative
  • Concurrency
  • Soft real-time
  • Robustness
  • Distribution
  • Hot code loading
  • External interfaces
  • Portability

8
Erlang Example
Basics - Factorial function
9
Erlang Example
A few very high-level constructs - QuickSort
-module(ex2). -export(qsort/1). qsort(HeadTai
l) -gt First qsort(X X lt- Tail, X lt
Head), Last qsort(Y Y lt- Tail, Y gt
Head), First HeadLast qsort() -gt
.
"all objects Y taken from the list Tail, where Y
gt Head"
10
Erlang Highlights
Either transparent or explicit
concurrency Light-weight processes Highly scalable
  • Declarative
  • Concurrency
  • Soft real-time
  • Robustness
  • Distribution
  • Hot code loading
  • External interfaces
  • Portability

11
Erlang Example
Creating a new process using spawn
-module(ex3). -export(activity/3). activity(Nam
e,Pos,Size) -gt
Pid spawn(ex3,activity,Joe,75,1024)
12
Erlang Example
Processes communicate by asynchronous message
passing
receive start -gt stop -gt
data,X,Y -gt end
receive start -gt stop -gt
data,X,Y -gt end
Pid ! data,12,13
13
Erlang Example
Concurrency - Finite State Machine
Selective receive
ringing_a(A, B) -gt receive A, on_hook
-gt back_to_idle(A, B) B,
answered -gt A ! stop_tone, ring,
switch ! connect, A, B,
conversation_a(A, B) after 30000 -gt
back_to_idle(A, B) end. back_to_idle(A, B) -gt
A ! stop_tone, ring, B ! terminate,
idle(A).
Asynchronous send
Optional timeout
14
Erlang Highlights
Response times in the order of milliseconds Per-pr
ocess garbage collection
  • Declarative
  • Concurrency
  • Soft real-time
  • Robustness
  • Distribution
  • Hot code loading
  • External interfaces
  • Portability

15
Erlang Highlights
Simple and consistent error recovery Supervision
hierarchies "Program for the correct case"
  • Declarative
  • Concurrency
  • Soft real-time
  • Robustness
  • Distribution
  • Hot code loading
  • External interfaces
  • Portability

16
Erlang Example
Cooperating processes may be linked together
using spawn_link(,,) or link(Pid)
17
Erlang Example
When a process terminates, an exit signal is sent
to all linked processes
and the termination is propagated
18
Erlang Example
Exit signals can be trapped and received as
messages
receive EXIT,Pid,... -gt ... end
19
Erlang Example
Robust systems can be built by layering
Supervisors
Workers
20
Erlang Highlights
Explicit or transparent distribution Network-aware
runtime system
  • Declarative
  • Concurrency
  • Soft real-time
  • Robustness
  • Distribution
  • Hot code loading
  • External interfaces
  • Portability

21
Transparent Distribution
B ! Msg
C ! Msg
Erlang Run-Time System
Erlang Run-Time System
network
22
Simple RPC
rex, Node ! self(), apply, M, F,
A, receive rex, Node, What -gt What end
rex, Node ! self(), apply, M, F,
A, receive rex, Node, What -gt What end
rex, Node ! self(), apply, M, F,
A, receive rex, Node, What -gt What end
loop() -gt receive From, apply, M,
F, A -gt Answer apply(M, F, A),
From ! rex, node(), Answer
loop() _Other -gt loop() end.
loop() -gt receive From, apply, M,
F, A -gt Answer apply(M, F, A),
From ! rex, node(), Answer
loop() _Other -gt loop() end.
loop() -gt receive From, apply, M,
F, A -gt Answer apply(M, F, A),
From ! rex, node(), Answer
loop() _Other -gt loop() end.
loop() -gt receive From, apply, M,
F, A -gt Answer apply(M, F, A),
From ! rex, node(), Answer
loop() _Other -gt loop() end.
23
Erlang Highlights
Easily change code in a running system Enables
non-stop operation Simplifies testing
  • Declarative
  • Concurrency
  • Soft real-time
  • Robustness
  • Distribution
  • Hot code loading
  • External interfaces
  • Portability

24
Erlang Example
Version 1
Version 2
25
Erlang Highlights
"Ports" to the outside world behave as Erlang
processes
  • Declarative
  • Concurrency
  • Soft real-time
  • Robustness
  • Distribution
  • Hot code loading
  • External interfaces
  • Portability

26
Erlang Example
External process
Port
Port ! self(), command, 1,2,3
27
Erlang Example
External process
Port
receive Port, data, Info -gtend
28
Erlang Highlights
Erlang runs on any UNIX, Windows, VxWorks,
... Supports heterogeneous networks
  • Declarative
  • Concurrency
  • Soft real-time
  • Robustness
  • Distribution
  • Hot code loading
  • External interfaces
  • Portability

29
Systems Overview
Applications written in Erlang
Applications written in C, C or Java
OTP Components
Standard Libraries
Erlang Run-Time System
Hardware and Operating System
30
Erlang/OTP
  • Open Telecom Platform
  • Middleware for Erlang development
  • Designed for fault tolerance and portability
  • Behaviors A formalization of design patterns
  • Components
  • Error handling, reporting and logging
  • Mnesia, distributed real-time database management
    system
  • CORBA
  • IDL Compiler, Java C Interface Support
  • HTTP Server
  • SNMP Agent
  • ...

31
OTP Behaviors
  • "A formalization of design patterns"
  • A behavior is a framework generic code to
    solve a common problem
  • Each behavior has built-in support fordebugging
    and software upgrade
  • Makes it easier to reason about the behavior of a
    program
  • Examples of OTP behaviors
  • application defines how an application is
    implemented
  • supervisor used to write fault-tolerant
    supervision trees
  • gen_server for writing client-server applications
  • gen_event for writing event handlers
  • gen_fsm for finite state machine programming

32
The standard textbook
Joe Armstrong, Robert Virding, Claes Wikström and
Mike Williams, Concurrent Programming in Erlang,
Prentice Hall, 1996,2nd edition, ISBN
0-13-508301-X
33
Interesting web pages
Open source Erlang www.erlang.org
Commercial Erlang www.erlang.se
French Erlang site www.erlang-fr.org
34
Courses/year (10-15 pupils/course)
35
Requests/month to www.erlang.org
36
Downloads/month from www.erlang.org
37
  • AXD 301 A Telephony-Class, scalable (10-160
    GBps) ATM switchdesigned from scratch in less
    than 3 years
  • AXD 301 Success factors
  • Highly pragmatic, holistic approach
  • Competent organisation
  • Efficient process
  • Excellent technology (e.g. Erlang/OTP)
  • More than just technology...
  • Consider all factors together from the start
  • Erlang was a perfect match for our approach

38
AXD 301 in the marketplace
ENGINE Migrating today's vertical networks into
a single multi-service backbone
  • Central component in Ericsson's ENGINE offering
  • Several major operators
  • British Telecom
  • Vodaphone
  • Worldcom
  • Telia
  • Diveo
  • ...

39
Briefly about the term Carrier-Class
  • To us, "Carrier-Class", "Telephony-Class"
    and"Telecom Profile" are synonymous
  • The quality we've come to expectfrom public
    telephony networks
  • The trend towards multimedia servicesrequires
    Carrier-Class in more systems
  • More than just duplication of hardware
  • Fault-tolerant software
  • In-service hardware expansion
  • In-service software upgrade
  • Load tolerance
  • Flexibility (frequent changes long service
    life)
  • Target 99,999 ("five nines") availability,
    including planned outages

There's no such thing as "almost Carrier-Class"!
40
Telecom-Class System Architecture
Control Processors
LineTermination
ATM Termination
CP
IO
Mandatory Mated Processor Pair
ATM
Switch Core
IO
CP
CE
FR
IO
CP
Optional Processors
Server Device
L3F
CP
IO
Clock Synchronization
Device Processor on Each Board
41
Programming languages (control system)
  • Erlang ca 1 million lines of code
  • Nearly all the complex control logic
  • Operation Maintenance
  • Web server and runtime HTML/JavaScript generation
  • C/C ca 500k lines of code
  • Third party software
  • Low-level protocol drivers
  • Device drivers
  • Java ca 13k lines of code
  • Operator GUI applets

42
Experiences from AXD 301 SW Design
  • Using Erlang in Complex Systems
  • Fits very well with the incremental design method
  • High programmer satisfaction
  • Outstanding support for robustness and
    concurrency
  • Very few side-effects ? easier to add/change
    single components
  • Small directed teams can achieve impressive
    results
  • Productivity estimates
  • Similar line/hour programmer productivity
  • 4-10 fewer lines of source code (compared to
    C/C, Java, PLEX)
  • 4-10x higher programmer productivity
  • Similar number of faults per 1000 lines of source
    code
  • 4-10x higher quality

43
  • Functional Requirements
  • Use cases (in telecom traffic cases)
  • User interfaces
  • ...
  • Non-functional Requirements
  • Code updating without interrupting the service
  • Distribution over several processors
  • Automatic handover upon error
  • Limited restart time
  • ...
  • The non-functional requirements are often much
    trickier to handle and require technology
    bottom-up rather than analysis top-down.

44
Efficient Program Development
Requirements
  • Interaction with the real environment
  • Powerful and appropriate abstraction mechanisms
  • Efficient implementation
  • Useful tools

Ideas
Prototyping
Productification
45
A Simple Erlang-XML Document
XML
lt?xml version1.0?gt lthome.page titleMy Home
Pagegt lttitlegt Welcome to My Home
Page lt/titlegt lttextgt ltparagt Sorry, this
home page is still under construction. Please
come back soon! lt/paragt lt/textgt lt/home.pagegt
Almost equivalent
46
Erlang Summary
  • Declarative
  • Compact code
  • Concurrency
  • Light-weight processes
  • Message passing
  • Soft real-time
  • Robustness
  • Process supervision
  • Error trapping
  • Distribution
  • Hot code loading
  • External interfaces
  • To hardware and other languages
  • Portability

www.erlang.org www.erlang.se
47
The Research Continues ...
  • HiPE - High Performance Erlang (Uppsala, Astec)
  • ETOS - Erlang to Scheme (Montréal)
  • Erlang Verification (SICS, Astec)
  • Type System (Glasgow)
  • Safe Erlang (Canberra)
  • Specification Techniques (Aachen)
  • Erlang Processor (Ericsson CADLab)
  • ...

48
Erlang User Conference 2000
Hurray !!!
49
Welcome to the next EUC September 27,
2001 Älvsjö. Stockholm www.erlang.se
Combined with IFL - International Workshop on
the Implementation of Functional
Languages September 24-26, 2001 Älvsjö. Stockholm
About PowerShow.com