Building resilient systems for high traffic with Erlang & Elixir (ENG)

Máté Marjai

Date: November 29, 2017

Location: University of Applied Social Sciences. Kalvarijų str. 137E, LT-08221 Vilnius, Lithuania

About the workshop

Abstract
Erlang and Elixir are tried and known ecosystems that can handle high load with ease, and without the need to run them on big and costly servers. The workshop aims to share some ideas and simple tips around how to get started with BEAM technologies. Then taking it further, we are going to build an application that can handle tens of thousands of requests per second on a budget, without the need of load balancers and higher spec machines.

Agenda
Erlang & Elixir Basics (30 mins)
➔ Introduction to basic types
➔ Erlang / Elixir data structures
➔ Structuring code – modules & headers
OTP basics (45 mins)
➔ OTP behaviours
➔ What is a gen_server?
➔ Concurrency in a nutshell
➔ What are Applications?
➔ Supervision trees
First practical example (2 hours)
➔ Let’s write a simple air traffic simulator
➔ Use what we learnt about (gen_server, gen_fsm, etc.)
➔ Can it handle 1 plane, 10 planes or 1000 planes?
Handling load (1 hour)
➔ Revise our supervision tree, see where we could improve
➔ Test again with 1000 planes, 100000 planes?
Web servers & deployment (2 hours)
➔ Let’s package all this up into a BEAM app node
➔ Run multiple nodes and connecting them
➔ Introduce a web server in front of our app
➔ Get it deployed & test again

Course Objectives
During this workshop, you will get introduced to the BEAM virtual machine (the real power behind Erlang / Elixir), and how you can use it. We also going to build a real life concurrent application that can handle any kind of traffic and computations at ease. The main goal is to explore these technologies and go home with new ideas and experiences.

Target Audience
Anyone who has done an application before and would like to learn about the BEAM VM. Coding skills will be required, but not necessarily with Erlang / Elixir. Familiarity with functional programming is a slight advantage, but not required. The course is suitable for both beginners and advanced programmes.

Prerequisites
Laptop / computer with internet connection.

Important note from Mate Marjai:
In order to prepare for the workshop and to avoid any delay with downloads – please follow these instructions (https://elixir-lang.org/install.html) to install Elixir (https://elixir-lang.org/) on your PC / Laptop. There are several options available (including installers and native packages) to install, pick what’s best suited for you. We’ll start with a few checks in the beginning and will troubleshoot any issues in the very beginning of the workshop.