|
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
|
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. |
|
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 ? |
|
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? |
|
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?
|
|
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 ?
|
|
Client/Server/Service |
|
|
Consumer/Service |
|
|
Service Agent |
|
|
Correlator |
|
|
Faults contract |
|
|
Client Entities |
|
|
Composite Client |
|
|
Entity Aggregate |
|
|
Aggregated Reporting |
|
|
Orchestrated Choreography |
|
|
Lagacy Bridge |
|
|
Mashup |
|
|
Service Registry |
|
|
CRUDdy Contract |
|
|
RPC over SOA |
|
|
Leaky Contract |
|
|
Technology Bounded Contract |
|
|
Chit-Chat |
|
|
Enterprise Canonical Schema |
|
|
PTP Integration |
|
|
Wofkflow Everywhere |
|
|
Buzzword Driven Architecture |
|
|
Nanoservices |
|
|
Whitebox Service |
|
|
Cross-Service Transactions |
|
|
Tightly Coupled Services |
|
|
Resource Kidnapper |
|
|
Excess Trust |
|
|
Thread per request |
|
|
Senile Service
|
|
|