Erlang Open Telecom Platform

Target Audience: Support and Test Engineers, Software Developers,

Prerequisites:

  • Erlang By Example (or similar) for software developers.
  • Erlang for Test and Support (or similar) with six to twelve months full time Erlang experience for others.

Objectives:

  • Understand the design principles of OTP.
  • Understand OTP behaviours.
  • Understand OTP System Configuration.
  • Understand the basics of Mnesia.
  • Awareness of the available OTP applications.

Duration: Five days

The Open Telecom Platform course covers advanced Erlang features such as design patterns, applications and libraries. It’s objective is to give the participants the ability to develop and test systems using OTP. It focuses on implementing and using the OTP design patterns, including generic servers, finite state machines and event handlers. It describes how applications are configured and included in larger systems, presenting some of the applications included in the OTP release, the System Architecture Support Library being one of them. Mnesia, the distributed real time database is covered in detail, including Mnemosyne, traceability, and support and maintenance issues.

Course Contents


The Open Telecom Platform course covers advanced Erlang features such as design patterns, applications and libraries. It’s objective is to give the participants the ability to develop and test systems using OTP.

It focuses on implementing and using the OTP design patterns, including generic servers, finite state machines and event handlers. It describes how applications are configured and included in larger systems, presenting some of the applications included in the OTP release, the System Architecture Support Library being one of them. Mnesia, the distributed real time database is covered in detail, including Mnemosyne, traceability, and support and maintenance issues.

Course Contents:



Introduction

This section introduces the need and advantages of using middleware in the development of massively
concurrent, distributed, fault tolerant real time systems in Erlang. It looks at Erlang's evolution, and how it
helped form OTP. Further this gives an overview of the components that make up OTP. They are Erlang, a
set of behaviours, and rules and design principles to use them. OTP comes with many ready built
applications and tools useful for large scale software design. They are introduced in this section.

Records and Funs

Records and funs are used extensively within OTP and a refresher of the concepts and use is provided in
this section.

Behaviours

Erlang processes display similar properties. In the Open Telecom Platforms, these properties have been abstracted in a group of generic library modules, also called OTP behaviours. This section introduces the concept of behaviours, and through examples of abstraction, shows their need and advantages.

Generic Servers

Generic servers implement the Client-Server behaviours in OTP. This section introduces the most commonly used behaviour in Erlang based applications.

Finite State Machines

The finite state machines behaviour in Erlang is used to implement state transitions in processes based on incoming events. This behaviour is commonly used when implementing protocol stacks.

Supervisors

Supervisors are a behaviour whose only task is to start other Erlang behaviours and monitor them for abnormal termination. This is a vital section in understanding start and restart strategies in Erlang.

Event Handlers

Erlang has ready built event managers. Event handlers are behaviours who subscribe to events sent to specific managers, allowing several actions to take place based on one single event. Event handlers can be changed on the fly, as well as added or deleted from a specific manager.

Applications

This section introduces the application behaviour, used for packaging Erlang resources. Resources can vary from libraries to process clusters, and can be configured to run on a single processor or be distributed on a set of nodes.

Special Processes

There will be times where we want to implement our own behaviours, or for efficiency reason, use simple Erlang processes. This section looks behind the scenes on how behaviours are implemented, and explains how to implement your own.

System Principles

The System Principles section describes how Erlang applications are coupled together in a release and started as a whole. Sections include creating release files, bundling up the software including the virtual machine, and running Erlang on target and embedded hosts.

Release Handling

The support for constructing and deploying system releases within OTP is gone through in detail.

Release Upgrade

OTP has the support for system upgrades of a deployed system during runtime, including the runtime system. The principles and supporting libraries are presented.

System Architecture Support Library

The System Architecture Support Library was used in the first release of OTP to package tools needed for large scale software design. This section covers error logging, the report browser, alarm handler and overload module.

An Introduction to Mnesia

Mnesia is a distributed, fault tolerant relational database encapsulated in an Erlang application. This section looks at starting and configuring Mnesia, followed by creating, populating and manipulating tables. It introduces transaction handling, locks, and complex queries. It concludes with guidelines on when to use and not to use Mnesia.

Maintaining Mnesia

Mnesia is a complex database, and lots can go wrong. This section introduces basic maintainability issues such as backups, repopulating databases from backups, traversing backup’s offline gathering information. It also covers the largest problem with distributed databases, network partitioning.

Mnemosyne

Mnemosyne is Mnesia’s own query language based on list comprehensions. This section introduces
mnemosyne and the more complex queries that can be achieved using it.

Query List Comprehensions

QLC is a new query language intended to replace Mnemosyne as the Mnesia query language. QLC als
support queries for ETS, DETS tables and other searchable data structures. The concepts and how
construct queries presented.