Showing posts with label Dead Simple SOA. Show all posts
Showing posts with label Dead Simple SOA. Show all posts

Tuesday, April 30, 2013

"Can Anyone Explain SOA In Simple Terms?"


A few days ago, David Diamond posed a deceptively simple question on one of the LinkedIn Group sites (SOA SIG) - "Can Anyone Explain SOA In Simple Terms?"

The barrage of widely varying responses that followed was, in a way, an eloquent answer to that question!

I've had my own take on SOA for quite a while now, so this gave me the opportunity to validate my model against what other practitioners had to say. And I must say this: I'm more convinced than ever that the industry is horribly confused about SOA. There are those whose understanding of SOA is at a purely technology level (even some of those who profess to understand that SOA is not (just) about technology). And there are others who may understand SOA for all I know, but whose explanations tend to be couched in so much jargon that they're really hard to understand.

In hindsight, David Diamond could not have asked a more insightful question.

Well, this is my blog, so just as history is written by the victors, the one correct answer to David's question is to be found here :-).

Here's what I wrote (put together from more than one post that I made to that topic):

My initial one-paragraph answer: "SOA is the science of analysing and managing dependencies between systems. That means the elimination of unnecessary dependencies and the formalisation of legitimate dependencies into readily understood contracts. The more dependencies there are between systems, the less agile an organisation is (because of the number of related systems that have to change when one of them has to change), the higher its operating costs (because of all the unnecessary extra work to coupled systems) and the higher its operational risk (because of the number of things that could break when something changes). Dependencies exist at all of the BAIT layers - Business, Applications, Information (Data) and Technology. That's why a technology-only view of SOA does not solve an organisation's real problems. SOA should have been called DOT instead ("Dependency-Oriented Thinking")."


After a few days of reading other responses and feeling dissatisfied, I posted again:


"Many of the comments here emphasise reuse as part of the *definition* of SOA. Is reuse a core feature of SOA or just a side-benefit? If the latter, what are SOA's defining features (which is what the original question was about)? Also, while we use the word "services" a lot, how do we define the term?

Let me try and address these two points.

SOA is an organising principle for the enterprise, and the fundamental skill that an architect requires to apply this organising principle is the ability to see dependencies between systems, - to be able to eliminate the ones that shouldn't exist and formalise the legitimate ones into "contracts" maintained in a single place and covering all the dependencies between two systems. This approach greatly reduces the cost of change, improves the speed with which changes are made (agility) and reduces the risk of making changes, all because the number of dependencies (aspects of an interaction affected by a change) are now smaller, one can tell at a glance what they are, and there are no surprises because there are no dependencies outside what is documented by the contract. This is not limited to technology interactions. One can apply this thinking to the design of business processes just as naturally.

When we look through a dependency lens at an organisation, our tasks are quite distinct at its four layers (Business, Applications, Information (Data) and Technology).

At the Business layer, it is more of a BPR (Business Process Re-engineering) exercise, because we end up rationalising processes when we weed out unnecessary dependencies. When we finish, we have a traceability matrix linking the following:

Vision (Our idea of Utopia)
Mission (Our strategy to bring about that Utopia)
Functions (The main groups of activities we need to be doing as part of that strategy)
Processes (The detailed and related sequences of steps comprising each function)
Process Steps (The basic building blocks of these processes)

[At the business layer, we will come across some *potential* reuse when we look at the definition of some of the Process Steps (operations) we arrive at. Only further analysis at the Information layer will tell us if reuse is actually possible or these are independent operations.]

The Application layer is all about grouping "related" operations, and the dependency principle used is that of "cohesion and coupling". In other words, we need to determine which process steps belong together and which do not. This cannot be done independently but must involve the Information (data) layer as well. [That's why architectural frameworks like TOGAF combine the two into a single step (Phase C)].

The Information layer looks at data dependencies (shared models) and classifies data into two groups - "data on the outside" and "data on the inside". "Data on the inside" is the set of internal domain models for operations that other operations do not need to see. "Data on the outside" is what goes "over the wire" between operations.

When we apply the dependency principle of cohesion and coupling to the combined Application and Information layers, we have two ways of grouping operations together. Operations that share a domain model ("data on the inside") coalesce into Applications that are called Products. Operations that share an interface data model ("data on the outside") coalesce into Applications that are called Services. So this is where Services fit into SOA - as a bundle of related operations sharing an interface data model.

The Technology layer deals with "implementation". As others have pointed out as well, implementation need not have anything to do with SOAP, ESBs, etc. We need distinct components to host implementations of exposed operations (Service Containers), to mediate interactions (Brokers) and to coordinate operations (Process Coordinators). Other components merely support these (Rules engines, registries, monitoring tools).

This is SOA :-)."


