SlideShare a Scribd company logo
The Dream BEAM
Jeffrey Chan
Alembic
Twitter: @jgmchan
Github: https://github.com/jgmchan
Email: jgmchan@gmail.com
About Me
✤ SRE/DevOps Engineer for ~7 years
✤ Elixir Developer since 2018 at Alembic
Purpose
✤ Introduction to Elixir/
Beam
✤ Share my experience
with running Elixir in
production
Elixir
✤ https://elixir-lang.org
✤ Created by Jose Valim in 2011
✤ Ruby-like syntax
✤ Functional Language built on top of Erlang/BEAM
Erlang/BEAM
✤ Created in 1986 for Ericsson
✤ Joe Armstrong, Robert Virding and Mike Williams
✤ Powers majority of telephone networks
✤ Designed to be very reliable and fault-tolerant
✤ Functional language with a funny syntax
Elixir/Erlang/BEAM
Elixir
Erlang
BEAM
=>
Clojure
Java
JVM
Great, another new language to
manage…
My Ideal Stack (the Lazy Ops)
✤ Something I don’t have to care about (performance,
etc)
✤ Deploy it
✤ Done
My Ideal Stack
✤ But if something does go wrong
✤ System goes to a degraded but still up state
✤ Good observability (metrics, logs, real-time
analysis)
My Ideal Stack
✤ Allow me to introduce…
BEAM
If Java is ‘write once, run anywhere’, then Erlang is ‘write
once, run forever’.” 

- Joe Armstrong
BEAM
✤ “Erlang Virtual Machine”
✤ Bogdan/Björn’s Erlang Abstract Machine
BEAM - Features
✤ Can scale horizontally very easily to many instances
✤ Multiple instances and cluster together automatically
to form a mesh
✤ Is extremely fault tolerant (nine ‘9’s *)
✤ “Releases” are built in concepts
✤ Hot Deployable
BEAM - Case Studies
✤ WhatsApp - Erlang - 50 Engineers to manage 900
million users in 2015
✤ Bleacher Report - Elixir - Reduced number of servers
from 150 to 5
✤ Discord - Elixir - Handles 5 million concurrent users
BEAM -Why I like it
✤ It reminds me a lot of how OS’s is designed and how
we build good reliable platforms
✤ Gives me the same feeling as working with Linux
BEAM - How?
✤ Everything is a process
✤ BEAM can support millions of processes and spawn
processes very quickly and cheaply
✤ Processes can only communicate through messages
(even across networks)
✤ All* Data/Variables are immutable - local state
BEAM - How?
✤ Processes are supervised and will be restarted (Monit,
Systemd)
✤ “Let it crash” - Erlang coding philosophy
✤ Humans make mistakes
✤ Let it crash vs Defensive coding
BEAM and Kubernetes
✤ Similar functionality
✤ Not mutually exclusive or even related
✤ Can be easily dockerized and deployed with
Kubernetes
BEAM vs Kubernetes
BEAM Kubernetes
Monitor Tasks ✅ ✅
Distributed across multiple nodes ✅ ✅
Service Discovery ✅ ✅
Hot Upgrades ✅ ❌
Language Agnostic ❌ ✅
Platform Components (networks) ❌ ✅
My deployment experience
✤ Deployed as docker container or tarball on different
platforms (AWS/GCP/Azure/Kubernetes)
✤ Never had to restart “Just Because”™
✤ Have never needed to deal with memory issues
✤ All issues in production were due to logic errors
✤ Literally deploy and forget
Observability when things fail
✤ BEAM has a ton of metrics built in
✤ Built in observer to inspect the live state of production
✤ Support for common tools like Prometheus/Datadog
is available
✤ Logs are just logs
Live Demo!
Demo
Hot Deployments
✤ Can upgrade/downgrade code live in production
with no downtime to the service
Hot Deployments Demo
Hot Deployments
Hot Deployments
✤ Most applications we run do not need this
✤ Nothing wrong with ye-olde fashioned deployments
✤ Very high technical and cognitive overheads to get
right
Drawbacks
✤ Not as supported as other languages by common tools
and services
✤ Functional concepts are more foreign to developers/
Ops than other languages
✤ Erlang documentation is a tyre fire
✤ Can be harder to find engineers with knowledge
Conclusion
✤ Elixir/BEAM is amazing to manage from the Ops
perspective
✤ Deploy and forget
✤ When that fails, good observability
✤ Not as supported as other languages and harder to
find engineers
References
✤ Demo Repo - https://github.com/jgmchan/elixir-hot-deploy-demo
✤ Elixir Website - https://elixir-lang.org/
✤ Erlang Website - https://www.erlang.org/
✤ Elixir vs Ruby - https://foxbox.com/blog/elixir-vs-ruby/
✤ Why WhatsApp only needs 50 Engineers for its 900M users - https://www.wired.com/
2015/09/whatsapp-serves-900-million-users-50-engineers/
✤ Benefits of Elixir: How Elixir helped Bleacher Report handle 8x more traffic - https://
www.techworld.com/apps-wearables/how-elixir-helped-bleacher-report-handle-8x-more-
traffic-3653957/=
✤ How Discord Scaled Elixir to 5,000,000 Concurrent Users - https://blog.discordapp.com/
scaling-elixir-f9b8e1e7c29b
Questions?
Thanks!

