SlideShare a Scribd company logo
1 of 32
Download to read offline
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 2009Abhishek Mishra
 
Streaming Service on Flex and Rails
Streaming Service on Flex and RailsStreaming Service on Flex and Rails
Streaming Service on Flex and Railskevinj
 
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 #econfpsu16Tim 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 - ParisMarc Weistroff
 
Scale like a pro with Gearman
Scale like a pro with GearmanScale like a pro with Gearman
Scale like a pro with GearmanAmal Raghav
 
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 IntroductionTyler 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 FergieGameplan
 
Bluemix - Deploying a Java Web Application
Bluemix - Deploying a Java Web ApplicationBluemix - Deploying a Java Web Application
Bluemix - Deploying a Java Web ApplicationCraig 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
 
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-1Sangram Kesari Ray
 
Decapitating Selenium with JavaScript
Decapitating Selenium with JavaScriptDecapitating Selenium with JavaScript
Decapitating Selenium with JavaScriptAlan Parkinson
 
Hhvm and wordpress
Hhvm and wordpressHhvm and wordpress
Hhvm and wordpressMark Kelnar
 
Performance presentation
Performance presentationPerformance presentation
Performance presentationHashem Khalifa
 
An Ops Primer to Productionalizing Datameer
An Ops Primer to Productionalizing DatameerAn Ops Primer to Productionalizing Datameer
An Ops Primer to Productionalizing DatameerColin 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 WebPublitory
 
Real World Elixir Deployment
Real World Elixir DeploymentReal World Elixir Deployment
Real World Elixir DeploymentPete 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 Example360|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 heroIzzet 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 runtimesDev_Events
 
Embedded c c++ programming fundamentals master
Embedded c c++ programming fundamentals masterEmbedded c c++ programming fundamentals master
Embedded c c++ programming fundamentals masterHossam 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...eZ Systems
 
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
 
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
 
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 languagesRajendran
 
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 ChakraCoreChristian 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 SelectionDhananjay 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 ElixirWeverton 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
 
Elixir
ElixirElixir
Elixir
 
Beam me up, Scotty
Beam me up, ScottyBeam me up, Scotty
Beam me up, Scotty
 
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

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 

Recently uploaded (20)

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 

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