I would have posted more, but I exceeded the word count for the site, so I had to post my thoughts about the Technology layer separately:


"I must add that when viewed through a dependency lens, the Technology layer often introduces artificial dependencies of its own. There is a reason why many people prefer REST to SOAP. It's because WSDL is a dependency hotspot. Think about it. If a WSDL file describes just one service, and that service comprises 5 operations, each with an input document and an output document, then the version of the WSDL file has a dependency on the version of 10 document schemas. If any one of them changes, the WSDL will have to change! That's why we have so much version churn in organisations.

In addition, because we don't build explicit interface data models with type hierarchies, our operation interfaces are too rigid and low-level, requiring a fresh *version* whenever a new *variant* is to be supported.

A second major dependency introduced by the technology layer is through the ESB, or more correctly, through incorrect use of the ESB. The dependency principle at the Technology layer is to use the right tool for the job and to use it the right way. If we use the ESB to host business logic, we are making it perform the role of a Service Container. If we use the ESB to orchestrate a process, we are making it perform the role of a Process Coordinator. Both of these mistakes create dependencies that reduce performance and increase the cost of change. 

The other ESB-related mistake is its deployment in a hub-and-spokes architecture. Then the ESB becomes both a performance bottleneck and a single point of failure - both symptoms of a needless topological dependency that was created at the Technology layer. IT organisations often ask for funds to buy an ESB because they want to "do SOA", then implement it in a topology that creates dependencies and thereby violates SOA principles. What an irony! 

So one of the reasons why SOA has acquired a bad name is that its practice often introduces dependencies at the Technology layer even as it tries to reduce dependencies at the Business, Application and Information layers. Worse, because organisations are often too technology-focused, they don't do enough of the dependency-reduction at these higher layers and their net effect is to introduce new, technology-related dependencies to an existing set of business processes and data structures. The net effect of SOA on such organisations is then entirely negative.

I'm in the process of writing a white paper on "Dependency-Oriented Thinking" based on my experiences with SOA in large organisations. Stay tuned :-)."