More Related Content

What's hot

The Beginning - Jan 20 2009
The Beginning - Jan 20 2009The Beginning - Jan 20 2009
The Beginning - Jan 20 2009
Abhishek Mishra
 
Streaming Service on Flex and Rails
Streaming Service on Flex and RailsStreaming Service on Flex and Rails
Streaming Service on Flex and Rails
kevinj
 
Making development environments not suck | #econfpsu #econfpsu16
Making development environments not suck | #econfpsu #econfpsu16Making development environments not suck | #econfpsu #econfpsu16
Making development environments not suck | #econfpsu #econfpsu16
Tim Bracken
 
Nice performance using Sf2 cache wrapping Sf1 application - Paris
Nice performance using Sf2 cache wrapping Sf1 application - ParisNice performance using Sf2 cache wrapping Sf1 application - Paris
Nice performance using Sf2 cache wrapping Sf1 application - Paris
Marc Weistroff
 
Scale like a pro with Gearman
Scale like a pro with GearmanScale like a pro with Gearman
Scale like a pro with Gearman
Amal Raghav
 
Java selenium web driver
Java selenium web driverJava selenium web driver
Java selenium web driver
KadarkaraiSelvam
 
Where are the new technologies coming from?
Where are the new technologies coming from?Where are the new technologies coming from?
Where are the new technologies coming from?
Dima Malenko
 
Phonegap - An Introduction
Phonegap - An IntroductionPhonegap - An Introduction
Phonegap - An Introduction
Tyler Johnston
 
Gameplan's Panic-Inspired Stats Dashboard called Fergie
Gameplan's Panic-Inspired Stats Dashboard called FergieGameplan's Panic-Inspired Stats Dashboard called Fergie
Gameplan's Panic-Inspired Stats Dashboard called Fergie
Gameplan
 
Bluemix - Deploying a Java Web Application
Bluemix - Deploying a Java Web ApplicationBluemix - Deploying a Java Web Application
Bluemix - Deploying a Java Web Application
Craig Trim
 
Gearman, Supervisor and PHP - Job Management with Sanity!
Gearman, Supervisor and PHP - Job Management with Sanity!Gearman, Supervisor and PHP - Job Management with Sanity!
Gearman, Supervisor and PHP - Job Management with Sanity!
Abu Ashraf Masnun
 
iPhone & Java Web Services
iPhone & Java Web ServicesiPhone & Java Web Services
iPhone & Java Web Services
Matthew McCullough
 
Assembly Language Tutorials for Windows - 04 Data Transfers Part-1
Assembly Language Tutorials for Windows - 04 Data Transfers Part-1Assembly Language Tutorials for Windows - 04 Data Transfers Part-1
Assembly Language Tutorials for Windows - 04 Data Transfers Part-1
Sangram Kesari Ray
 
