Erlang
                 Built for concurrent, distributed systems



                July 27, 2011


                Ken Pratt
                http://kenpratt.net/

Wednesday, July 27, 2011
The philosophy

                              "Erlang was designed for writing
                           concurrent programs that "run forever""
                                      - Joe Armstrong




Wednesday, July 27, 2011
The philosophy

               Simple language
               Ultra-lightweight concurrency
               No shared state
               Local & remote communication via messaging




Wednesday, July 27, 2011
The language

               Functional
               Pattern matching
               No variables! (well, they don’t vary, anyway)
               Compiled to bytecode, runs on VM




Wednesday, July 27, 2011
The VM

               Processes
               Pre-emptive scheduler
               Memory manager
               Mesh networking




Wednesday, July 27, 2011
Erlang == distributed OS?

               Erlang is not so much a programming language as it is
               a distributed Operating System.
               It’s like an ant colony with thousands of ants performing
               all sorts of different tasks.
               Erlang is to threads what garbage collection is to
               manual memory management -- it brings concurrent
               programming into the 21st century.



Wednesday, July 27, 2011
Local architecture




                           = light-weight process with a built-in mailbox
Wednesday, July 27, 2011
Distributed architecture




                           = light-weight process with a built-in mailbox
Wednesday, July 27, 2011
Interesting architectures

               Having thousands of lightweight “threads” really opens
               up the architecture options.
               The main example application on the “Erlang and OTP
               in Action” book is a cache using one process per
               cache entry!




Wednesday, July 27, 2011
Standard library


               Common patterns do all the concurrency heavy lifting
               for you (gen_server, rpc)
               Supervision trees
               Hot code deployment




Wednesday, July 27, 2011
In production

            Chat backend    SimpleDB   Orchestration of
                                        Ruby services



            Routing mesh,
           logging system




Wednesday, July 27, 2011
Erlang + Neo4j


               Erlang has graphs: http://www.erlang.org/doc/man/
               digraph.html
               BUT, it’s no Graph DB




Wednesday, July 27, 2011
Erlang + Neo4j

               Nerlo: http://github.com/nerlo/nerlo (Jinterface-based)
               Cali: http://github.com/dmitriid/cali (Jinterface-based)
               Both look pretty dead-in-the-water (no commits on
               either project in ~1 yr)
               BUT, Jinterface works well, so does Mule ESB. So in
               the worst case you could write your Neo4j adapters in
               the JVM and bridge to Erlang with a biz-logic-level API.



Wednesday, July 27, 2011
Resources




Wednesday, July 27, 2011

More Related Content

PDF
A sip of Elixir
PPTX
Remote Experimentation with Emona DATEx
PDF
Elixir intro
PDF
Concurrent programming1
PDF
Community Code: Xero
PDF
Tim - FSharp
PDF
CoreML
PPTX
The two paths
A sip of Elixir
Remote Experimentation with Emona DATEx
Elixir intro
Concurrent programming1
Community Code: Xero
Tim - FSharp
CoreML
The two paths

Viewers also liked (6)

PPTX
Kata experience experimentation form to print on a3
PPTX
Enterprise Services Planning - Scaling the Benefits of Kanban
PDF
Toyota Kata - habits for continous learning. Shingo Institue European Confere...
PPTX
Getting to pull at enterprise scale
PDF
Introduction to monte-carlo analysis for software development - Troy Magennis...
PPTX
DOES15 - Troy Magennis and Julia Wester - Metrics and Modeling – Helping Team...
Kata experience experimentation form to print on a3
Enterprise Services Planning - Scaling the Benefits of Kanban
Toyota Kata - habits for continous learning. Shingo Institue European Confere...
Getting to pull at enterprise scale
Introduction to monte-carlo analysis for software development - Troy Magennis...
DOES15 - Troy Magennis and Julia Wester - Metrics and Modeling – Helping Team...
Ad

Similar to Erlang: Bult for concurrent, distributed systems (20)

