Technology Musings
  • Blog
    • Article Series Index
  • Ask the Experts
  • About

Home / Blog / Why a Business Process Modeling (BPM) Approach to SOA Usually Fails

Why a Business Process Modeling (BPM) Approach to SOA Usually Fails

Posted on: 09-3-2009 in Service Oriented Architecture (SOA), Software Design

I was having a Twitter conversation with Brenda Michelson (@bmichelson) and Todd Biske (@toddbiske) about the tight coupling in peoples minds between BPM and SOA, and why I find that when people take a BPM centric approach to SOA, it usually ends up not delivering the goods.  So today’s post is about how to properly layer your SOA to include BPM while still yielding all the flexibility and reuse that is the promise of a well done SOA.

For this discussion I will build on the terminology defined in the post entitled “Anatomy of a Service Oriented Architecture”.  I will also use 2 simplified application examples to illustrate some of the pitfalls.

So here is our base example.  Imagine that you need to build  a very simplified Point of Sale System.  It needs to be able to log people in, update customer records and perform a transaction, including updating inventory.  For the sake of argument, I will propose it should look something like this (not 100% accurate but best I could do in 20 minutes).  Sorry the pictures are a bit hard to read.  I need to change templates to get something wider.

Point Of Sale

Furthermore, I will contend that people following a BPM centric approach to SOA are usually likely to design it like this:

Point Of Sale-BPM

and that too often with SOA design we see something like this (which is really bad)

Point Of Sale-BAD

So lets look at these starting from the bottom one which, sad to say represents about 75+% of “SOA” implementations I tend to see.

Point of Sale – Badly Done Case:
This last example is what you get when people decide they need to be SOA, but frankly have no idea how to decompose a problem or do component based design.  It is also what you get when people decide SOA means you just slap a web service interface onto a monolithic legacy app so you can call it SOA to please senior management who have heard all the buzz, and decided they just have to have an SOA by next week to save cost, etc.  This approach buys the company absolutely nothing and in fact only slows down the performance of the existing system and certainly provides no flexibility and reuse at all.

Point of Sale BPM Centric Case:
In the BPM case we will have identified our main processes:

  1. Customer Lookups, etc
  2. Authenticating a User
  3. Processing a Transaction

We would then set about to design service interfaces which align to those and they would look something like this:

1. Customer Service:

1.1 Create Customer
1.2 Update Customer
1.3 Lookup Customer
2. Authentication:

2.1 Create User
2.1 Update User
2.3 Delete User
2.4 Login
3. Transaction:

3.1 Record Transaction
3.2 Void Transaction

Each of those service interfaces more often than not end up being tightly coupled to a back end database which exposes stored procedures which are also tightly aligned to those process services. Its basically a client server design behind the service interfaces, and while I drew them as 3 separate databases supporting each service,  more often then not I will see no decoupling under the covers and it will be one big database.
Now, in this case we have a better design (but still not good) which shows some process orientation and some componentization. This design will offer some reuse, albeit limited.  In addition this system will suffer from some data duplication (consider Paul Michaud as User and Paul Michaud as Customer.  This design would store the records twice for Paul Michaud) which is not desirable in a good SOA.

Point of Sale – Layered Case:
I will contend that this design is optimal (or at least as optimal as I could draw in 20 minutes).  It provides for the same level of BPM support,  but does not require any data duplication and allows for the maximum reuse.  I am not going to go into details on how one would come up with this design in this post but I will come back to that in another post soon.

To prove the point, lets now consider the need to create a second application to do simple contact management.  We would ideally like to reuse our SOA and layer the new application on top of what we already built.  I will contend that for this second application only the layered design would offer any reusable components for this second application.  I will propose the following simple design for the Contact Management Application using SOA.

Contact Management:

Contact Management Simple

Notice that we are using the party service not a Customer Service or anything else.  A contact may be a Company, Organization, Church, Personal friend, etc.  If we had only build Customer Services as in design 2 & 3, which is what the BPM approach would have identified we would not have had a foundation on which to build this second application (unless that second application was very similar to the first one).

Anyhow,  the point is that by focusing on the process we usually fail to identify the necessary Foundation Services or the Fundamental Data Objects on which the SOA should be operating.  I will elaborate on this further in a later post.

As always feel free to leave comments here or on Twitter.com (@techmusings).

Paul Michaud

Paul Michaud is a co-founder and CEO of Nebility, an enterprise solutions company. Paul has been designing and building some of the world’s largest, most scalable and highest performing applications, for over 25 years. Immediately prior to Nebility, Paul was Global Executive IT Architect for Financial Services at IBM. To learn more about Paul check him out on LinkedIn using the button at the top of this author box.

