Introduction

Designing large-scale distributed systems is hard. New technologies make it easier to comply with today's communications and security standards, but don't auto-magically give you 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, keeping you from making those same costly mistakes today. Communications patterns like publish/subscribe and correlated one-way request/response will be used 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, if you want to know more about how the big guys run their systems, this is for you.

Audience

This workshop is targeted at 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.

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 & Occasionally Connect Clients

    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.

    Testimonials from previous attendees:

    "Four days after the last day session of Udi's Advanced SOA / DDD course in Austin, it's fairly obvious that the course I just attended has every aspect of an event that can boost my career into a new period of rapid growth. Udi spends no time wasting minutes and begins, the very first day, challenging the fundamental concepts that you hold regarding software systems. By day 3, he's broken you down and built you back up with a completely new understanding of distributed systems. And when it's all said and done, you don't want to think about software the way you did before. Udi's abilities as a teacher and instructor are impeccable. Frankly, he's Socratic. Through the course of a day we were provided explanations, examples, and questions that brought us into the process of a better way of thinking about distributed software systems. Instead of showing us what fishing was, he did his best to teach us to fish. Quite honestly, dozens of blanks were filled in from this course that I've attempted to fill myself over the past year with books, blogs, and user groups. In five days, I've gotten a year of on the side learning. It couldn't have been more worth the money." -- Matt Walters, Dec 2009

    "Recently attended Udi's SOA Training in Toronto and have to rank this as the best training I have ever attended. Udi's training was extremely enriching, well structured and well led. Udi's professional experience made this 5 day course very practical. I particularly liked the case studies/reviews that the group engaged in every morning to apply what Udi presented the previous day. Looking forward to applying all the great concepts presented. Will definitely attend future training by Udi." -- Eric Liprandi, Aug 2010

    "I had a pleasure to attend Udi's Advanced Distributed Systems Design with SOA, and must say its genuinely mind blowing experience. Udi's vision of distributed systems rooted in deep understanding of the business together with in-depth knowledge in technology, and deep insight into how people based systems really work. The knowledge I learned in his course is invaluable. Udi communicates the material in a well structured and extremely inspiring manner. I highly recommend this course to anyone who is architecting a distributed system." -- Ed Kreiman, Sep 2010

    Comments
    When
    Mon, Sep 10, 2012, 08:30 AM Start
    Fri, Sep 14, 2012, 05:30 PM End
    Add to my calendar
    Where
    LearnIT
    33 New Montgomery, suite 300
    San Francisco, CA, USA
  • Hosted by Udi Dahan
  • Email this to a friend
  • Event URL
  • When: 10 Sep 2012, 08:30 AM to 14 Sep 2012, 05:30 PM. Where: LearnIT, 33 New Montgomery, suite 300 San Francisco.