Introduction to jOOQ
Introduction to jOOQIntroduction to jOOQ
Introduction to jOOQ
Kostadin Golev
 
Web design basics_03
Web design basics_03Web design basics_03
Web design basics_03
sofiagmontreal
 
Decapitating Selenium with JavaScript
Decapitating Selenium with JavaScriptDecapitating Selenium with JavaScript
Decapitating Selenium with JavaScript
Alan Parkinson
 
Hhvm and wordpress
Hhvm and wordpressHhvm and wordpress
Hhvm and wordpress
Mark Kelnar
 
Performance presentation
Performance presentationPerformance presentation
Performance presentation
Hashem Khalifa
 
An Ops Primer to Productionalizing Datameer
An Ops Primer to Productionalizing DatameerAn Ops Primer to Productionalizing Datameer
An Ops Primer to Productionalizing Datameer
Colin Brown
 

What's hot (19)

The Beginning - Jan 20 2009
The Beginning - Jan 20 2009The Beginning - Jan 20 2009
The Beginning - Jan 20 2009
 
Streaming Service on Flex and Rails
Streaming Service on Flex and RailsStreaming Service on Flex and Rails
Streaming Service on Flex and Rails
 
Making development environments not suck | #econfpsu #econfpsu16
Making development environments not suck | #econfpsu #econfpsu16Making development environments not suck | #econfpsu #econfpsu16
Making development environments not suck | #econfpsu #econfpsu16
 
Nice performance using Sf2 cache wrapping Sf1 application - Paris
Nice performance using Sf2 cache wrapping Sf1 application - ParisNice performance using Sf2 cache wrapping Sf1 application - Paris
Nice performance using Sf2 cache wrapping Sf1 application - Paris
 
Scale like a pro with Gearman
Scale like a pro with GearmanScale like a pro with Gearman
Scale like a pro with Gearman
 
Java selenium web driver
Java selenium web driverJava selenium web driver
Java selenium web driver
 
Where are the new technologies coming from?
Where are the new technologies coming from?Where are the new technologies coming from?
Where are the new technologies coming from?
 
Phonegap - An Introduction
Phonegap - An IntroductionPhonegap - An Introduction
Phonegap - An Introduction
 
Gameplan's Panic-Inspired Stats Dashboard called Fergie
Gameplan's Panic-Inspired Stats Dashboard called FergieGameplan's Panic-Inspired Stats Dashboard called Fergie
Gameplan's Panic-Inspired Stats Dashboard called Fergie
 
Bluemix - Deploying a Java Web Application
Bluemix - Deploying a Java Web ApplicationBluemix - Deploying a Java Web Application
Bluemix - Deploying a Java Web Application
 
Gearman, Supervisor and PHP - Job Management with Sanity!
Gearman, Supervisor and PHP - Job Management with Sanity!Gearman, Supervisor and PHP - Job Management with Sanity!
Gearman, Supervisor and PHP - Job Management with Sanity!
 
iPhone & Java Web Services
iPhone & Java Web ServicesiPhone & Java Web Services
iPhone & Java Web Services
 
Assembly Language Tutorials for Windows - 04 Data Transfers Part-1
Assembly Language Tutorials for Windows - 04 Data Transfers Part-1Assembly Language Tutorials for Windows - 04 Data Transfers Part-1
Assembly Language Tutorials for Windows - 04 Data Transfers Part-1
 
Introduction to jOOQ
Introduction to jOOQIntroduction to jOOQ
Introduction to jOOQ
 
Web design basics_03
Web design basics_03Web design basics_03
Web design basics_03
 
Decapitating Selenium with JavaScript
Decapitating Selenium with JavaScriptDecapitating Selenium with JavaScript
Decapitating Selenium with JavaScript
 
Hhvm and wordpress
Hhvm and wordpressHhvm and wordpress
Hhvm and wordpress
 
Performance presentation
Performance presentationPerformance presentation
Performance presentation
 