Other posts by Paul Michaud
  • Popular Posts
  • Related Posts
  • Android - Rise of the Amazon Marketplace, Part 2
    Android - Rise of the Amazon Marketplace, Part 2
  • Android - Rise of the Amazon Marketplace, Part 1
    Android - Rise of the Amazon Marketplace, Part 1
  • Real Life Issues With Big Data In The Enterprise - The Issues With Data Completeness
    Real Life Issues With Big Data In The Enterprise - The Issues With Data Completeness
  • Real Life Issues With Big Data In The Enterprise – The Issues With Data Consistency (Or Lack Thereof)
    Real Life Issues With Big Data In The Enterprise – The Issues With Data Consistency (Or Lack Thereof)
  • Android - Rise of the Amazon Marketplace, Part 2
    Android - Rise of the Amazon Marketplace, Part 2
  • Android - Rise of the Amazon Marketplace, Part 1
    Android - Rise of the Amazon Marketplace, Part 1
  • Real Life Issues With Big Data In The Enterprise - The Issues With Data Completeness
    Real Life Issues With Big Data In The Enterprise - The Issues With Data Completeness
  • Real Life Issues With Big Data In The Enterprise – The Issues With Data Consistency (Or Lack Thereof)
    Real Life Issues With Big Data In The Enterprise – The Issues With Data Consistency (Or Lack Thereof)
  • http://www.cloudave.com/link/why-a-business-process-modeling-bpm-approach-to-soa-usually-fails-3-9-2009 Why a Business Process Modeling (BPM) Approach to SOA Usually Fails | CloudAve

    [...] (Cross-posted @ Technology Musings) Posted Under : Design Enterprise Tags bpm design Service Oriented Architecture modeling [...]

  • venkumar99

    Paul,
    I don't think this is an issue of BPM approach having failed the SOA implementation. All BPM is supposed to identify a process. The actual modelling of as a contact or a customer or a user is part of your SOA and how you define them. That is more an abstraction ant really part of a business process.

    I agree that the design you came up with makes more sense. Lot is also going to depend on how the company goes about its BPM/SOA journey. If one dept of group implements SOA without understanding the business context across other functional areas, you will end up a architecture similar to what you mentioned.

  • techmusings

    I agree with you re the BPM. The intent here is not to say that you should not do a BPM exercise as part of the SOA design process. You definitely need to do that. The problem is that most people stop there and end up making their design to process specific.

    As for the performance issue, the answer is it depends. Keep in mind that this is a logical architecture at this point. While we may choose to deploy it in a physical realization that matches this with each component on a seperate server and every call being through a network hop, etc. Also, we have not indicated that each service interface need to be web services (which is slower, but not slow by most people standards (sub 1ms per call typically unless the interface takes big XML data objects in the call). That said, you can do this message based and have very low latency per hop/call (as low as 3microseconds sec with the latest high speed messaging). Either way, a single call to a traditional on disk database is going to swamp the Web Services and the layered network calls. If you want to be low latency the whole design end to end needs to account for that goal. You may put critical service components on a single box to minimize network hops. you may use a binary service interface for thos high performance calls, etc. There are many ways to skin this. The key is to remember that SOA does not require statelessnes, SOAP or REST. SOA applies independant of the technologies we choose to use to implement it.

    Hope that helps.

  • http://www.technologymusings.com/softwaredesign/consideration-for-the-technical-implementation-of-an-soa Consideration For The Technical Implementation of an SOA | Technology Musings

    [...] Why a Business Process Modeling (BPM) Approach to SOA… I was having a Twitter conversation with Brenda Michelson (@bmichelson) and Todd Biske (@toddbiske) about the tight coupling in peoples minds between BPM and SOA, and why I find that when people take a… [...]

blog comments powered by Disqus

Translate This

Translate

Catagories

Tweets

  • .@bmichelson Completely agree with your post. Good architecture should be simple, obvious and clearly meet a business value. #entarch
  • RT I completely agree @bmichelson: my post: Enterprise Architecture Rant #4,892 : Elemental Links http://bit.ly/gM4vVp #entarch #ruckus
  • Real Life Issues with Big Data Part 3 - Completeness http://bit.ly/fna3KH #BigData

Tag Cloud

Architecture Ask The Experts Big Data Business Intelligence CIO Cloud Computing Enterprise 2.0 Enterprise Data Modeling (EDM) Executive Discussions High Availability (HA) High Performance Computing Markets Mobile Nebility Service Oriented Architecture (SOA) Software as a Service Software Design Solution Design Strategy Technology Startups Technology Strategy The Business of SaaS Uncategorized

Recent Comments

  • Bruce Bent II on Android – Rise of the Amazon Marketplace, Part 2
  • Franck MIKULECZ on Consideration For The Technical Implementation of an SOA
  • High Availability Series: Series Outline on The Evolution Of Reliability and High Availability
  • rohanpillai on How To Build an SOA Based, High Performance, Scalable and Reliable Twitter on Steroids
  • rohanpillai on How To Build an SOA Based, High Performance, Scalable and Reliable Twitter on Steroids
Avatars by Sterling Adventures
Copyright 2011 Technical Musings, All Rights Reserved
TwitterStumbleUponRedditDiggdel.icio.usFacebookLinkedIn