Erlang and OTP in Action by Martin Logan, Eric Merritt, and Richard Carlsson, Review by Tony Cappellini
“Erlang and OTP in Action” is not a repeat of the existing introductory books on the Erlang language, although there is a brief introduction to the language in Chapter 2. This book continues where other books leave off. If you are just learning Erlang, this book is probably not the best place to start, however it is an excellent reference for more advanced topics
“Erlang and OTP In Action” is divided into 3 major sections. Each chapter builds on the examples and concepts from the previous chapters working towards getting your server live and robust.
I. Getting Past Pure Erlang: The OTP Basics
This section helps to clarify the distinction between Erlang and OTP. There is only brief coverage of the Erlang language and syntax, as there are other resources which cover this in much greater depth. The reader is exposed to some of the many modules and functions which make up OTP.
Early in the book you are shown how to write a RPC server as well as some basics on writing unit tests for that server. While this is advanced material, the flow and delivery are easy enough to understand to someone with minimal exposure to Erlang. Process supervision, caching, distributed Erlang, and Packaging are also covered in a similar manner of clarity.
II. Building a Production System
The second section starts off by creating a local cache for a web server in order to remedy a website which has become sluggish as the system grew. This is a real-life problem and solution, not a contrived example which are present in so many other books.
The remainder of this section goes into distributed Erlang which is quite an exciting topic. Erlang takes the pain out of communicating between multiple computers (aka nodes), and there are examples show you how to quickly establish communications between many nodes. It’s easy and fun with Erlang.
The previously-created caching scheme will also be part of the distributed system and is implemented using a distributed database called Mnesia.
III. Integrating and Refining
The final section shows how to interface programs written in other languages to Erlang using the foreign function interface, ports and Natively Implemented functions (NIFs).
The final chapter shows you how to profile and tune your program for optimal performance. Fortunately, Erlang comes with two tools for profiling, cprof and fprof which make it easier.
The book identifies which parts of a program to profile and show several examples using each of the profiling tools.
“Erlang and OTP in Action” is written very well and conveys the information clearly. The book takes the user all the way from development to deploying production-ready software. This book will be a big boost to in promoting awareness of Erlang/OTP. I recommend this book to everyone who is interested in learning how to implement distributed systems using concurrent and fault-tolerant process handling and recovery.