An Ops Primer to Productionalizing Datameer
An Ops Primer to Productionalizing DatameerAn Ops Primer to Productionalizing Datameer
An Ops Primer to Productionalizing Datameer
 

Similar to The dream BEAM - A former DevOps perspective

Elm & Elixir: Functional Programming and Web
Elm & Elixir: Functional Programming and WebElm & Elixir: Functional Programming and Web
Elm & Elixir: Functional Programming and Web
Publitory
 
Beam me up, Scotty
Beam me up, ScottyBeam me up, Scotty
Beam me up, Scotty
Gianluca Padovani
 
Elixir
ElixirElixir
Real World Elixir Deployment
Real World Elixir DeploymentReal World Elixir Deployment
Real World Elixir Deployment
Pete Gamache
 
Jun Heider - Flex Application Profiling By Example
Jun Heider - Flex Application Profiling By ExampleJun Heider - Flex Application Profiling By Example
Jun Heider - Flex Application Profiling By Example
360|Conferences
 
“Bootify your app - from zero to hero
“Bootify  your app - from zero to hero“Bootify  your app - from zero to hero
“Bootify your app - from zero to hero
Izzet Mustafaiev
 
Eclipse OMR: a modern, open-source toolkit for building language runtimes
Eclipse OMR: a modern, open-source toolkit for building language runtimesEclipse OMR: a modern, open-source toolkit for building language runtimes
Eclipse OMR: a modern, open-source toolkit for building language runtimes
Dev_Events
 
Embedded c c++ programming fundamentals master
Embedded c c++ programming fundamentals masterEmbedded c c++ programming fundamentals master
Embedded c c++ programming fundamentals master
Hossam Hassan
 
Beam me up, scotty (PUG Roma)
Beam me up, scotty (PUG Roma)Beam me up, scotty (PUG Roma)
Beam me up, scotty (PUG Roma)
Gianluca Padovani
 
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
NCCOMMS
 
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...
Sébastien Morel
 
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...
eZ Systems
 
Engage 2022: The Superpower of Integrating External APIs for Notes and Domino...
Engage 2022: The Superpower of Integrating External APIs for Notes and Domino...Engage 2022: The Superpower of Integrating External APIs for Notes and Domino...
Engage 2022: The Superpower of Integrating External APIs for Notes and Domino...
Serdar Basegmez
 
Fastest Servlets in the West
Fastest Servlets in the WestFastest Servlets in the West
Fastest Servlets in the West
Stuart (Pid) Williams
 
EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!
melbats
 
computer languages
computer languagescomputer languages
computer languages
Rajendran
 
Making ES6 available to all with ChakraCore
Making ES6 available to all with ChakraCoreMaking ES6 available to all with ChakraCore
Making ES6 available to all with ChakraCore
Christian Heilmann
 
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?CC-Castle; The best Real-Time/Embedded/HighTech language EVER?
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?
Albert Mietus
 
Programming Language Selection
Programming Language SelectionProgramming Language Selection
Programming Language Selection
Dhananjay Nene
 
21o. RubyFloripa - Maintaining legacy Rails app and introducing Elixir
21o. RubyFloripa - Maintaining legacy Rails app and introducing Elixir21o. RubyFloripa - Maintaining legacy Rails app and introducing Elixir
21o. RubyFloripa - Maintaining legacy Rails app and introducing Elixir
Weverton Timoteo
 

Similar to The dream BEAM - A former DevOps perspective (20)

Elm & Elixir: Functional Programming and Web
Elm & Elixir: Functional Programming and WebElm & Elixir: Functional Programming and Web
Elm & Elixir: Functional Programming and Web
 
Beam me up, Scotty
Beam me up, ScottyBeam me up, Scotty
Beam me up, Scotty
 
Elixir
ElixirElixir
Elixir
 
Real World Elixir Deployment
Real World Elixir DeploymentReal World Elixir Deployment
Real World Elixir Deployment
 
Jun Heider - Flex Application Profiling By Example
Jun Heider - Flex Application Profiling By ExampleJun Heider - Flex Application Profiling By Example
Jun Heider - Flex Application Profiling By Example
 