Well, this represents my current thinking about SOA in a nutshell (a fairly large nutshell, I'll grant). The coming white paper on Dependency-Oriented Thinking will elaborate on these points. The workshops on "Dead Simple SOA" that I've been conducting through my company (Eigner Pty Ltd) along with my colleague Rahul Singh, address these very topics.

Saturday, December 08, 2012

Learnings From My "Dead Simple SOA" Workshop on Saturday


As announced earlier, the workshop that we (my business partner Rahul Singh and I) organised on "Dead Simple SOA" took place yesterday (Saturday the 8th Dec), and here's what we learnt from it.

Fundamentally, the ideas we are trying to popularise are seen as useful and worth pursuing. That was a very welcome piece of validation. However, we do need to refine our message and target our audience better.

We got largely positive feedback from the two participants (the low registration rate is itself a symptom of poor messaging and targeting), but also some valuable feedback on how we could improve it.

1. There are two sets of messages in the workshop, and this dilutes its appeal. This is because the draft white paper on which the workshop is based ("Slicing the Gordian Knot of SOA Governance") itself deals with two separate (though related) themes.

One theme is "How to do SOA". This had a number of new and useful ideas that the participants commented favourably on.

The other theme is about "How to do SOA Governance and Management". While the ideas behind this were also appreciated, here's what seemed to be lacking:

a. This topic is of interest to a different group of people, - perhaps managers and enterprise architects, whereas "How to do SOA" is of interest to solution architects, designers and perhaps even developers.

b. There is likely to be unease over the fact that my method challenges the accepted industry view of SOA Governance as a technology-related practice, which creates dissonance and may make people reluctant to pay for a "heterodox" course. If I want my approach of governing the entire enterprise through dependency-oriented thinking to be adopted, I should rename it to something else rather than try and redefine the term "SOA Governance". That train has left the station.

I seem to have a choice here. In the candid words of one of the participants, I have to "choose whether I want to be a philosopher or to build a business". Because if I want to build a business, his suggestion was to quietly align with the industry model instead of trying to challenge it, and then make money by offering to train people in the "universally accepted way". [I do think I can carve out a niche by being different without aligning submissively with conventional thinking, but there is a point here. A "flanking" strategy of coining a new term may work better than a "head-on" strategy of challenging a widely-held set of views.]

2. We need to improve our marketing, both in reach and in targeting. I don't know if we managed to reach most of our target audience with news of the workshop, and whether they could identify themselves as the target based on the workshop brochure. We relied on our membership of various LinkedIn groups to reach the professionals we were connected to, and some of our friends helped out by relaying the message to their contacts, but I'm not sure what proportion of our target audience is reached in this way. Some more research and refinement is required here.

[Although we didn't get direct feedback on this aspect, I believe the price we are charging for a full-day workshop is reasonable ($450 plus 10% GST = $495, with an early-bird price of $400 plus GST = $440), and this includes morning and afternoon tea as well as lunch. The room and audio-visual equipment that we rented at the UTS Haymarket campus was OK, but not great. The air-conditioning couldn't be adjusted, and the data projector's screen obscured the fixed whiteboard, making it impossible to use both simultaneously. The catering was satisfactory in terms of quality but their commercial terms were somewhat unfavourable. We had to pay for a minimum of 10 people regardless, which was wasteful.]

Action items:

1. Over the next few days, I will split my draft white paper into two parts, one dealing with "How to do SOA", aimed at solution architects and designers, and the other dealing with "How to do SOA Governance and Management", aimed at enterprise architects and managers. In the latter, I will touch upon the differences between my approach and the industry definition of "SOA Governance", and use a different name for mine.

2. Future workshops will be better targeted. We will design our SOA workshops to focus on one or the other of the above topics, not both combined.

3. We will look for newer and better ways to communicate news of forthcoming workshops to industry professionals. Some brainstorming will happen in the weeks ahead.

Tuesday, November 13, 2012

My Sydney Workshop on "Dead Simple SOA"


Those who've been following my writings over the past few years would know that I deeply believe two things:

1. SOA is a fundamentally important way of organising systems that leads to improved business agility, sustainably lower operating costs and significantly lower operational risk.

2. The "SOA industry" has needlessly complicated SOA in a bid to sell technology and consulting services, and this has caused many business and IT professionals in customer organisations to become disillusioned with it.

I've been working on a white paper that will comprehensively address how to "do SOA" right, and this will be released in the next few weeks.

I've also decided to take the plunge and take my ideas to market, so to speak. Over the past few years, I have written about many topics (SOFEA/Presentation, LIMA/Identity Management and SOA, of course, including the REST flavour of its technology implementation), and these have received very positive feedback, but also lots of follow-up questions. So I thought (entirely without vanity) that perhaps practitioners could benefit by being able to engage with me in workshops, think and talk through these ideas so they can go away with a much clearer understanding of these concepts. A full working day of "face time" with an author can be quite useful, I figured. So I've set up a company (Eigner Pty Ltd) dedicated to IT Architecture Education, in partnership with an ex-colleague, Rahul Singh.

As our debut offering, Rahul and I have organised a one-day workshop on "Dead Simple SOA" in Sydney on Saturday the 8th of December, 2012. (We have regular jobs during the week, so weekends are the only times that work for us.)

Who should attend? Architects and senior designers. It's not aimed at web service developers.

Topics:

  • Learning “Dependency-Oriented Thinking”
  • The difference between SOA Governance and SOA Management, and how to do each
  • What are “services”? Defining service boundaries using the Cohesion principle
  • “Data on the Outside” vs “Data on the Inside” – Interface design using the Coupling principle
  • The 3 core components of a SOA ecosystem based on a Web Services approach
  • Implementing enterprise “-ilities” (security, reliability, asynchronous communications) with REST

We've booked a classroom at the UTS Haymarket campus, and have also organised catering for lunch (sandwiches) and tea (mid-morning and mid-afternoon), so this should be a fairly standard training experience from a logistical perspective. However, I'm hoping the content will be anything but conventional. I'm audaciously aiming to change the way people think about SOA and send them home with a powerful new set of conceptual tools that they can use immediately.

We're pricing this one-day workshop at a very reasonable $495 inclusive of GST. If someone registers before the 24th of November, that's $440. We don't want more than 10 people in a single session, because it's going to be interactive with hands-on exercises and I'll be going around the room and having one-on-one chats with the participants. I wouldn't be able to do every participant justice if we had more than 10 in a class.

So if anyone is interested, or if you know someone who would be interested, please contact us by mailing courses@eignertech.com.

The course brochure is here.