Udi Dahan and Advanced Distributed Systems Design with SOA

Organiser
OpenSource & Agile Community Events
Date
Mon, 15 Feb 2010, 09:00 - 11:00 (Add to calendar) GMT
Venue
(Exact location not available) , London, GB
Cost
Free

Now, we have all heard of (or should I say 'from') Udi Dahan. What would you give to to be taught by the master himself?! Well here's the perfect opportunity! We here at Skills Matter proudly announce that we will be having Udi over to teach a 5-day course the Advanced Distributed Systems Design with SOA.

As we can appreciate- 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.


LEARN HOW TO:
* Avoid common pitfalls in distributed systems
* Use loosely coupled messaging communication
* Identify and allocated business logic to services
* Decompose services into layers, tiers, assemblies, and processes
* Design for service management and monitoring in production environments


PROGRAMME:
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

Module 6: 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

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

Module 8: 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

Module 9: Service Layer – Domain Model Interaction
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:

* 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.


Register today:

You might also like...

Comments

Other nearby events

Map

Contribute

Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

Our tools

We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

“Debuggers don't remove bugs. They only show them in slow motion.”