The Alchemist's Guide To OTP
The Alchemist's Guide To OTP
The Alchemist's Guide To OTP

This book is 50% complete

Last updated on 2017-08-20

About the Book

I’ve been using Elixir for projects since sometime around 2012-2013, and the one thing that I always wanted was the programming equivalent of a field manual - a handbook intended for use while practicing your craft; concise, visual, and practical. I wanted it oriented around examples which were non-trivial, which would enable you to understand the tools at your disposal in a context closer to reality. This book is my take on what that looks like.

The Alchemist’s Guide to OTP is intended for Elixir programmers who are already somewhat comfortable with the language, and have a basic grasp of OTP concepts (i.e. applications, supervisors, etc.); this provides us room for looking at these concepts in detail, going all the way down to how they work internally. The book also covers a number of topics which are tangential to OTP, but which are an important element in the structure and design of efficient Elixir systems.

The book uses an application, Autofactory, to keep the topics grounded in a real project. The full source code of this application is included with the book, and is intended to be extended and experimented with for putting the patterns and ideas in this book to practice. Autofactory is a simulated manufacturing facility, which receives orders via API, and simulates the entire manufacturing process in detail. This provides us a practical foundation for discussing concepts like flow control, load shedding, circuit breakers and more, with just enough complexity to illustrate the issues and their solutions.

Some of the topics covered:

  • Designing applications by examining the problem domain and how it breaks down into concepts which map well to Elixir architectural patterns
  • How to determine application boundaries
  • How to design modular applications by building against protocols/behaviours, abstracting implementations from interfaces, and injecting implementations via configuration rather than directly calling them
  • Investigating OTP primitives in detail (applications, supervisors, special processes, etc.), including common pitfalls and how to avoid them
  • Effective use of finite state machines (via GenStateMachine)
  • Effective use of macros for reducing boilerplate without going "macro crazy"
  • Flow control, load shedding, circuit breakers
  • A variety of architectural patterns both large and small ("process as message", error kernels, stacking theory, etc.)
  • Everything about releases: configuration, migrations, hot upgrades, appups
  • Operations: troubleshooting in production, tracing and debugging tools, metrics, alarms
  • Writing efficient Elixir programs

About the Author

Paul Schoenfelder
Paul Schoenfelder

I'm a software engineer passionate about open source. I'm heavily involved in the Elixir/Erlang community, have contributed to both languages and am the author and maintainer of Distillery, as well as a number of other libraries.

The Leanpub 45-day 100% Happiness Guarantee

Within 45 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

See full terms...

Write and Publish on Leanpub

Authors, publishers and universities use Leanpub to publish amazing in-progress and completed books and courses, just like this one. You can use Leanpub to write, publish and sell your book or course as well! Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks. Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. It really is that easy.

Learn more about writing on Leanpub