Skip to main content
CF

Advanced Distributed Systems Design

32h 22m 8s
English
Free

Udi Dahan is one of the world’s foremost experts on Service-Oriented Architecture, Distributed Systems and Domain-Driven Design. He's also the creator of NServiceBus, the most popular service bus for .NET.

Everything you should know about distributed systems design

This online course on modern architecture design practices for distributed systems with Service-Oriented Architecture will change the way you think about designing software systems.

  • Are you sold on the concept of microservices but struggle to implement them in your system?
  • Are you tired of spending every day trying to tame the big ball of mud monster?
  • Does the coupling of your system components make your software hard to deliver and impossible to scale?

We've recorded an entire week of distributed design training by Udi Dahan containing everything you wish you'd known years ago about distributed systems design, such as:

  • Avoiding common pitfalls in distributed systems
  • Using loosely coupled messaging communication
  • Identifying and allocating business logic to services
  • Decomposing services into layers, tiers and processes
  • Designing for service management and monitoring in production environments
    Now you can fast-track your way to building a scalable distributed system at your own pace.

And the best part?

You can learn to master the principles in this course wherever and whenever, which makes this course:

  • More convenient to attend: all you need to attend is an internet connection and a browser
  • More cost-effective: you won't have to travel abroad
  • Easier to approve: you won't necessarily need to take time off

More flexible: you can time-travel by going back and forth, or even increase the playback speed

In this course you'll get:

  • 5 days worth of expert systems design training
  • Lifetime access to the course material
  • Lifetime access to the ADSD alumni forum
  • Copy of slides used in the course

About the Author: Udi Dahan

Udi Dahan thumbnail

Udi Dahan is the founder and CEO of Particular Software (the company behind the NServiceBus messaging framework), a long-running speaker on distributed systems, and one of the practitioners most associated with bringing Domain-Driven Design and event-driven architecture into mainstream .NET enterprise practice. His material is taught at the level of senior architects designing systems that will run in production for a decade.

The CourseFlix listing carries Advanced Distributed Systems Design — a course aimed at architects and senior engineers working on multi-service systems where the trade-offs around messaging, consistency, and failure modes drive the architecture.

Watch Online 97 lessons

  • Space or K: play or pause
  • J: rewind 10 seconds
  • L: forward 10 seconds
  • Left Arrow: rewind 5 seconds
  • Right Arrow: forward 5 seconds
  • Up Arrow: volume up
  • Down Arrow: volume down
  • M: mute or unmute
  • F: toggle fullscreen
  • T: toggle theater mode
  • I: toggle mini player
  • 0 to 9: seek to 0 to 90 percent of the video
  • Shift plus N: next video
  • Shift plus P: previous video
