Course Topics

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.

  • Platform Coupling – XML/SOAP
  • Temporal 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

 

Group Analysis Exercise
In order to ensure maximum retention, students take part in a group analysis of an enterprise problem domain, identifying business services and events, experiencing first hand the tacit knowledge of parts of a solution that “feel right” and follow the rules outlined in the previous modules, as well as the other parts that “feel wrong”. Many students have described this exercise as the point of epiphany, when all the previous information “just made sense” afterward.

 

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: Smart Client / Service Interaction
The publish/subscribe semantics with which services communicate require smart clients to perform a great deal of background work. In this module, solutions will be shown to avoid multi-threaded deadlocks, livelocks, and data-races, as well as other best practices in smart-client development like:

  • Client-friendly Service Contracts
  • Service Agents and Client Repositories
  • Highly interactive map-based UIs

Module 12: 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.

 

 

 

More Reviews

 "The Advanced Distributed Systems Design training course however warrants a special praise on its own - as it was an unprecedented illustration of professional devotion, no-compromise high-end quality and performance excellence. In addition to clear, "no nonsense" explanation and thorough elaboration via applied examples on fundamentals and commonly-known principles, it also contains a lot of original genuine material that just cannot be found anywhere else. By large margin - the greatest value-for-money training type event that I ever attended!" -- Oleg Kiorsak

"Make it a priority to attend Udi's class - it will save you the time and money you'll otherwise spend re-architecting your system. Hearing Udi first-hand is a privilege and an opportunity you don't want to miss." -- Jerry Muth

  "I recently attended Udi's 'Advanced Distributed Systems Design with SOA' course, and must say it is the best learning experience I've ever had. Udi has the ability to present difficult topics in a structured way that makes them easy to understand." -- Torstein Bjørnstad

"This has been one of the best courses I have attended and I have leant a huge amount when tackling SOA design. I would highly recommend this course to anyone who has the opportunity to design any SOA based systems regardless of their technical background. As a Java developer I feel I took as much knowledge from the course as other students who come from a .Net background." -- Philip Harris

"Seriously though, the course was incredible, I think the overwhelming majority learnt more in those 5 days about designing large scale scalable enterprise architectures than they had over the last 5 years of their career." -- Rhys Campbell 

  

Comments
When
Mon, Nov 22, 2010, 08:30 AM Start
Fri, Nov 26, 2010, 05:30 PM End
Where
Cliftons
190 & 200 George Street
Sydney, Australia
  • Hosted by Udi Dahan
  • Email this to a friend
  • Event URL
  • When: 22 Nov 2010, 08:30 AM to 26 Nov 2010, 05:30 PM. Where: Cliftons, Sydney.