GOTO 2018 • Functional Programming in 40 Minutes • Russ Olsen
GOTO 2018 • Functional Programming in 40 Minutes • Russ Olsen
When learning about Domain Driven Design one of the harder things is wrapping your head around what aggregates are. In this post I list some facts, some may be redundant, but redundancy helps reinforce concepts.
Here is my personal list of facts and notes about domain driven design aggregates in no general order. This list will be updated as time goes on.
Developing microservices with aggregates – Chris Richardson
I found this to be one of the best explanations of aggregates and how they relate in microservice based systems. Here is a link to the site mentioned in the video microservices.io where you can find a lot more useful information about microservices.
ScalaSTM Software transaction memory
This is a video introduction and quick explanation of Lagom
This short video describes how to setup a Lagom project
From CRUD to Event Sourcing Why CRUD is the wrong approach for microservices
This video doesn’t mention it but it is about Lagom and how it is used to create microservices. This is a video I will watch more than once and write notes about. This video is complete with some code examples found here on github. This is a very helpful video if you are wondering how the hell Lagom works overall.
Your first microservices using Scala and Lagom. This is an interesting short article about Lagom. It is more or less a quick explanation of Lagom and how it works.
Deploying a Lagom Application to Openshift. A lightbend article about how to deploy an application to to openshift.
Here is a useful article about CQRS and Event Sourcing and how it relates to Lagom. CQRS and Event Sourcing with Lagom
Persistent read side in Lagom explained
Data persistence in Lagom An article about saving your data in a Lagom Framework system.
Here is a really good article about lagom. If you are wondering why use lagom, especially since it uses AKKA and Play and you can just do that yourself, then this is the article for you.
Domain Driven Design and it’s related concepts can take some time to understand. Below are links to articles, books and videos I have found helpful.
Here is a free guide to Domain Driven Design written by microsoft. This guide covers CQRS and Event Sourcing complete with an app that can be downloaded and inspected while reading the guide. This covers bounded contexts and suggestions for finding them and much more. This is an excellent free source.
Effective aggregate design series vaughn vernon.
An introduction to event storming: The easy way to achieve domain-driven design
Modelling Reactive Systems with Event Storming and Domain-Driven Design
Domain driven design isn’t always the best design choice for all systems. This article details the many reasons why.
Why I don’t do Domain Driven Design.
Tactical domain driven design. More information on domain driven design.
Domain Driven Design Quickly – a free eBook summing up DDD the Eric Evans book.
Finding your domains bounded contexts is an iterative process. In this video Nick covers some of the ideas behind this iterative process of mapping out your domains bounded contexts.
Nick tune is funny. This is a really good talk about DDD Domain driven Design.
Dependency Injection is evil. The downsides of Dependency injection.
Semantic versioning explained – how to version your software
Apache Archiva™ is an extensible repository management software that helps taking care of your own personal or enterprise-wide build artifact repository. It is the perfect companion for build tools such as Maven, Continuum, and ANT.
Archiva offers several capabilities, amongst which remote repository proxying, security access management, build artifact storage, delivery, browsing, indexing and usage reporting, extensible scanning functionality… and many more! Get the latest updates, follow us on twitter @archiva.
This page from the Lagom Documentation explains why Event sourcing is useful. Advantages of Event Sourcing
Exploring CQRS and Event Sourcing This link is from a Microsoft project and is an excellent resource about CQRS and Event Sourcing. It walks you through the entire decision process of breaking down an entire application domain with basic Domain Driven Design concepts. It is very thorough and a great read to help you understand what goes into CQRS, Event sourcing and breaking your domain into smaller more useable chunks.
CQRS increases consistency. This article is another good short argument for why you should use CQRS.
CQRS Documents by Greg Young
CQRS Clarified by Udi Dahan
Message brokers vs Message buses These two sound the same but are different this article covers the minor details.
What do you mean by “Event-Driven”. This is an excellent article by Martin Fowler which covers Event driven systems in more detail.
Event Sourcing and CQRS with AKKA 2.6 video. This page has a video, but it also has some really useful links below the video which is why I included it as a link.
How to use CQRS with Akka 2.6 video. This page has a video like the one above with useful links.
Patterns, Principles and Practices of Domain-Driven Design by Scott Millett and Nick Tune This book covers Event Sourcing and CQRS as well as all of the other principles of Domain Driven Design. The nice thing about this book is it has code examples, the code is C#, but you don’t have to down load it to view it and basically follow along. The examples often come after long explanations of the concepts, if you have time or know C# you can download and try the example code, a nice extra if you ask me. This is one that stays in a pile next to my desk.
Designing Event-Driven systems. This is a free ebook so what does it hurt to read it?
Greg tells some great stories that relate to why CQRS and Event Sourcing are useful and gives interesting insights into use cases. For many of us who have been doing the old fashioned CRUD architecture of storing and reading everything from a database, this video will make sense of why that was a bad way of doing things. After this video you will really want to dig into CQRS and Event Sourcing in depth.
In this video Mathew explains how an Event Sourced system that utilizes CQRS works. One thing covered is why having separate read and write data stores is a good idea and how it works in an abstracted way.
I like this video this guy is funny. David quickly covers Microservices, event sourcing and other Domain Driven Design concepts, tying things together in a very entertaining animated and funny way. This is one of my favorite videos about event sourcing, it answers a lot of questions and makes many good points. This video is worth watching more than once.
This video has some good abstract information about events and event sourcing in microservices. It points out some of the issues with event sourcing and how to overcome them. Allard covers the types of Events, commands, events, queries and how they are used in an event driven system. The most interesting and for me useful part of this video is the part about GDPR and how to comply in an Event Sourced system at about the 38:00 mark.
Udi tells a story that builds up to CQRS and Sagas. He says in CQRS that Commands can’t be allowed to fail. At about 27:00 he explains what this means. At ~31:00 he talks about eventual consistency and how to deal with it in a system. At about 40:00 give them the Rick Sanchez slow ramp. LOL He finishes up by talking about bounded contexts.
As I find useful resources to AKKA I will list them here.
Akka Documentation. The documentation is a great place to start.
Slideshare Akka Microservices. This slide series shows the related DDD concepts and how they relate to AKKA and Scala.
Here is a link about why you shouldn’t create too many akka actor systems in your application.
Akka anti-patterns: too many actor systems
Learning Akka by Jason Goodwin. I like this book because it is small and to the point. At about 250 pages this book jumps right into AKKA, it doesn’t tell any stories and the examples are concise and to the point. This is also a great starting book for Java developers looking to get started with Akka because the author shows how to do everything with Java then with Scala. What immediately grabs your attention as you are reading this book is… how much more code it takes to do everything with Java. <– And that is why I don’t Java anymore. Java is like writing a novel to describe a page. This book mostly covers the basics of AKKA it doesn’t go into depth about all of the AKKA features and abilities. This book is just a nice, clean, overall introduction to AKKA with Java and Scala. If you are new to AKKA this should be your first book.
AKKA concurrency by Derek Wyatt. This is an older book, however it is still relevant. This book is kind of long at over 500 pages, but it digs into how AKKA actually works. What is nice about this book is it starts with an example and follows through with iterative changes as the book proceeds. The example is of a plane and flight crew and how all of the parts ( actors ) of the plane and crew interact to make the plane work. This book is more advanced and in depth than Jason Goodwins book, but I feel it explains the reasons behind what you are doing with AKKA. I’d read this book after reading Goodwins book, as it digs a little deeper into things giving more info on how AKKA works.