0:00 0:00
#Lesson TitleDuration
1Introduction: Systems vs. Applications 06:11
2Fallacy #1: The network is reliable 13:44
3Fallacy #2: Latency isn’t a problem 16:46
4Fallacy #3: Bandwidth isn’t a problem 25:11
5Fallacy #4: The network is secure 13:59
6Fallacy #5: The network topology won’t change 09:21
7Fallacy #6: The admin will know what to do 12:10
8Fallacy #7: Transport cost isn’t a problem 13:41
9Fallacy #8: The network is homogeneous 11:43
10Summary: 8 fallacies of distributed computing 06:07
11Fallacy #9: The system is atomic 13:15
12Fallacy #10 : The system is finished 18:36
13Fallacy #10: Towards a better development process 26:18
14Fallacy #11 : The business logic can and should be centralized 22:40
15Coupling in applications: afferent and efferent 26:00
16Coupling in systems: platform, temporal and spatial 11:56
17Coupling solutions: platform 16:22
18Coupling solutions: temporal and spatial 22:01
19Coupling: summary and Q&A 12:56
20Why messaging? 01:56
21One-way, fire & forget 10:14
22Performance: messaging vs RPC 18:41
23Service interfaces vs strongly-typed messages 27:23
24Fault tolerance 22:11
25Auditing 05:16
26Web Services invocation 26:19
27Exercise: selling messaging to your organization - overview 05:57
28Exercise: selling messaging to your organization - discussion (part 1) 22:36
29Exercise: selling messaging to your organization - discussion (part 2) 30:41
30Exercise: selling messaging to your organization - summary 16:47
31ealing with out of order messages 07:35
32Request-response 18:29
33Publish-subscribe 20:22
34Publish-subscribe: topics 22:42
35Exercise: dealing with out of order messages - overview 25:28
36Exercise: dealing with out of order messages - solutions 39:41
37Visualization 14:39
38Messaging patterns: summary 03:42
39Intro to architectural styles 07:42
40Architectural styles: Broker 24:28
41Architectural styles: Bus 22:24
42Architectural styles: Bus vs Broker 19:32
43SOA tenets 17:59
44Service example 14:41
45Q&A 24:38
46Services modelling: Workflows, boundaries and business capabilities 22:32
47UI composition and Branding service 22:04
48IT/Ops service 29:44
49Exercise: services modelling (hotel) - overview 15:33
50Exercise: services modelling (hotel) - solutions 23:43
51SOA modelling process and approach 17:52
52Domain analysis: Hotel 21:41
53Domain analysis: Hotel - payment 29:11
54Domain analysis: Hotel - booking 23:43
55Domain analysis: Hotel - check-in 18:45
56usiness components 29:22
57Autonomous components 33:33
58Autonomous components: deployment 44:24
59Service boundaries 32:56
60Reporting 22:24
61Referential integrity 15:12
62Team structure 37:02
63Intro to CQRS 11:41
64Non-collaborative domains 35:38
65Collaborative domains 55:21
66CQRS theory 01:04:55
67CQRS in action 15:20
68CQRS: summary 04:23
69Q&A: event sourcing 08:55
70Q&A: search, reporting, and requirements vs user wishes 13:03
71Engine pattern 11:24
72Q&A: engine pattern 37:25
73Deployment 13:54
74Monitoring 21:33
75Scaling 20:01
76Fault-tolerance, backups, disaster recovery 17:49
77Versioning 08:50
78Sagas: long-running processes 21:44
79Sagas: request-response 19:43
80Sagas: event-driven 16:27
81Sagas: time component 15:39
82Exercise: saga design - overview 16:41
83Exercise: saga design - solutions 56:03
84Domain models 14:06
85Testing domain models 03:39
86Domain models deployment 09:23
87Concurrency models 07:21
88Realistic concurrency 24:49
89Domain models: sagas 14:49
90The rewrite tax 08:36
91Phase 1: Good programming practices 13:36
92Phase 2: Pub/sub 17:04
93Phase 3: carve out pieces 23:36
94Phase 4: attack the database 49:27
95Caching 22:15
96Content Delivery Networks 21:00
97Personalization 15:17

Related courses

Frequently asked questions

What prior knowledge is required for this course?
The course is designed for individuals who have a fundamental understanding of distributed systems and Service-Oriented Architecture. Familiarity with Domain-Driven Design and experience with .NET technologies will be beneficial, as the course references NServiceBus, a .NET service bus. Knowledge of basic networking concepts and programming principles is also recommended.
What kind of projects or exercises are included?
The course includes several exercises that focus on practical applications of the concepts taught. Notable exercises involve selling messaging to your organization and dealing with out-of-order messages. These exercises aim to reinforce understanding of messaging patterns and service modelling within a distributed system context.
Who would benefit most from taking this course?
This course is ideal for software architects, system designers, and developers who are involved in designing and implementing distributed systems. IT professionals seeking to deepen their understanding of Service-Oriented Architecture and improve their skills in handling complex systems will also find the course valuable.
How does this course compare in depth to other distributed systems courses?
The course provides a detailed examination of distributed systems through the lens of Service-Oriented Architecture and Domain-Driven Design. It covers a wide range of topics, including messaging patterns, service boundaries, and architectural styles like Broker and Bus. The inclusion of real-world exercises and in-depth Q&A sessions offers a comprehensive learning experience compared to general introductory courses.
What specific tools or platforms will be covered?
The course specifically covers NServiceBus, which is a popular service bus for .NET. It discusses various messaging patterns and architectural styles, focusing on how these can be implemented effectively using NServiceBus in distributed systems.
What topics are not covered in this course?
The course does not cover basic programming languages or introductory networking concepts, assuming that participants already have these skills. Additionally, it does not delve into non-.NET service buses or distributed systems platforms outside the scope of .NET and NServiceBus.
How much time should be allotted to complete this course?
While the exact runtime of the course is not specified, it consists of 97 lessons, including various exercises and Q&A sessions. Students should plan to dedicate sufficient time to fully engage with each lesson and complete the exercises, which may require additional time outside of the lessons to research and apply concepts.