Training:

OTP for Erlang Programmers

07-09 Sep 2020
09:00 - 17:00
Robert Virding

OTP is the middleware, libraries and tools used to design and architect Erlang systems. The Basic OTP course covers the main principles, including process design patterns, supervisors, applications and release handling. It will give the participants the ability to develop and architect Erlang systems. Completion of the Basic or Compete Erlang courses are necessary to enroll in this intermediate course. Basic OTP can be complemented with the one day addons focusing on architecting Erlang systems and Erlang in operations. 

 

EXPERTISE

  • Intermediate 

 

COURSE DURATION

  • 5 days 

 

TARGET AUDIENCE 

  • Software developers & engineers

 

PREREQUISITES 

  • Intermediate user of Erlang, preferably followed by three months of practical experience.
  • Ideally you already know about about Erlang Term Storage, concurrent Erlang, error handling and maps and records

WHAT WILL THE ATTENDEE LEARN

  • Understand the design principles of OTP 
  • Understand OTP behaviours 
  • Understand OTP system configuration 
  • Awareness of the available OTP applications 

 

COVERS THE FOLLOWING TOPICS:

  • Introduction
  • Behaviours
  • Generic Servers
  • State Machines
  • Supervisors
  • Event Handlers
  • Applications
  • System Architecture Support Libraries
  • System Principles

 

WHY YOU SHOULD ATTEND THIS COURSE

  • Helps you get over the hurdle of efficiently learning how to build systems with OTP
  • Allows you to avoid the pitfalls and borderline cases handled in its libraries
  • A cost effective approach to increasing productivity whilst reducing mistakes
  • Allows you to design and develop systems using the globally recognised Erlang approach

OTP for Elixir Programmers

07-09 Sep 2020
09:00 - 17:00
Aleksander Lisiecki

So you've built and deployed a Phoenix application backed by Ecto and Postgres, and come to the conclusion that you love it. If you are looking at progressing to the next level, this hands-on training is for you. It will help you understand what happens behind the scenes when building applications using OTP behaviours. Learn about the battle-tested abstractions needed to build back-end, fault-tolerant systems that will run for years and scale to billions of users. We'll have plenty of time to work on labs along the way as you hone your skills and put the theory into practice. About half of the class is either lab work or coding side-by-side with your instructor.

EXPERTISE

  • Intermediate

 

COURSE DURATION

  • 5 days

 

TARGET AUDIENCE

  • Software Developers, Engineers and Architects

 

PREREQUISITES

  • Basic knowledge of sequential and concurrent Elixir

 

OBJECTIVES

  • Have a deeper understanding of how to architect back-end systems and micro-services that you can access and use from Phoenix.
  • Learn why we need behaviours such as Generic Servers, Generic State Machines and others, when to use them, and how to integrate them into supervision trees.
  • Get the knowledge about how to deal with load issues applying some techniques like pooling, circuit breakers or producer/consumer solutions.
  • Get a deeper understanding about how an Application works and how to create them and work together with others.

 

COVERS THE FOLLOWING TOPICS

  • ETS (a Redis in your beam)
  • Behaviours
  • Supervision
  • Generic Servers
  • Generic State Machines
  • GenStage
  • Applications (and the use of Observer)
  • System Principles & Release Handling
  • Release Handling

 

WHY YOU SHOULD ATTEND THIS COURSE

  • Helps you get over the hurdle of learning how to build systems with OTP
  • Allows you to avoid the pitfalls and borderline cases handled in its libraries
  • A cost effective approach to increasing productivity whilst reducing mistakes
  • Allows you to design and develop systems using the globally recognised Erlang approach

Clueful Elixir with Kubernetes

09 Sep 2020
09:00 - 17:00
Bryan Hunt

Deploying, running, operating and debugging Elixir and Erlang applications on Kubernetes doesn’t have to be a big deal once you know a couple of basic tricks and patterns.

In this one-day tutorial, you will learn to build, deploy, scale and cluster Elixir applications on Kubernetes.

 

OBJECTIVES

When you've completed this tutorial, you will:

  • Have a deeper understanding of Kubernetes
  • Know how to operate an Elixir cluster deployed on Kubernetes
  • Know how to set up monitoring Know how to debug issues
  • Know how to template configuration for deployment in multiple environments
  • Learn the techniques for keeping secrets secret

