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 |
Related courses
-
Updated 1y agoAdvanced Software Design Course by Mirdin
By: Mirdin, Nils Eriksson, Jimmy Koppel (Mirdin)The Advanced Software Design Course is a program with 6 main modules aimed at improving software design skills.11h 23m -
Updated 2y agoFundamentals of Backend Communications and Protocols
By: UdemyBackend engineering is an art. During my 18 years career working with and building backend applications, I discovered that certain communication design patterns15h 35m -
Updated 1y agoFeature Flags: Transform Your Product Development Workflow
By: Ben NadelMy development team was consistently releasing critical errors into production. We spent as much time fixing failures and writing incident reports as we did.