InfoQ

News

InfoQ Article: 10 Principles of SOA

Posted by Floyd Marinescu on Feb 27, 2007 02:42 AM

Community
SOA
Topics
Web Services
Tags
XML ,
Patterns ,
Web services ,
Best Practices
In this article, InfoQ's Stefan Tilkov, consultant at innoQ, proposes 10 principles to serve as a basis for SOA discussions. The list starts with Don Box's four tenets (service with explicit boundaries, shared contract and schema, policy-driven, and autonomous) and expands them to include wire formats, document orientation, loose coupling, standards compliance, vendor independence, and metadata.

Read 10 Principles of SOA.
Bravo! by Rajeev Kozhikkattuthodi Posted Feb 27, 2007 4:24 PM
Re: Bravo! by Stefan Tilkov Posted Feb 27, 2007 5:04 PM
Good and interesting, however by graham berri Posted Mar 6, 2007 12:39 PM
Re: Good and interesting, however by Stefan Tilkov Posted Mar 6, 2007 4:47 PM
Re: Good and interesting, however by graham berri Posted Apr 13, 2007 10:31 AM
Very Good! by Carlos Rodriguez Posted Mar 12, 2007 3:29 AM
  1. Back to top

    Bravo!

    Feb 27, 2007 4:24 PM by Rajeev Kozhikkattuthodi

    That was very well written piece. I couldn't have agreed more with the points that you have brought up. My favorite one is the one about document-centric interaction paradigm. In my experience atleast, it is one of the most difficult, yet conceptually elegant concepts to get a "buy-in". Especially from IT/IS departments who have been so habituated to RPC. OTOH, I feel that probably you could also have touched upon the notions of Service Granularity and Service Governance. Or do you think it kind of "folds into" one of the above tenets?

  2. Back to top

    Re: Bravo!

    Feb 27, 2007 5:04 PM by Stefan Tilkov

    With service granularity, I would claim it's sort of implied in document-orientation that services are coarse-grained. With regards to governance, you are probably right: the only "real" reference is the metadata aspect. This would probably be worth expanding -- I'll think about it. Thanks for the feedback!

  3. Back to top

    Good and interesting, however

    Mar 6, 2007 12:39 PM by graham berri

    I'd like to see more to resolve the confusion around sync v async. The consumers view of async (I can carry on) is different and separable from from the services view (I can queue up requests). The fact that there is a buffer for requests does not mean the consumer either can or should carry on without a reply.

  4. Back to top

    Re: Good and interesting, however

    Mar 6, 2007 4:47 PM by Stefan Tilkov

    Good point. I like to distinguish between blocking and non-blocking (on the client side) and synchronous vs. asynchronous (on the communication side). These are orthogonal to each other - i.e. one can do blocking asynchronous, non-blocking asynchronous as well as blocking or non-blocking synchronous calls. Each have their value.

  5. Back to top

    Very Good!

    Mar 12, 2007 3:29 AM by Carlos Rodriguez

    Good work!!.. It is very good principles!.

  6. Back to top

    Re: Good and interesting, however

    Apr 13, 2007 10:31 AM by graham berri

    Stefan Let me challenge you a bit more. I propose you can trim point 1 down quite a bit! It says: Everything needed by the service to provide its functionality should be passed to it when it is invoked. The only way into and out of a service are [is?] through messages. I have seen others say much the same. And people who already know the meaning may not notice, but surely the words are misleading? The fact is that a service may not get all it needs from the invocation message. E.g. it may have to query a database before it can begin to process the input message. And there are others ways out of and into a service. E.g. when it queries that database it might do so by sending a message to what some call a data service*, or it might issue a remote procedure call, or (I guess) it might be actually be an SOA-enabled stored procedure. * BTW, how can a client distinguish a data service from a business service? I don't think there is in fact a distinction between them, only some designer expectations about where the service is deployed.

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.