What is SOA, really? 48

Posted by Uncle Bob Wed, 11 Apr 2007 12:17:00 GMT

The good news is, you probably already know. The bad news is, you probably know too much. This article describes Service Oriented Architecture in a simple and easy to understand way that is devoid of buzzwords and vendor spin. It’s the introduction to SOA that you haven’t been able to find anywhere else.

There are things in a business that don’t change very often. Gas stations in the U.S., for example, still sell gasoline by the gallon. Restaurants still sell meals from a menu. Dentists still sell cleanings every 6 months. Every business has these aspects that don’t change very frequently. They often represent a huge part of the business. We’ll call these things the _core business functions.

There are other things in a business that change very frequently. Prices, tax rates, catalogs, new products, new marketing campaigns, advertising, new business areas, new customer areas, etc. Indeed, businesses must be able to change, and change quickly, in order to survive. And yet, it is vital that those changes do not adversely affect the core business functions.

Software developers have known for years that software that changes frequently should be decoupled from software that changes infrequently. When applied to individual programs and systems this principle is sometimes called The Common Closure Principle. When it is applied to the information management of an enterprise, it is called SOA.

SOA is the practice of sequestering the core business functions into independent services that don’t change frequently. These services are glorified functions that are called by one or more presentation programs. The presentation programs are volatile bits of software that present data to, and accept data from, various users.

To make this clear, imagine an internet store-front. Customers use a browser to talk to the presentation software that displays the store’s website. The presentation software interprets the gestures of the customer and invokes services that do things like acquiring the data for the current catalog, or registering the customer’s order. Note that the services have no idea they are talking to a website. They could just as well be talking to a thick client, or a 3270 green screen. They simply accept and return data in a standard format that the web system happens to be able to use.

That’s really all there is to it. The rest of SOA is just a matter of details. At the highest level, SOA is nothing more (and nothing less) than separating changeable elements from unchangeable elements. But why is this important?

Consider that internet store-front again. It presents the user with a catalog, allows the user to move items into, and out of a shopping cart, and accepts the eventual order. The presentation of these concepts is very volatile. Marketing people are likely to want to change it frequently. For example, they might want to change from a shopping cart metaphor to scrollable receipt on the sidebar. They may wish to present more or less descriptive data in the product list. They may want to experiment with different colors, font-faces, and layouts. Indeed, it’s feasible that they’ll want to try applets, JStart clients, Ajax, and a myriad of other presentation options. But none of this has anything to do with the core business functions encapsulated by the services. Those services that acquire catalogs and register orders remain unchanged despite all the presentation thrashing. That’s why the separation is important. It protects the information processing assets of the business from the constant jitter and spin of the presentation.

But presentation is not the only thing that jitters and spins. So do the business processes. Again, consider our store-front. Perhaps our business has decided to offer fine wines as one of the products it sells. Selling alcohol requires that the age of the customer be verified. Let us say that we have a service that provides this verification. This service must be called for any order that contains alcohol products. The decision to call this service is neither a presentation decision, nor a service decision. Rather it is part of the business process for a particular kind of order. Business processes are volatile and they breed like rabbits. As businesses evolve they add more and more steps and forks to their business processes. The services being used by those processes don’t change much; but the pathways through the processes do. Therefore we want to separate the business process from the services and from the presentation. Smalltalkers had a name for this separation when it appeared in a single program. They called it Model-View-Controller.

Notice that we have yet to mention even one of the plethora of technologies that are so commonly associated with SOA. That’s because SOA is not about any particular technology. Rather it is a design philosophy that decouples well heeled business functions from volatile processes and presentations. It is the MVC of enterprise software.

In my next blog on this topic, we’ll look at the next level of detail in an attempt to understand HOW services can be constructed, and how the decoupling of presentation, process, and functions can be achieved.

Comments

