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

The Software Designer Mindset (COMPLETE)
By: ArjanCodes (Arjan Egges)"The Software Designer Mindset" is a course that teaches all aspects of software architecture and offers practical advice on creating scalable software.14 hours 32 minutes 58 seconds -

System Design for Beginners
By: Arpit Bhayani"System Design for Beginners" is a course for beginners in a convenient self-paced format.12 hours 2 minutes 41 seconds 3 / 5 -
FreeThe System Design Masterclass
By: Arpit BhayaniA masterclass that helps you become great at designing scalable, fault-tolerant, and highly available systems. This is a prime and intermediate-level cohort-bas43 hours 13 minutes 49 seconds 4 / 5