Blog Home  SOA patterns & Anti-Patterns RSS 2.0  
SOA Patterns, by Arnon Rotem-Gal-Oz
An architectural vie of SOA -  SOA patterns & Anti-Patterns

Everybody seems to be talking about Service Oriented Architecture these days. While there's a lot of material and guidance on the Service Orientation (SO of SOA) and the business aspects of SOA, the Architecture (the A of SOA) is regrettably somewhat neglected. This is a shame, since at the end of the day, us, the developers, architects, project managers and development managers are left to actually realize all these SOA dreams and to somehow build working, robust and viable Systems - and we are missing this guidance.

The SOA Patterns book, aims to fill this gap and provide practical architectural advice and guidance you can use to build services today. I am talking about real services, ones that exhibit quality attributes like flexibility, availability, scalability etc.

I've decided to use Patterns and Anti-patterns to describe the solutions to the various SOA challenges. I have come to look at patterns and anti-patterns as one of the best ways to express architectural concerns and solutions. Compared with “best practices” that allegedly always work, patterns and anti-patterns also provide a context for the problem as well as covering the forces and consequences of both the problem and the solution. I've also added 2 important sections to each pattern. One that covers technology mapping (which available technologies can be used to implement the pattern and the implications of the mapping) to help bring the patterns down to earth and a quality attribute scenarios section to help identify relevant patterns to challenges you face.

You can use this site to monitor the progress of the book as I write it. Also every now an then I'll publish here drafts of selected patterns. Additionally you can purchace the book now trough Manning Early Access Program (MEAP) and get access to the complete chapters as I write them.

Please  send any comments or questions to soa@rgoarchitects.com

Chapter 1 - Solving SOA challenges with Patterns; - Download the complete Chapter 1 draft from Manning Publications (Free)
Software Architecture SOA is an architectural style for distributes systems. The first part of the chapter explains  what software architecture is, and the inputs an architect can consider to determine an architecture.
Challenges of Distributed Systems What are distributed systems, what makes them complicated
SOA - An Architectural Style   How SOA relates to architecture and distributed systems. SOA components, main quality attributes and the relation to the business aspects.
Chapter 2 -  Structural Patterns
Edge Component

How can you handle cross cutting concerns like multiple technologies, protocols, changing policies etc. while keeping the service’s focuses on its core concerns – i.e. the business logic.

Service Host

How can you make your services adaptable to different configurations easily and save yourself the repetitive and mundane tasks of setting listeners, wiring components etc.

Active Service

How can you increase service autonomy and handle temporal concerns?

Transactional Service

How can a service handle messages reliably ?

Workflodize How can a service cope with frequent changes in business needs (increase agility) and hanle long running operations ?
Chapter 3- Performance, Scalability & Availability Patterns
Decoupled Invocation

How can a service handle peaks and continuous high-loads without the service failing?

Parallel Pipelines How can a service handle high request loads (high throughput) for stateful services?
Gridable Service How can a Service handle computing intensive tasks in a scalable manner?
Service Instance How can you make (stateless) services scalable in a simple and cost-effective way?
Virtual Endpoint How do you provide location transparency for services?
Blogjecting Watchdog How can you know the state of the service and increase overall availability?
Chapter 4 - Security & Mangeability Patterms
Secured Message How can you secure specific messages or parts of messages that are exchanged between two or more services?
Secured Infrastructure How can you increase the overall security of message exchange between services with minimal impact on the services involved?
Service Firewall - (published on InfoQ) How can you protect a service against detect malicious incoming messages and prevent information disclosure on outgoing messages?
Identity Provider How can you get an efficient authorization and authentication scheme in an SOA?
Service Monitor How can we identify problems and faults in services, attend them to ensure the overall business’s availability?

Chapter 5 - Service Interaction Patterns
Request/Reply What’s the simplest way for a service consumer to interact with a service?
Request/Reaction How can you decouple in time the service from its consumers?
Saga How can we get transaction-like behavior or complex interactions between services without transactions?
Reservation How can we provide guarantees without locking internal resources on behalf of external services?
Inversion of Communications How can we avoid the coupling and strictness of Sagas and maintain rich interaction of services?
ServiceBus How do we make services interact in a decoupled manner over different protocols, dynamic configurations and routing ?

Chapter 6 - UI Interaction Patterns
Client/Server/Service
Consumer/Service
Service Agent
Correlator
Faults contract
Client Entities
Composite Client

Chapter 7 - Service Composition Patterns
Entity Aggregate
Aggregated Reporting
Orchestrated Choreography
Lagacy Bridge
Mashup
Service Registry

Chapter 8 - Contract Anti Patterns
CRUDdy Contract
RPC over SOA
Leaky Contract
Technology Bounded Contract
Chit-Chat
Enterprise Canonical Schema
PTP Integration

Chapter 9 - Service Anti Patterns
Wofkflow Everywhere
Buzzword Driven Architecture
Nanoservices
Whitebox Service
Cross-Service Transactions
Tightly Coupled Services

Chapter 10  - Performance Anti Patterns
Resource Kidnapper
Excess Trust
Thread per request
Senile Service

Appendix A : Patterns by Quality Attributes

Appendix B: Putting it all together
Copyright © 2006 Arnon Rotem-Gal-Oz. All rights reserved.