This post is my review of Udi Dahan’s Advanced Distributed System Design online course. I describe my experiences taking it and talk about whether I would recommend it. I also talk about what topics it covers, what are the available formats, what’s the cost and time required to complete it.
Disclaimer: I took this course for free, as Particular Software offered it to everyone during the COVID-19 pandemic in April 2020. Many thanks to them!
The course is about creating scaleable SOA-based systems. It covers different aspects of distributed systems design: from principles and implementation to team structure and collaboration with business experts.
The course instructor is Udi Dahan - the creator of NServiceBus and the founder of Particular Software.
While its main focus is Service Oriented Architecture, the course also talks about the principles behind distributed systems in general.
Udi starts the course talking about the fallacies of distributed and enterprise computing. He lists the assumptions developers and architects often make about network, business logic distribution, and system maintainability.
He defines the concept of coupling in code and systems and shows how messaging helps to manage it. He then talks about Bus and Broker - commonly used messaging architecture styles.
Udi explores the topic of Service Oriented Architecture in much detail. He talks about how SOA can benefit you, when it is a good fit, and when you shouldn’t use it.
He talks about services and boundaries. He defines a service, describes its building blocks, and shows how services relate to business capabilities. He gives tips on designing service boundaries and talks about how microservices fit into SOA.
He covers the topics of cross-cutting concerns in SOA, how services can span many technologies, and the ways to compose them on the UI. He also talks about operational aspects, such as monitoring, versioning, scaling, and back-ups.
Udi touches on the topic of structuring a team for an SOA-based system. He also talks about the role of an architect in the organizational transition towards SOA. He defines the process of evolving a big ball of mud monolithic system towards a service-oriented one.
He also goes on to talk about topics of long-running processes, CQRS, and Domain Modelling in the context of SOA.
You can take this course online or in person.
The duration of the offline course is five full days. At the time of writing, the full price for the upcoming course in London is £3,500.
The online version is structured into 16 modules and consists of 97 videos with a total length of 32.5 hours. The online course costs $2,500 for an individual and $10,000 for a team of 10.
I would choose the offline course if I had an option. I had quite a lot of questions I wish I could ask while watching the videos. You’d also get to know a lot of bright people in your field if you attend it in person.
Having said that, the online version is also great. It is more accessible, allows you to study at your own pace, and you don’t have to take time off work to participate. You can even go through it with your team.
I enjoyed the course a lot, and I learned from both the content and the way Udi presented it.
The course is a perfect mix of theory and practice. It gave me many “Aha!” moments every time I recognized how I could’ve had applied another principle in my past projects. And there are enough code examples to understand how things work in real life.
Udi is a very engaging presenter and is enjoyable to listen to. He welcomes people asking him questions; in one of the videos, Udi offers people to “sell” him an idea, takes the opposite side, and turns the lecture into a debate.
Udi Dahan’s Advanced Distributed System Design course is an excellent investment of your time and money.
The course is intense and demanding so be ready to commit to it and approach it with an open mind.
It will not only teach you about the intricacies of Service Oriented Architecture but change the way you think about designing maintainable, business-oriented solutions.