SlideShare a Scribd company logo
Erlang/Elixir and OTP
Gil Meir, CTO, Spectory
Erlang
• Erlang is a dynamically-typed, garbage-collected,
concurrent, functional programming language that
compiles to byte code and runs on a virtual machine
• Created at Ericsson in 1986 and is completely open
sourced (Apache v2)
• Syntax is loosely based on Prolog
Erlang (cont.)
• Share-nothing message passing (a.k.a Actor Model)
• Light weight processes (a.k.a Green Threads)
• Immutable Data Structures
• Type annotations
• Per Process Garbage Collector (soft real-time)
• Hot code loading
• Location transparency
• Runtime system monitoring and observation
• Built-in NoSQL database with ACID transactions
Open Telecom Platform
• A set of design guidelines and libs for developing
fault-tolerant, soft real-time, distributed systems
• Battle tested for over 30 years in the Telecom
industry and more recently at most of the leading
Internet companies
• Promotes a “let-it-crash” + “software watchdogs”
approach for fault-tolerance, normalizes some
aspects of Erlang
Why Elixir?
• Modern Syntax
• Unicode Strings
• Fix Accidental Complexity (dict/orddict/gb_tree)
• Meta-Programming, Protocols, Pipeline Operator, ..
• Advanced tooling and interactive development
• Superb web framework (Phoenix)
Some Fun with Elixir
More Fun with Elixir
Simple Message Passing
OTP Concepts
• Messages handled in order they are received to
avoid message leak
• Supervisor Trees – watchdogs for processes with
multiple monitor and restart strategies
• Well-defined sets of callbacks for processes that
follow the same pattern (e.g GenServer implements
start, init, handle_call, handle_cast, handle_info,
code_change, …)
• Applications – bundle modules, servers, supervisors
and configs as a single logical unit (e.g. Logger, Db)
• Release – A complete system of multiple applications
bundled together under a version number with
support for differential upgrades
Runtime Observer
• Connect to remote system
• View running processes
• View process mailboxes
• Trace messages
• View Applications
• View Supervision Trees
• View Performance Metrics
• View Logs
• Restart Processes
• View System Information
Phoenix Performance
Language Framework Throughput (req/s)
Go Gin 51,483
Elixir Phoenix 43,063
JavaScript (NodeJS) Express 9,966
Ruby Rails 3,275
• Benchmarks should never be taken too literally
• Express Cluster and Rails5 make better use of multi-core CPUs and exhibit better throughput
• YMMV
Elixir @ Spectory
Websites and Webapps
Mobile Backends
IoT Backends
Scripts
Load Testers
Web Scrapers
Chat Servers (obviously)
Jump in, the water’s fine 
Thank You
https://www.spectory.com

More Related Content

PPTX
Elixir in the Wild
Benjamin Cates
 
PDF
Building Reactive applications with Akka
Knoldus Inc.
 
PDF
Zeppelin meetup 2016 madrid
Jongyoul Lee
 
PPTX
ASP.NET Core Demos
Erik Noren
 
PPTX
ASP.NET Core Demos Part 2
Erik Noren
 
PDF
Take a Look at Akka+Java (English version)
GlobalLogic Ukraine
 
PPTX
Dashboards as Code by Tim Hall, VP of Product | InfluxData
InfluxData
 
PPTX
ONAP on Vagrant
Victor Morales
 
Elixir in the Wild
Benjamin Cates
 
Building Reactive applications with Akka
Knoldus Inc.
 
Zeppelin meetup 2016 madrid
Jongyoul Lee
 
ASP.NET Core Demos
Erik Noren
 
ASP.NET Core Demos Part 2
Erik Noren
 
Take a Look at Akka+Java (English version)
GlobalLogic Ukraine
 
Dashboards as Code by Tim Hall, VP of Product | InfluxData
InfluxData
 
ONAP on Vagrant
Victor Morales
 

What's hot (20)

PDF
SignalR 101
John Patrick Oliveros
 
PDF
Introduction to keras
Haritha Thilakarathne
 
PPTX
What's new in ASP.NET vNext
Gunnar Peipman
 
PPTX
Deploying microservices on AWS
Michael Haberman
 
