InfoQ

News

Technology-agnostic approach to Service Oriented Architecture: back to the essence of SOA?

Posted by Sadek Drobi on Sep 26, 2007 12:07 PM

Community
Architecture,
SOA
Topics
Business Process Modeling,
Enterprise Architecture,
Design
Tags
Business Architecture,
SOA Adoption

Service Oriented Architecture has become one of mainstream practices in enterprise software development. However, according to Dan North, the adoption of SOA has been shaped by tools offered by software vendors whose interest is "to emphasize the complexity of SOA and then provide a timely and profitable solution.” As a result, decisions of many SOA architects have been driven by technological considerations instead of focusing on mapping and modeling core business scenarios, which is the essence of SOA approach.

In his article, Dan North shows how to design an SOA in “a technology-agnostic” way. In order “to remove any reference to computers or modern technology”, he chooses to use the example of vacation booking process as it “would have occurred in a 1950s company”. In this business scenario, an employee Bob proceeds with his vacation booking that has to be approved by the personnel department. Step by step, Dan North illustrates how to identify SOA requirements based of a thorough mapping of business processes:

In SOA terms, the personnel department is a service provider. One of its services is scheduling annual leave. Bob is a client or consumer of the service. The vacation request form describes a service contract. The filled-in form is then an asynchronous message—Bob doesn’t suspend his activities waiting for the reply to come back; instead he gets on with his regular work.
The internal mail is a message transport — an unreliable one in this instance. Luckily, Bob has an error-handling protocol, namely a timeout. After a week, his calendar alerts him to call the personnel department. The telephone call is a synchronous interaction—he is on the telephone in real time. He then implements an error-correcting strategy, which is to resend the message.

While talking about the error-handling strategy, North provides even more examples of SOA requirements defined through business process modeling. If someone updates vacation records to reduce the number of leave days before the vacation approval and then the request goes missing - as in Bob's case - it could result in inconsistencies with the records. Understanding this drives to the conclusion that “the vacation-booking service has to be transactional”. A request may also fail for some business reasons, e.g. the allowance is used up, a signature is missing, etc. In SOA terms this is referred to as “semantics” or “business rules”. In this case a response should be sent back to the person concerned returning the reason of the failure. In a similar way, North shows how the business context defines SOA requirements for correlation of responses, availability of services, security or service evolution.

According to North keeping focused on real business issues allows “to separate the “what” from the “how””:

In fact, a true service-oriented architecture should only have services with a direct counterpart in the business; otherwise they cannot possibly be modeling a business process.
Abstract technical concepts, such as a “data service” or a “replication service,” don’t make any sense in business terms. (There may be shared modules or libraries to provide common technical functionality, but these should not be implemented or referred to as services.)
In the same line, North argues that architects should avoid defining a universal domain model if in the reality there are two separate domains. For instance, “vacation” doesn’t mean the same thing to Bob and to the personnel department clerk in charge of leave requests. For the former it relates to “palm trees” and “long walks on the beach”, while for the latter “it refers to the business process around booking that time”. North believes that these two domains should be represented as such whereas “vacation” should be used as a business concept that “ties together all of the finer-grained domain models behind each service”. Not only would it better reflect the reality but it would also have advantages in terms of architecture:

The service contract is then expressed in terms of enterprise-level business concepts, such as a vacation or a dispatch or a sales order, which again decouples the service consumer from the service provider and allows them to evolve independently, while still able to communicate in a common language.
Dan North is fully aware that designing an SOA through business processes modeling is "only the first step to implementing a fully working SOA". However, focusing on business issues helps “to understand [the] intent of the service [and] to investigate any business complexity independent of technical issues”. This way, SOA requirements are defined without being constrained by technical decisions, which can always be "mapped back to identifiable business value in terms of the business process" that is being modeled.

1 comment

Reply

q by berkay NiQuiL Posted Jun 30, 2008 5:26 PM
  1. Back to top

    q

    Jun 30, 2008 5:26 PM by berkay NiQuiL

Exclusive Content

Rationalizing the Presentation Tier

Thin client paradigm characterized by web applications is a kludge that needs to be repudiated. Old compromises are no longer needed and it's time to move the presentation tier to where it belongs.

Agile Project Management: Lessons Learned at Google

In this presentation filmed during QCon 2007, Jeff Sutherland, the creator of Scrum, talks about his visit at Google to do an analysis of Google's first implementation of Scrum.

AtomServer – The Power of Publishing for Data Distribution

In this article, Bryon Jacob and Chris Berry introduce AtomServer, their implementation of a full-fledged Atom Store based on Apache Abdera, which is now available as open source.

An Introduction to Virtualization

It is easy to think that virtualization applies only to servers. In reality the recent resurgence of the concept is also being applied to networking, storage, and application infrastructure.

REST Anti-Patterns

In this article, Stefan Tilkov explains some of the most common anti-patterns found in applications that claim to follow a "RESTful" design and suggests ways to avoid them.

Choosing between Routing and Orchestration in an ESB

In this article, Adrien Louis and Marc Dutoo discuss the differences and relative merits of using orchestration vs. routing in a typical ESB setup, and discuss various implementation options.

Enterprise Batch Processing with Spring

Wayne Lund discusses batch processing, Spring Batch objectives and features, scenarios for usage, Spring Batch architecture, scaling, example code, failures and retrying, and the future roadmap.

User Story Estimation Techniques

Developer Jay Fields draws on his experiences as a ThoughtWorks consultant to describe effective user story estimation techniques.