Learn Advanced Distributed Systems Design

Join Udi Dahan for this extremely popular (and intensive) course on modern architecture design practices for distributed systems with Service-Oriented Architecture that will change the way you think about designing software systems.

Upcoming courses

Dallas, TX, USA
September 16 - 20, 2019
Early bird pricing available until July 26, 2019.
Dallas, TX, USA
February 24 - 28, 2020
Early bird pricing available until January 17, 2020.
London, UK
May 11 - 15, 2020
Early bird pricing available until March 27, 2020.
Dallas, TX, USA
October 12 - 16, 2020
Early bird pricing available until August 14, 2020.
London, UK
November 16 - 20, 2020
Early bird pricing available until September 18, 2020.
Can't attend at any of these locations? Subscribe for updates on new course dates, or consider our online video course.

Course information

Learning objectives

Designing large-scale distributed systems is hard. While new technologies make it easier to comply with today's communications and security standards, they don't auto-magically give you a robust and scalable system. See how companies like Amazon and eBay run their systems and 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

Who should attend?

This course is meant for team leads, application and solutions architects, as well as technologists who are involved in making decisions about the overall system design of software products and projects

Why attend

"Backed by many years of building mission critical real-world distributed systems it is no wonder that Udi is the best at what he does. When customers have deep issues with their system design, I point them Udi's way.”

Glenn Block, Director of Product Management, Auth0

Learn from the best

"The course profoundly changed our understanding and approach to SOA and distributed systems.”

Bryan Wheeler, Director of platform development, MSNBC

Change how you think about designing software systems

"My biggest takeaway was that you really had to break all precocious notions of what good software development is when you develop distributed system.”

Dave Beckman, Development Team Lead,
DHI Group

Discover the many fallacies of distributed systems

"I attended the ADSD course and it shook me to my foundations. It was a grueling five days of consuming from a fire hose.”

Dave Rael, Software Solutions Provider,
Raelyard Solutions

Practice with interactive hands-on exercises that will not leave you indifferent

"Udi gave a lot of good examples of how we could implement the ideas slowly to get the business and stakeholders on board with using service-oriented architecture. Which we did!”

Brian Lai, Software Engineer,
BankRate Insurance

Apply what you learn in your work

Course program

Module 1: 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
Module 2: Coupling: Platform, Temporal & Spatial

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

Topics include:

  • Platform Coupling
  • XML/SOAPTemporal Coupling
  • Synchronous/Asynchronous Spatial Coupling
  • Endpoints/Topics
Module 3: 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
Module 4: 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
Module 5: 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
Module 6: Service Structure & CQRS

Drilling inside Business Services and Business Components, the topic of Command/Query Responsibility Segregation is introduced for designing collaborative, high-scale systems with great user experience. The connection between capturing user intent in task-based UIs, caching, and one-way messaging is described.

Topics include:

  • Search & Queries + Denormalization
  • Validation & Business Logic for commands
  • Publish/Subscribe eventing for synchronizing denormalized caches
Module 7: 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 queues simplify monitoring solutions while at the same time connecting them to service-level agreements, as well as how this architecture can be capitalize on the capabilities of the cloud in order to create self-tuning systems.

  • Scaling heterogeneous server farms
  • Monitoring queues for SLA
  • Rolling deployment and versioning
Module 8: Long running processes

The distributed communications patterns wouldn't 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
  • The connection of time and messaging
Module 9: Service Layers and Domain Models

Logic-rich services require the use of advanced techniques for logic componentization. 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:

  • Business Logic inside and outside a Domain Model
  • Transactions, Isolation Levels, Concurrency Models
  • Testing Domain Models
Module 10: Ultra-scalable Web Apps

As more web apps are put under the pressure of growing user bases, performing more complex tasks upon larger quantities of data, standard caching techniques are not able to handle the task by themselves. In this module, students will learn how to leverage the entire web as a cache, use Content Delivery Networks, in combination with the messaging shown in previous modules:

  • Composability & Cacheability of dynamic content
  • Scalable personalized data
  • Integrated messaging & pub/sub for caching sensitive data
Module 11: Summary & Review

In order to make sure that attendees are able to put into practice all that they've learned throughout the course, here we strengthen the seams between the various topics. Q&A is also a core part of this final section.

Attending the course

Prerequisite for participating

To fully benefit from this course 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.

What to expect from the daily schedule

The course runs Monday to Friday, starting at 8:30am till 6pm with lunch break and short breaks between sessions. On Tuesday and Thursday you will be given homework that you should complete for the next day.

What is included in the price

  • 5 days of expert systems design training
  • Hands-on group exercises to ensure maximum retention
  • A video recording of the training course
  • All slides and code samples used in the course