PragmaticBookshelf

PragmaticBookshelf

Forum Sponsor

Real-World Event Sourcing (PragProg)

Kevin Hoffman

edited by Kelly Talbot @KellyTalbot

Reality is event-sourced; your mind processes sight, sound, taste, smell, and touch to create its perception of reality. Software isn’t that different. Applications use streams of incoming data to create their own realities, and when you interpret that data as events containing state and context, even some of the most complex problems become easily solvable. Unravel the theory behind event sourcing and discover how to put this approach into practice with practical, hands-on coding examples. From early-stage development through production and release, you’ll unlock powerful new ways of clearing even the toughest programming hurdles.

Our applications are bombarded with data. It’s hard enough to derive state from that data, let alone discover how we arrived at that state. With event sourcing you can treat the stream of data as a simple sequence of events that you use to construct whatever state you need. Event sourcing is more than events; it adds patterns, rules, and constraints to produce robust and easy-to-maintain systems. In this book, you’ll learn which rules can never be broken and which ones are flexible. By grounding yourself in theory, rules, and practical approaches, you’ll be able to build real-world, event-sourced applications.

Get your hands dirty with fundamental event-sourcing building blocks such as commands, aggregates, projectors, process managers, injectors, and notifiers. Combine these building blocks to produce elegant solutions to complex problems. Leave “hello world” far behind as you tackle the more advanced aspects of event sourcing that give you the confidence you need to run these applications in production. Leverage event sourcing to create distributed applications with ease; model and handle failure; and deal with replays, schema evolution, security, and much more.

This book doesn’t shy away from confronting the hard parts of event sourcing, instead giving you clear advice and examples for tackling the most difficult details.

Empower your applications with the full force of event sourcing today.


Kevin Hoffman is the Engineering Director for Cloud Services at Synadia, the company behind NATS, a popular messaging and streaming server. Kevin specializes in distributed applications and has made enough event sourcing mistakes on his own to fill a book with what he’s learned and experienced.


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

Most Liked

nulltree

nulltree

No expert on the topic so can’t comment on the content per se, but I read the first two chapters and must compliment the experience so far.

The book gently introduces event sourcing, points out pitfalls, gradually builds up the pace and simultaneously is engaging to read. Kudos @autodidaddict

More personally, this way of modelling data and state seems to intuitively ‘click’ for me. Now I just need a good reason to use it in the real world (:

autodidaddict

autodidaddict

Author of Real World Event Sourcing

Glad you’re enjoying it! Comments like this make all the hard work worth it

chemist

chemist

Hello Kevin, commend you on tackling a challenging topic.

  1. Are you using any popular libraries such as incident?

  2. In what way will this book be different from other books that tackled ES. Such as the “building conduit” book

  1. Will you also cover the more complicated but important areas such as PM and sagas, as well?

  2. Hope you can also offer your opinions on how to architect an ES system as well.
    Thanks

Where Next?

Popular in Books Top

AstonJ
By Francesco Cesarini, Simon Thompson This book is an in-depth introduction to Erlang, a programming language ideal for any situation wh...
New
New
PragmaticBookshelf
Bruce A. Tate @redrapids and Sophie DeBenedetto @SophieDeBenedetto edited by Jacquelyn Carter @jkcarter The days of the traditional requ...
New
CinderellaMan
Hands-on Elixir & OTP: Cryptocurrency Trading Bot by Kamil Skowron Want to learn Elixir & OTP by creating a real-world project...
New
DevotionGeo
https://www.packtpub.com/web-development/phoenix-web-development
New
PragmaticBookshelf
Stephen Bussey @sb8244 edited by Jacquelyn Carter @jkcarter Elixir will change the way you think about programming. Use your Ruby experi...
New
AstonJ
Don’t forget you can get 35% off the ebook using the code ‘devtalk.com’ :023:
New
PragmaticBookshelf
Andrea Leopardi @whatyouhide edited by Jacquelyn Carter @jkcarter TCP, UDP, DNS, HTTP, and more: these are the network protocols that ma...
New
tristan
Adopting Erlang is a collaborative effort between myself (Tristan), Fred Hebert and Evan Vigil-McClanahan. It is an ongoing effort to gat...
New
jack-s9
Simplify and streamline your Elixir Phoenix Deployments. Deploy with tools that are easy to use, maximize Elixir’s features, and have ex...
New

Other popular topics Top

lastday4you
I wanted to check elixir version in phoenix because i found that my elixir is 1.5 but when i use Enum.chunk_by it said the function is un...
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
sen
Hi All, I set a environment variables in dev.exs , like below code. when i start server, how can i set the ${enable} value? thanks. d...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
boundedvariable
I am going through the kafka architecture. All the features what the kafka is providing are already in Erlang. I would like hear your opi...
New
Qqwy
Update: How to use the Blogs & Podcasts section You can post links to your blog posts or podcasts either in one of the Official Blog...
3271 127536 1222
New
hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => ...
New
vegabook
I’m brand new to Phoenix and I have stripped one of the demo applications to the bone. I just want to get an svg up on the screen. Here i...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New

We're in Beta

About us Mission Statement