Leave a response

  1. Avatar
    t_r_siri@yahoo.co.in about 1 hour later:

    Actually SOA is Service Oriented Architechture. This kind of architechture is used for prototype model. whatever explained above about SOA. those requirements are continously changing and for the continous changing requirements we are going to use prototype model and for that model architechture may used is SOA.

  2. Avatar
    anonymous@hotmail.com about 3 hours later:

    That sentence caused an “out of stack space” error t_r_siri.

  3. Avatar
    orcmid about 4 hours later:

    Nice treatment around the connection of SOA and separation of concerns.

    The link to the “What is OOD?” material is terrific. I’d not seen that before, and here I’ve been fumbling around doing it on an ad hoc basis. Now I can recalibrate against a disciplined view of it. Great stuff.

  4. Avatar
    shashank@chowdhury.name about 5 hours later:

    Great presentation. Shall wait for the next in the series.

  5. Avatar
    Chris about 19 hours later:

    Fantastic post – can’t wait for the next one :-)

  6. Avatar
    lumpy 2 days later:

    I’d go even further and say that SOA isn’t just “separating changeable elements from unchangeable elements” but separating as many things that can logically/functionally be separated, regardless of whether they’re changeable or not. Having the different pieces separated allows you to more easily test them, develop them, modify them, run them on different servers, etc.

    To use your on line store example, I can think of many parts that can be separated, regardless of whether or not they change: product upload, product management, order downloads, customer management, customer list download, the shopping cart (adding and removing items), product presentation, shipping options management, and so on.

  7. Avatar
    1073X 8 days later:

    It is a good idea that “separating as many things that can logically/functionally be separated”. But there would be some problems to make them working together.Give it a rule is helpful.Perhaps, SOA.

  8. Avatar
    Larry Guger 16 days later:

    Well done, however I would like to clarify on the early example used such that although the price of gasoline may change frequently the need to retrieve the price of gasoline would be a core business function. The reason I want to make this distinction is to not confuse the benefits of a service to provide consistent, reasonably stable functionality with the inconsistent, unstable information that the service provides.

    Quite often a stable service is particularly useful for serving up often changing data to promote consistent data across the enterprise. This moves an enterprise closer to “one version of the truth”.

  9. Avatar
    nqdq@hotmail.com 19 days later:

    It occurs to me that the more that is explained about SOA and what it means to the IT Systems Architect, the less I believe that there is anything new about it all.

    As I was walking with my girl friend last Friday morning, I reminded her that she is my “Dream Angel”. She replied that I should consider raising my “standards a bit higher”. Of course, I was confused and I still am. If she really IS my everything, then how can I raise my “standards” any higher? It’s not possible!

    SOA is like my dream angel (you are telling me), then why am I as a long time systems architect confused about what is being said here? In my opinion, there is nothing new here, just a redefinition of what we have been doing the last twenty years I’ve spent as an Systems Analyst, implementing routines that are reusable and common in applications.

    p.s. I am in love with my dream angel.

  10. Avatar
    Evert 19 days later:

    Note that in dutch, SOA is the abbreviation for a sexual transmittable disease .. not to be confused

  11. Avatar
    chuck_forbes@hotmail.com 20 days later:

    Perhaps we’re operating on a smaller scale in my state agency, but I haven’t been able to comprehend why I would need to create re-usable components – with Web Services. We build re-usability when we need it, but it’s usually within objects at the database level, and all of our software tools can access the database. Am I planning for the possibility that we may replace the database, so I should be pro-active and replace it with a technology (Web Services) that may also have an uncertain future?

    Plus, I’m always wary when I read articles on the miracles of SOA and a large company is mentioned where they’ve implemented “over 70 Web Services”. 70? For a large company? That sounds like it’s either tough to design, implement, or even devise, a Web Service.

    -=cf

  12. Avatar
    Kathy 23 days later:

    thanks for the info! more..blogs

  13. Avatar
    krishnapsi@mailcity.com 2 months later:

    Thanks for Info, will wait for continuation….

  14. Avatar
    ramacosta@prodigy.net.mx 2 months later:

    Great stuff! Your explanation is by far the simplest I’ve seen about SOA. I partially agree with nqdq@hotmail.com about that there is nothing new about SOA. I think the approach is not new. In fact, I’m sure it is the ever-dream-enviroment for any developer, but the difference is that today is achievable and was not just a few years ago. The real challenge is about taking really the advantage of this era and have the ability of developing really SERVICE ORIENTED products.

  15. Avatar
    mallesha_dh@yahoo.co.in 3 months later:

    It seems to more about MVC architecture rather than SOA.

  16. Avatar
    Reetesh 3 months later:

    Nicely put, in such a simple manner… Awating your next article.

  17. Avatar
    nehmek07@yahoo.c.in 4 months later:

    Very simple and Great explanation.

    Adding to it, SOA is move towards creating reusable components at enterprise-level, irrespective of applications and different business aspects. Later this can be thought of world-wide components across Industries, business and domains… etc.,

  18. Avatar
    benjose@hotmail.com 4 months later:

    A very good blog on SOA, which emphasizes the need to seperate the main business functions from the dynamic fluffs that get added/substracted from time to time. I wonder if the concepts of each function being a service, evolved from earlier concepts like CORBA or COM or DCOM itself. -Ben

  19. Avatar
    jessn 4 months later:

    SOA is an abbreviation for “Service Oriented Architechture” (as mentioned in one of the other comments). It is in the matter of fact old wine poured into new bottles. Such an architecture has existed for several years, but it has not been widely accepted among R/D organizations for very long.

  20. Avatar
    sathheesh 4 months later:

    Very informative

  21. Avatar
    AKP 4 months later:

    Fantastic article….......the explanation was sweet and simple. I had attended a seminar by IBM which didn’t give as clear picture as this article has…..Cheers!!!

  22. Avatar
    apurva_yadav@yahoo.com 4 months later:

    Hello, I want to do research on SOA .will u please help me getting some information

  23. Avatar
    SOA Manager 5 months later:

    Fantastic article! Makes it very easy to understand the core tenets behind SOA.

  24. Avatar
    Conor Moran 5 months later:

    After reading the article, one thing that I think needs clarification is: “SOA is the practice of sequestering the core business functions into independent services that don’t change frequently.”

    Why is it important that the services are independant given that the services don’t change frequently? I guess independent means that the services should be “loosely coupled” and I think that most SOA definitions I read require this, but it doesn’t seem very important in your article…

  25. Avatar
    Nags 5 months later:

    Learn About All Things SOA:: SOA India 2007:: IISc, Bangalore (Nov 21-23)

    Aligning IT systems to business needs and improving service levels within the constraints of tight budgets has for long been the topmost challenge for CIOs and IT decision makers. Service-oriented Architecture (SOA) provides a proven strategy to clearly address both of these objectives. Creating more agile information systems and making better use of existing infrastructure are two leading factors that are boosting SOA adoption across large, medium, and small Indian industries from the BFSI, Retail, Telecom, Manufacturing, Pharma, Energy, Government and Services verticals in India. If you are an IT decision maker belonging to any of these verticals, SOA India 2007 (IISc, Bangalore, Nov 21-23 2007) presents a unique opportunity to gather cutting-edge business and technical insights on SOA and other related areas such as BPM, BPEL, Enterprise 2.0, SaaS, MDM, Open Source, and more.

    At SOA India 2007, acclaimed SOA analysts, visionaries, and industry speakers from across the world will show you how to keep pace with change and elevate your IT infrastructure to meet competition and scale effectively. The organisers are giving away 100 FREE tickets worth INR 5000 each to the first 100 qualified delegates belonging to the CxO/IT Decision Maker/Senior IT Management profile, so hurry to grab this opportunity to learn about all things SOA. You can send your complete details, including your designation, e-mail ID, and postal address directly to Anirban Karmakar at anirbank@sda-india.com to enrol in this promotion that is open until 12 October 2007.

    SOA India 2007 will also feature two half-day workshops on SOA Governance (by Keith Harrison-Broninski) and SOA Architecture Deep Dive (by Jason Bloomberg). If you are an IT manager, software architect, project leader, network & infrastructure specialist, or a software developer, looking for the latest information, trends, best practices, products and solutions available for building and deploying successful SOA implementations, SOA India 2007’s technical track offers you immense opportunities.

    Speakers at SOA India include:

    • Jason Bloomberg, Senior Analyst & Managing Partner, ZapThink LLC
    • Keith Harrison-Broninski, Independent consultant, writer, researcher, HumanEdJ
    • John Crupi, CTO, JackBe Corporation
    • Sandy Kemsley, Independent BPM Analyst, column2.com
    • Prasanna Krishna, SOA Lab Director, THBS
    • Miko Matsumara, VP & Deputy CTO, SoftwareAG
    • Atul Patel, Head MDM Business, SAP Asia Pacifc & Japan
    • Anil Sharma, Staff Engineer, BEA Systems
    • Coach Wei, Chairman & CTO, Nexaweb
    • Chaitanya Sharma, Director EDM, Fair Isaac Corporation

    A partial list of the sessions at SOA India 2007 include:

    • EAI to SOA: Radical Change or Logical Evolution?
    • BPEL: Strengths, Limitations & Future!
    • MDM: Jumpstart Your SOA Journey
    • Governance, Quality, and Management: The Three Pillars of SOA Implementations
    • Building the Business Case for SOA
    • Avoiding SOA Pitfalls
    • SOA Governance and Human Interaction Management
    • Business Intelligence, BPM, and SOA Handshake
    • Enterprise 2.0: Social Impact of Web 2.0 Inside Organizations
    • Web 2.0 and SOA – Friends or Foe?
    • Achieving Decision Yield across the SOA-based Enterprise
    • Governance from day one
    • Demystifying Enterprise Mashups
    • Perfecting the Approach to Enterprise SOA
    • How to Build Cost Effective SOA. “Made in India” Really Works!


    For more information, log on to http://www.soaindia2007.com

  26. Avatar
    Yesudas 6 months later:

    Gud presentation..

  27. Avatar
    Comment1 6 months later:

    This article is very well written. the emphasis here seems to be around re-usable code/applications. The main difference is that formerly, applications were all being written purely in OO type languages, but with the advent of Web services, the emphasis is shifting and seems to be more on XML-based applications and EAI which has as basis the SOA architecture and also conforms to Web 2.0

  28. Avatar
    sita.yallapu@tcs.com 6 months later:

    I am a novice to SOA. This article helped to unerstand what is SOA for?

    Thanks A Lot, Waiting to learn more Sita

  29. Avatar
    niranjan.hc@gmail.com 6 months later:

    Really a nice blog. Expecting many more blogs relating to SOA. Now I understood what really a SOA is.

  30. Avatar
    Ramdas 6 months later:

    SOA is a good concept like re-usable components which will not change frequently and can be used directly. It will help the business without disturbing core functionalities and easy to rollout any new releases. My view it is to stabilise the some the components which can be used by any other sattelite system or even internal modules as interface.

  31. Avatar
    Gaurav Sharma 7 months later:

    It’s a very good and simple article on SOA. If we try to read the way any of the firms have to present SOA, we are basically chasing our tales …

    One think I’d like to mention is that in OOP terms its not Model-View-Controler … I think facade would be more close ?? any thoughs ..

  32. Avatar
    Jose cardoso 7 months later:

    I am about to have an interview, and the company uses SOA. Your explanation (simple, clear and full with useful illustrations) is the type I just needed to understand what’s SOA is about. I have been using it for years and didn’t know. Thanks

  33. Avatar
    Pankaj Thareja 7 months later:

    Nice treatment to SOA. Good Example with eloboration. I wonder if you could write something on SOA oriented products. Regars

  34. Avatar
    marianhackett.com 7 months later:

    Thanks for the wonderful post… I might actually pass my exam later this week thanks to you explaining it in a way that I can finally understand! THANK YOU! :D

  35. Avatar
    Harminder Tunwar 9 months later:

    It was pretty helpful.

  36. Avatar
    Biswa Ranjan Mishra 9 months later:

    Really, Its a great article on SOA .

  37. Avatar
    Rick 9 months later:

    Thanks for the article, it does help to have this explained without a vendor rant. What this says to me is that SOA is really nothing more than a marketing buzz in terms of what good IT architects have been trying to accomplish for years. I think SOA is now a way to help Exec. Mgmt to understand what good IT folks have been doing for years. Never the less, SOA/MVC is critical for developing large scale transaction-based systems.

    The Wiki def. for MVC sums it up in a less marketable fashion.

    Model-view-controller (MVC) is an architectural pattern, which at the same time is also a Multitier architecture, used in software engineering. In complex computer applications that present a large amount of data to the user, a developer often wishes to separate data (model) and user interface (view) concerns, so that changes to the user interface will not affect data handling, and that the data can be reorganized without changing the user interface. The model-view-controller solves this problem by decoupling data access and business logic from data presentation and user interaction, by introducing an intermediate component: the controller.

  38. Avatar
    Ashok 10 months later:

    Excellent!. Explained in short and concisely.

    Thanks Ashok Guduru

  39. Avatar
    Pctutor 10 months later:

    Thanks for putting in the time to write a good article.

  40. Avatar
    vijay 10 months later:

    Thanks a ton for this wonderful post. In fact i was not introduced to the meaning of SOA earlier. Now I feel worth to visit this post of your’s for knowing SOA…especially for the layman like me…. Thanks a ton. Vijay kaizen.vij@gmail.com

  41. Avatar
    sandip sani8156@gmail.com 10 months later:

    good explanation..

  42. Avatar
    Vishi 10 months later:

    Thanks for the explanation….......

  43. Avatar
    kavya 11 months later:

    nice information…... i have technical seminar on 25th of march ,,,,,can please provide the more information about soa … i hope it may be useful….

  44. Avatar
    puja.khatri(puja24k2007@rediffmail.com) 12 months later:

    Excellent Presentation waiting for the next series the way of presentation is very good as it is presented by taking live examples.

  45. Avatar
    eroch2@yahoo.com 12 months later:

    I agree the term SOA is getting abused. Related post (mine).

    http://blogs.ittoolbox.com/eai/business/archives/what-is-soa-23569

  46. Avatar
    heeru.janweja@gmail.com about 1 year later:

    great write-up. the language used is simple and it did not get too technical like a lot of the other presentations. waiting for the next in line, hope it comes out soon.

  47. Avatar
    Usha about 1 year later:

    Simply put and a very nice article. As mentioned in one of the comments, it is more of MVC architecture instead of SOA. Will wait for the next series…

  48. Avatar
    Jegan about 1 year later:

    Really nice presentation.

Comments