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

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
 

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

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
 

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

Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 

Recently uploaded (20)

WSO2Con2024 - Facilitating Broadband Switching Services for UK Telecoms Provi...
WSO2Con2024 - Facilitating Broadband Switching Services for UK Telecoms Provi...WSO2Con2024 - Facilitating Broadband Switching Services for UK Telecoms Provi...
WSO2Con2024 - Facilitating Broadband Switching Services for UK Telecoms Provi...
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
 
WSO2Con2024 - Low-Code Integration Tooling
WSO2Con2024 - Low-Code Integration ToolingWSO2Con2024 - Low-Code Integration Tooling
WSO2Con2024 - Low-Code Integration Tooling
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
WSO2CON 2024 - Not Just Microservices: Rightsize Your Services!
WSO2CON 2024 - Not Just Microservices: Rightsize Your Services!WSO2CON 2024 - Not Just Microservices: Rightsize Your Services!
WSO2CON 2024 - Not Just Microservices: Rightsize Your Services!
 
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and ApplicationsWSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
 
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
WSO2Con2024 - Organization Management: The Revolution in B2B CIAM
WSO2Con2024 - Organization Management: The Revolution in B2B CIAMWSO2Con2024 - Organization Management: The Revolution in B2B CIAM
WSO2Con2024 - Organization Management: The Revolution in B2B CIAM
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
WSO2CON 2024 - Lessons from the Field: Legacy Platforms – It's Time to Let Go...
WSO2CON 2024 - Lessons from the Field: Legacy Platforms – It's Time to Let Go...WSO2CON 2024 - Lessons from the Field: Legacy Platforms – It's Time to Let Go...
WSO2CON 2024 - Lessons from the Field: Legacy Platforms – It's Time to Let Go...
 

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