Udi Dahan's Advanced Distributed Systems Design with SOA course

Topics covered at DISTRIBUTED-SOA-01-05

Dates coming soon

Would you like to learn how to take the pain out of designing large-scale distributed systems? Want to design robust, scalable and flexible systems whilst avoiding costly mistakes?

Join Udi Dahan for this extremely popular (and intensive) course on modern architecture design practices for distributed systems with SOA.

New technologies make it easier to comply with today’s communications and security standards, but they won't magically provide you with a robust and scalable system.

Join Udi for a course packed with the wisdom of companies like SUN, Amazon and eBay.

Tried-and-true theories and fallacies will be shown, helping you to avoid costly mistakes. Communications patterns like publish/subscribe and correlated one-way request/response will be demonstrated, in conjunction with advanced object-oriented state management practices for long-running workflows.

If you enjoy deep architectural discussion, if you are in charge of building a large-scale distributed system, and if you want to know more about how the big guys run their systems, then sign up now for the opportunity to spend 5 days with Udi and gain the advanced skills you need to design Distributed Systems with SOA!

Learn how to:

  • Avoid common pitfalls in distributed systems
  • Use loosely coupled messaging communication
  • Identify and allocate business logic to services
  • Decompose services into layers, tiers, assemblies, and processes
  • Design for service management and monitoring in production environments

What the community says

"“Having followed Udi's blog and other writings for a number of years I attended Udi's two day course on 'Loosely Coupled Messaging with NServiceBus' at SkillsMatter, London. I would strongly recommend this course to anyone with an interest in how to develop IT systems which provide immediate and future fitness for purpose. An influential and innovative thought leader and practitioner in his field, Udi demonstrates and shares a phenomenally in depth knowledge that proves his position as one of the premier experts in his field globally. The course has enhanced my knowledge and skills in ways that I am able to immediately apply to provide benefits to my employer. Additionally though I will be able to build upon what I learned in my 2 days with Udi and have no doubt that it will only enhance my future career. I cannot recommend Udi, and his courses, highly enough.”"

Neil Robbins, Brit Insurance

"Udi clearly knows this inside and out and is an excellent teacher. I'm only daunted due to learning so much!"

November 2014 Attendee on 25th Nov 2014

"Fantastic course, really gets inside your head and challenges you to justify all decisions/point of view. I (un)learned so much!"

October 2014 attendee on 25th Nov 2014

"Really can't fault this - excellent course that told me exactly what I wanted to know. "

October 2014 attendee on 25th Nov 2014

About the Author

Udi Dahan

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

Thanks to our partners

Distributed Systems Theory

Decades of distributed systems development have taught us many lessons. In this module we’ll cover many historical mistakes as well as proven best practices for scalable and robust design.

Topics include:

  • 8 fallacies of distributed systems
  • Transactions

Coupling: Platform, Temporal, & Spatial

Loose coupling has become the watchword of complex systems development, yet few understand its multiple dimensions. In this module we’ll be covering the three different dimensions of coupling as well as patterns for dealing with them.

  • Platform Coupling: XML/SOAP
  • Temporal Coupling: Synchronous/Asynchronous
  • Spatial Coupling: Endpoints/Topics

Asynchronous Messaging Patterns

Although scalability is achieved through the use of asynchronous message passing, more advanced message exchange patterns are required to handle today’s complex integration scenarios.

This module will cover the most commonly used patterns:

  • One way
  • Correlated Request/Response
  • Publish/Subscribe

Bus & Broker Architectural Styles

Enterprise Service Buses are all the rage these days. In this module we’ll be covering what’s the difference between the Bus architectural style, and the more well-known Broker, found commonly in many EAI projects.

Topics will include:

  • Architectural advantages and disadvantages
  • Technological advantages and disadvantages

SOA Building Blocks

One of the goals of SOA is to develop systems which are more closely aligned with Business. In this module we’ll be covering an analysis methodology from moving from the business domain to executable systems that comply with all the principles of loose-coupling.

  • Business Services
  • Business Components
  • Autonomous components & Queues

Scalability and Flexibility

In order to enable agility, services must be able to scale up, out, and down quickly. In this module we’ll see how autonomous components can be configured including transactional and durable aspects of message handling.

  • Configuring autonomous components
  • Scaling up and out

Long running processes

The distributed communications patterns would not be complete without a discussion on orchestration. In this module we’ll see how to manage the state of long-running distributed communication flows as well as:

  • Encapsulating process logic
  • Advantages & disadvantages of orchestration

Service / Autonomous Component Solution Structure

As developers go to implement autonomous components, guidance is required as to which concepts need to implemented in which project, what dependencies are there between projects, and how to bridge the worlds of messaging, business logic and reporting.

Topics include:

  • Messages + Handlers
  • Databases

Service Layer – Domain Model Interaction

Logic-rich services require the use of advanced techniques for logic componentisation. The Domain Model Pattern enforces a high level of Separation of Concerns, yet it must eventually be connected with Service Layer code that supports many concurrent users.

In this module, the topics covered will include:

  • Domain Model introduction
  • Testing Domain Models
  • Optimistic, Pessimistic, and Realistic Concurrency Models

Module 10: Creating High-Performance Domain Models The strong separation between the Domain Model and the database which stores and retrieves its data may enable a high level of testability, yet often causes performance problems.

In this module, we’ll see the various aspects impacting the performance of persistence:

  • Transactions and Isolation Levels
  • Lazy Loading, Eager Fetching
  • Databases Tips & Tricks

Module 11: Web Services and User Interfaces

The ease of interacting with users over the web drives the need for service to UI interactions. Also, many integrations require exposing synchronous web services to customers. In this module, we’ll see what is required in both cases:

  • ASP.NET 2.0 Asynchronous Tasks
  • Rich Internet Applications and Services
  • Web Services for integration

Module 12: Case Study

This course will wrap up with an enterprise case study that draws upon all lessons showing students how all the patterns and principles work together in a solution.

Each day will end with a general discussion, review and wrap up.


If you are a Developer or Architect and you want to learn how to to take the pain out of designing large-scale distributed systems that are robust, scalable and flexible, then this Advanced Distributed Systems Design with SOA workshop is definitely for you!


To benefit from this course on Advanced Distributed Systems Design with SOA, you should have some experience in developing complex software systems and a basic understanding of object-oriented design and rudimentary UML.

You'll enjoy this workshop even more if you have prior experience with large scale application development involving object modeling and web services, but this is not essential.