InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Should We Define SOA Non-Principles?

Posted by Boris Lublinsky on Apr 14, 2010

Sections
Architecture & Design,
Enterprise Architecture
Topics
SOA ,
Architecture ,
Design
Tags
Design Guideline ,
Service Design

 

First there were SOA principles, then came anti-principles. While SOA architects and developers are still arguing what those really mean and how to apply them, in his new post Steve Jones presents a third concept - non-principles. According to Jones, while creating SOA (or any other software implementation for this matter) you typically have to deal with:

  • The principles - what good looks like and is measured against
  • The anti-principles - what bad looks like and is measured against
  • The non-principles - what you really couldn't give a stuff about ...

As Jones explained in his post:

... [while] the non-principles... might sound like an odd concept... it’s one that has really paid dividends for me over the years. While Principles say what you should do and anti-principles say what you shouldn't, the non-principles... is something that you don't give a stuff about. You are explicitly declaring that it’s not of importance or consideration when you are making a decision.... While you can evaluate something against a principle to see if it is good or against a non-principle to see if it is bad the objective of the non-principles is to make clear things that shouldn't be evaluated against.

Translating this in a familiar terms - non-principles is something that is explicitly defined as a non-goal for a given implementation. The introduction of non-principles provides the ability to deliver on time and on budget by ignoring some of the quality requirements, which are not part of the stated goal of a given implementation. According to Jones:

... the non-principles are very context specific and are really about documenting the perceived wisdom that is wrong from the programme perspective. The non-principles are the things that will save you time by cutting short debates and removing pointless meetings... Non-principles clearly state what you will ignore, they don't say what is good or bad because you shouldn't measure against them...

To prove his point Jones gives several examples from the projects he participated in where the use of non-principles was instrumental for project’s success.

Although it is hard to argue about the importance of principles and anti-principles in an SOA implementation, the introduction of non-principles seems slightly artificial. The issue here is that in reality there are no non-principles, but rather implementation goals and consequent architectural tradeoffs. If we take Jones’ first example - "performance not an issue", it does not mean that performance does not matter. What it means is that performance is not the most important architectural goal of the implementation, but there is typically still a performance constraint for a given implementation which has to be met (although the actual number can be relatively high). His next example - "data quality is not important" - again, it does not mean that a new system can contain inaccurate data. It really means that data quality improvements were not stated as direct goal of the project.

It is extremely important to understand what the overall goals of an implementation are and to make appropriate tradeoffs, but it does not seem to qualify as a completely new category - non-principles. Rather, it seems that we need to realize what is really important for a given program and focus on that.

  • This article is part of a featured topic series on SOA
Doing away with Central principles/practices in SOA by aditya yadav Posted
Be sure the business understands by James Watson Posted
I'm somehow pro-experimentation by aditya yadav Posted
Re: I'm somehow pro-experimentation by aditya yadav Posted
  1. Back to top

    Doing away with Central principles/practices in SOA

    by aditya yadav

    I have been an architect for more than a decade but I'm also an Agilist and a part of my work revolves around Organizational Architecture/Restructuring/Culture etc.

    80% os SOA projects fail and everyone says it takes 10-15 years to get a SOA transition right. I don't agree, all it takes is 5-6 months to get on the right track. As a non-principle I would like to suggest "Central Governance", "Central Registries", "Central Service Lifecycle Management" as non-principles. SOA projects don't fail because of poor Governance but rather because of Governance itself. Most central organizational structures/teams/groups fail very soon as they become single points of failures and are easily overwhelmed. Especially in the case of SOA where the coordination effort is enterprise wide. The most scalable software systems and org. structures are ones that are without the concept of one global truth, or one person/team (oracle) who knows or controls all.

    We face a lot of resistance when we talk about these ideas to people other than our existing customers primarily because Central Governance etc. means big business for most vendors. And Companies find it non-intuitive/contrarian as they have see Corporate Governance flow down to IT Governance and then take the shape of SOA Governance and they know no other way of doing things.

    You have to see it to believe it. But since I can't invite everyone to be a part of the action at our clients companies. The next best thing I can offer is for the readers to go through my book "Essays on SOA & EAI - A Pocket Guide" to understand where we are coming from and how we have succeeded in every SOA engagement we have touched in the last 4-5 years. If you agree with what you read you should also look at the pocket guides on leadership and innovation which address other organizational issues.

    Cheers
    Aditya Yadav
    adityayadav Dot com
    Essays on SOA & EAI - A Pocket Guide
    Essays on Leadership - A Pocket Guide
    Essays on Innovation - A Pocket Guide

  2. Back to top

    Be sure the business understands

    by James Watson

    I'm not sure I agree with #1 and #3 is a bit dangerous. The issue I've seen with assuming that you can implement a service against future business rules is #1 these rules are unproven. They may or may not be right. #2 Business owners often don't understand the implications of these kinds of decision and they are often reversed.

    If the author was consulting when that solution was implemented, I would strongly encourage him to follow up with the business and see if who well that went. I've seen many such decisions result in unused and unusable services. While in the consultants mind the project was successful, if the service(s) doesn't provide any value, it's not a success for the company that paid for it.

    This is part of a larger problem I see in IT. The value of the software being produced is often ignored. Often software is developed to meet requirements that have nothing to do with what the company needs. While it's convenient to state that the business will conform to the new package, if you don't know that they actually will (or can) you are just being lazy. It's better to spend more to build something that works than get something that doesn't work on the cheap.

  3. Back to top

    I'm somehow pro-experimentation

    by aditya yadav

    I believe a lot of times the business doesn't know or understand what it needs now or in the future. And hence they would like to experiment with ideas, concepts and rules.

    A SOA project that is not agile enough to support experimentation by the business somehow handicaps business progress and evolution of strategy. I would like to step back and draw an analogy from google. Engineers @ Google are free to setup an experiment (Google facilitates time and resources) and hence the company produces pretty excellent products and strategies.

    Even if the business doesn't understand what it needs, while a healthy debate is helpful the IT should be agile enough to deliver an experiment quickly, refactor it back to original if it doesn't work and be good. Today I don't want to hear the word IT too often but rather Business Technology.

    My 2 cents.

  4. Back to top

    Re: I'm somehow pro-experimentation

    by aditya yadav

    Apologies

    The point I was trying to make is that ...

    "The ability to Experiment" is an essential principle of a SOA Transition.

    Aditya Yadav
    Aditya Yadav & Associates
    Amazon Cloud Computing With C#/.Net
    Amazon Cloud Computing With Java
    Understanding Programming Languages
    Deploying HTML5
    Essays on SOA AND EAI - A Pocket Guide

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.