“Bootify your app - from zero to hero
“Bootify  your app - from zero to hero“Bootify  your app - from zero to hero
“Bootify your app - from zero to hero
 
Eclipse OMR: a modern, open-source toolkit for building language runtimes
Eclipse OMR: a modern, open-source toolkit for building language runtimesEclipse OMR: a modern, open-source toolkit for building language runtimes
Eclipse OMR: a modern, open-source toolkit for building language runtimes
 
Embedded c c++ programming fundamentals master
Embedded c c++ programming fundamentals masterEmbedded c c++ programming fundamentals master
Embedded c c++ programming fundamentals master
 
Beam me up, scotty (PUG Roma)
Beam me up, scotty (PUG Roma)Beam me up, scotty (PUG Roma)
Beam me up, scotty (PUG Roma)
 
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
 
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...
 
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...
eZ Platform Cloud and eZ Launchpad: Don’t Host, Don’t Deploy, Don’t Install—J...
 
Engage 2022: The Superpower of Integrating External APIs for Notes and Domino...
Engage 2022: The Superpower of Integrating External APIs for Notes and Domino...Engage 2022: The Superpower of Integrating External APIs for Notes and Domino...
Engage 2022: The Superpower of Integrating External APIs for Notes and Domino...
 
Fastest Servlets in the West
Fastest Servlets in the WestFastest Servlets in the West
Fastest Servlets in the West
 
EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!EclipseCon Eu 2015 - Breathe life into your Designer!
EclipseCon Eu 2015 - Breathe life into your Designer!
 
computer languages
computer languagescomputer languages
computer languages
 
Making ES6 available to all with ChakraCore
Making ES6 available to all with ChakraCoreMaking ES6 available to all with ChakraCore
Making ES6 available to all with ChakraCore
 
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?CC-Castle; The best Real-Time/Embedded/HighTech language EVER?
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?
 
Programming Language Selection
Programming Language SelectionProgramming Language Selection
Programming Language Selection
 
21o. RubyFloripa - Maintaining legacy Rails app and introducing Elixir
21o. RubyFloripa - Maintaining legacy Rails app and introducing Elixir21o. RubyFloripa - Maintaining legacy Rails app and introducing Elixir
21o. RubyFloripa - Maintaining legacy Rails app and introducing Elixir
 

Recently uploaded

LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
lorraineandreiamcidl
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
kalichargn70th171
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Gerardo Pardo-Castellote
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Envertis Software Solutions
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024
Hironori Washizaki
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 

Recently uploaded (20)

LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 