PPTX
Architecture Sustaining LINE Sticker services
LINE Corporation
 
PPTX
How to setup a development environment for ONAP
Victor Morales
 
PPTX
How to contribute to an open source project and don’t die during the Code Rev...
Victor Morales
 
PDF
Gradual migration to MicroProfile
Rudy De Busscher
 
PDF
MuleSoft London Community November 2019 - MuleSoft and CICD
Pace Integration
 
PDF
Serverless Architecture Patterns - Manoj Ganapathi - Serverless Summit
CodeOps Technologies LLP
 
PDF
Serverless Summit - Quiz
CodeOps Technologies LLP
 
PPTX
Logic appsforbeginners
Mandar Dharmadhikari
 
PDF
Infrastructure as Code
Leandro Rosa
 
PDF
Infrastructure as code
Aakash Singhal
 
PPTX
Validating latest changes with XCI
Victor Morales
 
PDF
Microservice Architecture
Engin Yoeyen
 
PDF
Threading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
Lauren Yew
 
PDF
Передача состояния с iPhone на Apple Watch
ru_Parallels
 
PPTX
XPDDS19: Secure Unikraft Applications with Solo5 - Haibo Xu, ARM
The Linux Foundation
 
PPT
Computer fundamental
ashishsharma1506
 
Introduction to keras
Haritha Thilakarathne
 
What's new in ASP.NET vNext
Gunnar Peipman
 
Deploying microservices on AWS
Michael Haberman
 
Architecture Sustaining LINE Sticker services
LINE Corporation
 
How to setup a development environment for ONAP
Victor Morales
 
How to contribute to an open source project and don’t die during the Code Rev...
Victor Morales
 
Gradual migration to MicroProfile
Rudy De Busscher
 
MuleSoft London Community November 2019 - MuleSoft and CICD
Pace Integration
 
Serverless Architecture Patterns - Manoj Ganapathi - Serverless Summit
CodeOps Technologies LLP
 
Serverless Summit - Quiz
CodeOps Technologies LLP
 
Logic appsforbeginners
Mandar Dharmadhikari
 
Infrastructure as Code
Leandro Rosa
 
Infrastructure as code
Aakash Singhal
 
Validating latest changes with XCI
Victor Morales
 
Microservice Architecture
Engin Yoeyen
 
Threading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
Lauren Yew
 
Передача состояния с iPhone на Apple Watch
ru_Parallels
 
XPDDS19: Secure Unikraft Applications with Solo5 - Haibo Xu, ARM
The Linux Foundation
 
Computer fundamental
ashishsharma1506
 
Ad

Similar to Erlang/Elixir and OTP (20)

ODP
Elixir otp-basics
Ruben Amortegui
 
PDF
Elixir – Peeking into Elixir's Processes, OTP and Supervisors
Benjamin Tan
 
PDF
Introduction to Erlang/(Elixir) at a Webilea Hands-On Session
André Graf
 
PDF
A sip of Elixir
Emanuele DelBono
 
PPTX
Repeating History...On Purpose...with Elixir
Barry Jones
 
PDF
Introduction to Elixir
Diacode
 
PDF
Elixir and OTP
Pedro Medeiros
 
PDF
Elixir
Robert Brown
 
PDF
Learning Elixir as a Rubyist
Alex Kira
 
ODP
Concurrent programming
Ruben Amortegui
 
PDF
Introducing Elixir and OTP at the Erlang BASH
devbash
 
PPTX
Elixir
Fuat Buğra AYDIN
 
PDF
外傷的Elixir
Sachirou Inoue
 
PDF
Intro to elixir and phoenix
Jared Smith
 
PDF
Concurrency, Robustness & Elixir SoCraTes 2015
steffenbauer
 
PPTX
Introduction to functional programming, with Elixir
kirandanduprolu
 
PDF
Elixir and Phoenix for Rubyists
Brooklyn Zelenka
 
PDF
Elixir and elm
Mix & Go
 
PPTX
Introduction to Phoenix Framework (Elixir) 2016-01-07
Svein Fidjestøl
 
PDF
BEAM in Action: Scrivere una web application con Elixir - Gabriele Santomaggi...
Codemotion
 
Elixir otp-basics
Ruben Amortegui
 
