Concurrent Data Processing in Elixir (PragProg)

Learn different ways of writing concurrent code in Elixir and increase your application's performance, without sacrificing scalability or fault-tolerance. Leverage concurrency by using OTP, GenStage, Flow, and Broadway to build high-performance applications and data processing pipelines.

Svilen Gospodinov @svilen

edited by Jacquelyn Carter @jkcarter

Learn different ways of writing concurrent code in Elixir and increase your application’s performance, without sacrificing scalability or fault-tolerance. Most projects benefit from running background tasks and processing data concurrently, but the world of OTP and various libraries can be challenging. Which Supervisor and what strategy to use? What about GenServer? Maybe you need back-pressure, but is GenStage, Flow, or Broadway a better choice? You will learn everything you need to know to answer these questions, start building highly concurrent applications in no time, and write code that’s not only fast, but also resilient to errors and easy to scale.

Whether you are building a high-frequency stock trading application or a consumer web app, you need to know how to leverage concurrency to build applications that are fast and efficient. Elixir and the OTP offer a range of powerful tools, and this guide will show you how to choose the best tool for each job, and use it effectively to quickly start building highly concurrent applications.

Learn about Tasks, supervision trees, and the different types of Supervisors available to you. Understand why processes and process linking are the building blocks of concurrency in Elixir. Get comfortable with the OTP and use the GenServer behaviour to maintain process state for long-running jobs. Easily scale the number of running processes using the Registry. Handle large volumes of data and traffic spikes with GenStage, using back-pressure to your advantage. Create your first multi-stage data processing pipeline using producer, consumer, and producer-consumer stages. Process large collections with Flow, using MapReduce and more in parallel. Thanks to Broadway, you will see how easy it is to integrate with popular message broker systems, or even existing GenStage producers.

Start building the high-performance and fault-tolerant applications Elixir is famous for today.

Don’t forget you can get 35% off with your Devtalk discount! Just use the coupon code “" at checkout :+1:


I’m definitely buying that one after I find where to put the physical version. :grinning_face_with_smiling_eyes:


Oooo this looks really good!

Congrats @svilen!!

Love the colour you picked too! :nerd_face:


Corresponding tweet for this thread:

Share link for this tweet.

Related portal:


Nice, one more Elixir book to buy. One thing though, This book is in Beta, final version expected Aug 2020 ? Typo there?


It seems the promo code is not working at the moment :slight_smile:


Sorry, it is now working :slight_smile:


Sorry about that everybody! The “” discount code can now be applied to this book.

On the plus side, the Devtalk community gets to hear about all our new books before we announce them publicly anywhere else. On the downside, the Devtalk community (and, in this case, the ElixirForum community) get to deal with all our bugs before anybody else, too. :wink:

Hope you enjoy the book and please be sure to share your feedback with @svilen!


@mafinar yes, that appears to be a typo. Nice catch, thanks!



I’m gonna buy it the next month. I have a lot of books that I haven’t read yet :sweat_smile:.

Congrats @svilen


Thanks @AstonJ!

I wasn’t involved in the design process actually, so all credit goes to the designers/illustrators who worked on this :slight_smile: I agree, the cover looks great!


Thanks @bloq! No worries, I know the feeling of having a long reading list…


Me three on the long reading list. @AstonJ since there seems to be quite a bit of interest in this book, maybe it is a good book club candidate for down the road.


Yeah, same here. I really want to buy it but I have at least 4 other books that I also want to read and still can’t allocate the time (even though I do have it).


Ah, props to whoever choose it then :sunglasses: but it’s cool you got it on your book - it’s a great cover :nerd_face:

Definitely! I keep meaning to post a ‘Which Book Club would you like to see next thread’ just haven’t got around to it… will do it soon :blush:

1 Like

2 posts were split to a new topic: Concurrent Data Processing in Elixir: various errata

Looks to be another awesome Elixir book :slight_smile:


Well. I’m ready to learn more Elixir stuff, I already bought the book :sweat_smile:.

Keep doing stuff @svilen


Just saw it being content complete. Looks like it’s time to start a book club on this one.


@svilen What’s the status of the finalization of the book? I decided to buy it but would like it be officially at its next version before purchasing a physical copy.

Furthermore, if I buy it electronically (which I also want to do), am I entitled to receiving corrections and next versions afterwards?