Skip to main content
CF

Advanced Distributed Systems Design

32h 22m 8s
English
Free

Advanced Distributed Systems Design is a 97-lesson 32 hours 22 minutes self-paced course by Udi Dahan. Udi Dahan is one of the world’s foremost experts on Service-Oriented Architecture, Distributed Systems and Domain-Driven Design.

Course facts

Lessons
97
Duration
32 hours 22 minutes
Level
All levels
Language
English
Updated
Instructor
Udi Dahan
Price
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

Who teaches Advanced Distributed Systems Design? 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.

What lessons are included in Advanced Distributed Systems Design?

  • 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

What courses are similar to Advanced Distributed Systems Design?

  • Systems Thinking in the AI Era, Course 1 thumbnailUpdated 3mo ago

    Systems Thinking in the AI Era, Course 1

    By: Kay Ashaolu
    Study the universal principles of system design for AI applications and platforms. Apply the knowledge to develop complex digital systems and manage them.
    4h 22m
  • Systems Design Fundamentals thumbnailClassic

    Systems Design Fundamentals

    By: AlgoExpert
    The most important ingredient to success in systems design interviews is having extensive knowledge in the areas of distributed computing, reliability engineeri
    10h 2m5/5
  • Clean Code Zero to One thumbnailUpdated 2y ago

    Clean Code Zero to One

    By: Shahan Chowdhury
    "Clean Code Zero to One" is a guide on writing clean and maintainable code, based on the modern practices of Robert C. Martin (Uncle Bob).
  • System Design Course thumbnailClassic

    System Design Course

    By: get.interviewready.io
    In this course, you’ll get a deep understanding of system design concepts. Full guide. Architectural schemes, capacity planning, API list, tests, Faq.
    92h 26m4/5
  • Production-Ready Serverless thumbnailUpdated 2y ago

    Production-Ready Serverless

    By: Yan Cui
    The Production-Ready Serverless course teaches how to build resilient and scalable serverless applications, ready for production deployment. It.
    13h 37m5/5
  • Smart Interface Design Patterns  thumbnailUpdated 2y ago

    Smart Interface Design Patterns

    By: Vitaly Friedman, Smashing Magazine
    Master essential design patterns for modern interfaces. Learn best practices through examples and live projects to tackle real-life challenges effectively.
    13h 18m5/5

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.