The dream BEAM - A former DevOps perspective

  • 1. The Dream BEAM Jeffrey Chan Alembic Twitter: @jgmchan Github: https://github.com/jgmchan Email: jgmchan@gmail.com
  • 2. About Me ✤ SRE/DevOps Engineer for ~7 years ✤ Elixir Developer since 2018 at Alembic
  • 3. Purpose ✤ Introduction to Elixir/ Beam ✤ Share my experience with running Elixir in production
  • 4. Elixir ✤ https://elixir-lang.org ✤ Created by Jose Valim in 2011 ✤ Ruby-like syntax ✤ Functional Language built on top of Erlang/BEAM
  • 5. Erlang/BEAM ✤ Created in 1986 for Ericsson ✤ Joe Armstrong, Robert Virding and Mike Williams ✤ Powers majority of telephone networks ✤ Designed to be very reliable and fault-tolerant ✤ Functional language with a funny syntax
  • 7. Great, another new language to manage…
  • 8. My Ideal Stack (the Lazy Ops) ✤ Something I don’t have to care about (performance, etc) ✤ Deploy it ✤ Done
  • 9. My Ideal Stack ✤ But if something does go wrong ✤ System goes to a degraded but still up state ✤ Good observability (metrics, logs, real-time analysis)
  • 10. My Ideal Stack ✤ Allow me to introduce…
  • 11. BEAM If Java is ‘write once, run anywhere’, then Erlang is ‘write once, run forever’.” 
 - Joe Armstrong
  • 12. BEAM ✤ “Erlang Virtual Machine” ✤ Bogdan/Björn’s Erlang Abstract Machine
  • 13. BEAM - Features ✤ Can scale horizontally very easily to many instances ✤ Multiple instances and cluster together automatically to form a mesh ✤ Is extremely fault tolerant (nine ‘9’s *) ✤ “Releases” are built in concepts ✤ Hot Deployable
  • 14. BEAM - Case Studies ✤ WhatsApp - Erlang - 50 Engineers to manage 900 million users in 2015 ✤ Bleacher Report - Elixir - Reduced number of servers from 150 to 5 ✤ Discord - Elixir - Handles 5 million concurrent users
  • 15. BEAM -Why I like it ✤ It reminds me a lot of how OS’s is designed and how we build good reliable platforms ✤ Gives me the same feeling as working with Linux
  • 16. BEAM - How? ✤ Everything is a process ✤ BEAM can support millions of processes and spawn processes very quickly and cheaply ✤ Processes can only communicate through messages (even across networks) ✤ All* Data/Variables are immutable - local state
  • 17. BEAM - How? ✤ Processes are supervised and will be restarted (Monit, Systemd) ✤ “Let it crash” - Erlang coding philosophy ✤ Humans make mistakes ✤ Let it crash vs Defensive coding
  • 18. BEAM and Kubernetes ✤ Similar functionality ✤ Not mutually exclusive or even related ✤ Can be easily dockerized and deployed with Kubernetes
  • 19. BEAM vs Kubernetes BEAM Kubernetes Monitor Tasks ✅ ✅ Distributed across multiple nodes ✅ ✅ Service Discovery ✅ ✅ Hot Upgrades ✅ ❌ Language Agnostic ❌ ✅ Platform Components (networks) ❌ ✅
  • 20. My deployment experience ✤ Deployed as docker container or tarball on different platforms (AWS/GCP/Azure/Kubernetes) ✤ Never had to restart “Just Because”™ ✤ Have never needed to deal with memory issues ✤ All issues in production were due to logic errors ✤ Literally deploy and forget
  • 21. Observability when things fail ✤ BEAM has a ton of metrics built in ✤ Built in observer to inspect the live state of production ✤ Support for common tools like Prometheus/Datadog is available ✤ Logs are just logs
  • 23. Demo
  • 24. Hot Deployments ✤ Can upgrade/downgrade code live in production with no downtime to the service
  • 27. Hot Deployments ✤ Most applications we run do not need this ✤ Nothing wrong with ye-olde fashioned deployments ✤ Very high technical and cognitive overheads to get right
  • 28. Drawbacks ✤ Not as supported as other languages by common tools and services ✤ Functional concepts are more foreign to developers/ Ops than other languages ✤ Erlang documentation is a tyre fire ✤ Can be harder to find engineers with knowledge
  • 29. Conclusion ✤ Elixir/BEAM is amazing to manage from the Ops perspective ✤ Deploy and forget ✤ When that fails, good observability ✤ Not as supported as other languages and harder to find engineers
  • 30. References ✤ Demo Repo - https://github.com/jgmchan/elixir-hot-deploy-demo ✤ Elixir Website - https://elixir-lang.org/ ✤ Erlang Website - https://www.erlang.org/ ✤ Elixir vs Ruby - https://foxbox.com/blog/elixir-vs-ruby/ ✤ Why WhatsApp only needs 50 Engineers for its 900M users - https://www.wired.com/ 2015/09/whatsapp-serves-900-million-users-50-engineers/ ✤ Benefits of Elixir: How Elixir helped Bleacher Report handle 8x more traffic - https:// www.techworld.com/apps-wearables/how-elixir-helped-bleacher-report-handle-8x-more- traffic-3653957/= ✤ How Discord Scaled Elixir to 5,000,000 Concurrent Users - https://blog.discordapp.com/ scaling-elixir-f9b8e1e7c29b