Most of the class will be live coding together. You'll have plenty of time to work on labs along the way as you hone your skills. About half of the class is either lab work or coding side-by-side with your instructor.

 

PREREQUISITES

Attendees should have a basic understanding of Elixir applications, releases, distributed Erlang, and Docker.

Please have docker for Mac (edge) installed on their machine (Kubernetes supported out of the box)(preferable), a working Kubernetes instance, or use a provided GKE Google Kubernetes Engine instance.

 

TARGET AUDIENCE

Elixir/Erlang developers with basic knowledge of Docker wishing to expand their operational ability of running BEAM applications on Kubernetes.

COURSE OUTLINE

  • Best practice for building docker images of Elixir applications
  • Using distillery for building releases
  • Using libcluster for automatically forming Elixir clusters
  • Integrating Prometheus/Grafana monitoring
  • Debugging deployment issues
  • The characteristics of the different Kubernetes controllers
  • How to leverage Kube DNS
  • Autoscaling
  • Working with dependencies and private repositories
  • Startup failure and health checks
  • Exposing Kubernetes applications to the internet (GKE)

BEAM VM under the Hood

09 Sep 2020
09:00 - 17:00
Dmytro Lytovchenko

Everything you wanted to know about the BEAM but were too afraid to ask.

Join us for a guide for operations and development teams. Through examples and hands-on exercises, we will showcase how to manage the BEAM VM in operational environments, optimising for memory utilisation and performance when using Erlang or Elixir.

 

OBJECTIVES

Understand how the BEAM works under the hood Fine-tune it and optimise its settings for throughput and memory use.

 

PREREQUISITES

Experience in developing and supporting languages running on the BEAM including Erlang and Elixir.

 

TARGET AUDIENCE

The course is aimed at experienced developers and devops engineers, helping them pre-empt and address behaviours which arise as the result of VM specific settings, be it disruption of soft real time properties as a result of garbage collection or bottlenecks in the scheduler.

COURSE OUTLINE

Introduction to the BEAM

The highlights of the BEAM Virtual Machine, highlighting the features which make it stand out in comparison to other VMs.

Processes under the hood

Explore at processes, how memory is allocated, managed and garbage collected. We look at some of the bottlenecks in the BEAM caused by concurrency, describe how they manifest themselves, and how to avoid them.

The process scheduler

Understand how the schedulers work, how it scales on multi-core architectures and what its limitations are. We cover how the run queues can be monitored and manipulated, and how process priorities can backfire.

Memory management

In this section, we look at different memory types including system, atom, binary, code and ets tables. We will cover how (and why) you should monitor memory, and how issues can arise. We will also cover how the garbage collector works, focusing if, and when optimizations are necessary.

Tweaking and fine-tuning

How can the BEAM VM be tweaked and what possible areas for fine-tuning are available to you? We'll look at some of the most obscure flags which can come in hand, allowing for specific optimisations on a VM level, be it to increase I/O or throughput in virtualised environments.

Unit, System and Property Based Testing - Break your Erlang system before your customers do!

09 Sep 2020
09:00 - 17:00
Stavros Aronis

This course introduces best practices around testing, looking at unit and system tests, introducing mocking frameworks and property based testing.

 

OBJECTIVES

After this tutorial, you will

  • Have an understanding of different testing approaches and techniques, and when to use them
  • Know how to use the most commonly used frameworks and tools
  • Understand the principles behind property based testing

The class will be a mix of presentations, live coding and exercises.

You'll have plenty of time to work on labs along the way as you hone your skills, getting you started on your journey in testing systems which never fail.

 

PREREQUISITES

Attendees should have a basic understanding of Erlang and Elixir program structures, OTP applications and releases. They should be able to write basic Erlang or Elixir programs.

 

TARGET AUDIENCE

Elixir/Erlang developers wishing to fast track their understanding on how to test programs running on the BEAM using the BEAM.

COURSE OUTLINE

Introduction - An introduction to different testing techniques. Unit Testing, System Testing, Continuous Integration, Capacity Planning and other testing Techniques

Unit Testing - Introduces Unit testing, code coverage tools, focusing on eunit.

Mocking Frameworks - We explain why they are needed, and introduce meck.

Property-Based Testing - Introduction to PropEr, and property-based testing in general.

Common Test - An introduction to how the system testing and verification with Common Test works.

Load - Looks at load testing, back pressure and load regulation. How should systems be load tested, what should you be looking out for, and what do you need to to to stop them from breaking.