Elixir – Peeking into Elixir's Processes, OTP and Supervisors
Benjamin Tan
 
Introduction to Erlang/(Elixir) at a Webilea Hands-On Session
André Graf
 
A sip of Elixir
Emanuele DelBono
 
Repeating History...On Purpose...with Elixir
Barry Jones
 
Introduction to Elixir
Diacode
 
Elixir and OTP
Pedro Medeiros
 
Elixir
Robert Brown
 
Learning Elixir as a Rubyist
Alex Kira
 
Concurrent programming
Ruben Amortegui
 
Introducing Elixir and OTP at the Erlang BASH
devbash
 
外傷的Elixir
Sachirou Inoue
 
Intro to elixir and phoenix
Jared Smith
 
Concurrency, Robustness & Elixir SoCraTes 2015
steffenbauer
 
Introduction to functional programming, with Elixir
kirandanduprolu
 
Elixir and Phoenix for Rubyists
Brooklyn Zelenka
 
Elixir and elm
Mix & Go
 
Introduction to Phoenix Framework (Elixir) 2016-01-07
Svein Fidjestøl
 
BEAM in Action: Scrivere una web application con Elixir - Gabriele Santomaggi...
Codemotion
 
Ad

Recently uploaded (20)

PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PDF
Doc9.....................................
SofiaCollazos
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
PDF
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PPTX
The Future of AI & Machine Learning.pptx
pritsen4700
 
PPTX
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PDF
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
Doc9.....................................
SofiaCollazos
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
The Future of AI & Machine Learning.pptx
pritsen4700
 
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 

Erlang/Elixir and OTP

  • 1. Erlang/Elixir and OTP Gil Meir, CTO, Spectory
  • 2. Erlang • Erlang is a dynamically-typed, garbage-collected, concurrent, functional programming language that compiles to byte code and runs on a virtual machine • Created at Ericsson in 1986 and is completely open sourced (Apache v2) • Syntax is loosely based on Prolog
  • 3. Erlang (cont.) • Share-nothing message passing (a.k.a Actor Model) • Light weight processes (a.k.a Green Threads) • Immutable Data Structures • Type annotations • Per Process Garbage Collector (soft real-time) • Hot code loading • Location transparency • Runtime system monitoring and observation • Built-in NoSQL database with ACID transactions
  • 4. Open Telecom Platform • A set of design guidelines and libs for developing fault-tolerant, soft real-time, distributed systems • Battle tested for over 30 years in the Telecom industry and more recently at most of the leading Internet companies • Promotes a “let-it-crash” + “software watchdogs” approach for fault-tolerance, normalizes some aspects of Erlang
  • 5. Why Elixir? • Modern Syntax • Unicode Strings • Fix Accidental Complexity (dict/orddict/gb_tree) • Meta-Programming, Protocols, Pipeline Operator, .. • Advanced tooling and interactive development • Superb web framework (Phoenix)
  • 6. Some Fun with Elixir
  • 7. More Fun with Elixir
  • 9. OTP Concepts • Messages handled in order they are received to avoid message leak • Supervisor Trees – watchdogs for processes with multiple monitor and restart strategies • Well-defined sets of callbacks for processes that follow the same pattern (e.g GenServer implements start, init, handle_call, handle_cast, handle_info, code_change, …) • Applications – bundle modules, servers, supervisors and configs as a single logical unit (e.g. Logger, Db) • Release – A complete system of multiple applications bundled together under a version number with support for differential upgrades
  • 10. Runtime Observer • Connect to remote system • View running processes • View process mailboxes • Trace messages • View Applications • View Supervision Trees • View Performance Metrics • View Logs • Restart Processes • View System Information
  • 11. Phoenix Performance Language Framework Throughput (req/s) Go Gin 51,483 Elixir Phoenix 43,063 JavaScript (NodeJS) Express 9,966 Ruby Rails 3,275 • Benchmarks should never be taken too literally • Express Cluster and Rails5 make better use of multi-core CPUs and exhibit better throughput • YMMV
  • 12. Elixir @ Spectory Websites and Webapps Mobile Backends IoT Backends Scripts Load Testers Web Scrapers Chat Servers (obviously) Jump in, the water’s fine 