PDF
Erlang in 10 minutes
PDF
Erlang factory SF 2011 "Erlang and the big switch in social games"
PDF
Erlang, the big switch in social games
PDF
The design and implementation of a scalable concurrent virtual machine (Rober...
ODP
An introduction to erlang
KEY
Intro to Erlang
PDF
FunctionalConf '16 Robert Virding Erlang Ecosystem
PDF
Introduction To Erlang Final
PDF
Erlang, an overview
PDF
Erlang: Software for a Concurrent world
PDF
Why Erlang? - Bar Camp Atlanta 2008
PDF
"erlang, webmail and hibari" at Rakuten tech talk
PDF
The design and implementation of a scalable concurrent virtual machine (Rober...
PDF
Errors and handling them. YOW nights Sydney 2011
PDF
Error Handling Done Differently
KEY
Erlang: TL;DR
PPT
Erlang For Five Nines
PDF
Erlang Message Passing Concurrency, For The Win
PPTX
Erlang real time
KEY
Erlang - Dive Right In
Erlang in 10 minutes
Erlang factory SF 2011 "Erlang and the big switch in social games"
Erlang, the big switch in social games
The design and implementation of a scalable concurrent virtual machine (Rober...
An introduction to erlang
Intro to Erlang
FunctionalConf '16 Robert Virding Erlang Ecosystem
Introduction To Erlang Final
Erlang, an overview
Erlang: Software for a Concurrent world
Why Erlang? - Bar Camp Atlanta 2008
"erlang, webmail and hibari" at Rakuten tech talk
The design and implementation of a scalable concurrent virtual machine (Rober...
Errors and handling them. YOW nights Sydney 2011
Error Handling Done Differently
Erlang: TL;DR
Erlang For Five Nines
Erlang Message Passing Concurrency, For The Win
Erlang real time
Erlang - Dive Right In
Ad

Recently uploaded (20)

PDF
OpenACC and Open Hackathons Monthly Highlights July 2025
PDF
Two-dimensional Klein-Gordon and Sine-Gordon numerical solutions based on dee...
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PDF
Architecture types and enterprise applications.pdf
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
Consumable AI The What, Why & How for Small Teams.pdf
PPTX
Configure Apache Mutual Authentication
PDF
STKI Israel Market Study 2025 version august
PDF
Zenith AI: Advanced Artificial Intelligence
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PDF
sustainability-14-14877-v2.pddhzftheheeeee
PDF
Getting started with AI Agents and Multi-Agent Systems
PDF
Five Habits of High-Impact Board Members
PDF
A proposed approach for plagiarism detection in Myanmar Unicode text
PPTX
The various Industrial Revolutions .pptx
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PPT
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PPTX
Modernising the Digital Integration Hub
OpenACC and Open Hackathons Monthly Highlights July 2025
Two-dimensional Klein-Gordon and Sine-Gordon numerical solutions based on dee...
Final SEM Unit 1 for mit wpu at pune .pptx
Architecture types and enterprise applications.pdf
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
A comparative study of natural language inference in Swahili using monolingua...
Consumable AI The What, Why & How for Small Teams.pdf
Configure Apache Mutual Authentication
STKI Israel Market Study 2025 version august
Zenith AI: Advanced Artificial Intelligence
NewMind AI Weekly Chronicles – August ’25 Week III
sustainability-14-14877-v2.pddhzftheheeeee
Getting started with AI Agents and Multi-Agent Systems
Five Habits of High-Impact Board Members
A proposed approach for plagiarism detection in Myanmar Unicode text
The various Industrial Revolutions .pptx
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
Modernising the Digital Integration Hub

Erlang: Bult for concurrent, distributed systems

  • 1. Erlang Built for concurrent, distributed systems July 27, 2011 Ken Pratt http://kenpratt.net/ Wednesday, July 27, 2011
  • 2. The philosophy "Erlang was designed for writing concurrent programs that "run forever"" - Joe Armstrong Wednesday, July 27, 2011
  • 3. The philosophy Simple language Ultra-lightweight concurrency No shared state Local & remote communication via messaging Wednesday, July 27, 2011
  • 4. The language Functional Pattern matching No variables! (well, they don’t vary, anyway) Compiled to bytecode, runs on VM Wednesday, July 27, 2011
  • 5. The VM Processes Pre-emptive scheduler Memory manager Mesh networking Wednesday, July 27, 2011
  • 6. Erlang == distributed OS? Erlang is not so much a programming language as it is a distributed Operating System. It’s like an ant colony with thousands of ants performing all sorts of different tasks. Erlang is to threads what garbage collection is to manual memory management -- it brings concurrent programming into the 21st century. Wednesday, July 27, 2011
  • 7. Local architecture = light-weight process with a built-in mailbox Wednesday, July 27, 2011
  • 8. Distributed architecture = light-weight process with a built-in mailbox Wednesday, July 27, 2011
  • 9. Interesting architectures Having thousands of lightweight “threads” really opens up the architecture options. The main example application on the “Erlang and OTP in Action” book is a cache using one process per cache entry! Wednesday, July 27, 2011
  • 10. Standard library Common patterns do all the concurrency heavy lifting for you (gen_server, rpc) Supervision trees Hot code deployment Wednesday, July 27, 2011
  • 11. In production Chat backend SimpleDB Orchestration of Ruby services Routing mesh, logging system Wednesday, July 27, 2011
  • 12. Erlang + Neo4j Erlang has graphs: http://www.erlang.org/doc/man/ digraph.html BUT, it’s no Graph DB Wednesday, July 27, 2011
  • 13. Erlang + Neo4j Nerlo: http://github.com/nerlo/nerlo (Jinterface-based) Cali: http://github.com/dmitriid/cali (Jinterface-based) Both look pretty dead-in-the-water (no commits on either project in ~1 yr) BUT, Jinterface works well, so does Mule ESB. So in the worst case you could write your Neo4j adapters in the JVM and bridge to Erlang with a biz-logic-level API. Wednesday, July 27, 2011