What is SOA "in plain english"?

soa
150,012

Solution 1

You might find this article (What is SOA? - SOA and Web Services Explained ) helpful.

A little teaser:

  • SOA is a style of architecting applications in such a way that they are composed of discrete software agents that have simple, well defined interfaces and are orchestrated through a loose coupling to perform a required function.

  • There are 2 roles in SOA- a service provider and a service consumer. A software agent may play both roles. SOA is not an entirely new concept – however, this article mainly focuses on SOA as implemented with web services.

Solution 2

SOA is a new badge for some very old ideas:

  • Divide your code into reusable modules.

  • Encapsulate in a module any design decision that is likely to change.

  • Design your modules in such a way that they can be combined in different useful ways (sometimes called a "family" or "product line").

These are all bedrock software-development principles, many of them first articulated by David Parnas.

What's new in SOA is

  • You're doing it on a network.

  • Modules are communicating by sending messages to each other over the network, rather than by more tradtional programming-language mechanisms like procedure calls. In particular, in a service-oriented architecture the parts generally don't share mutable state (global variables in a traditional program). Or if they do share state, that state is carefully locked up in a database which is itself an agent and which can easily manage multiple concurrent clients.

Solution 3

I see many answers explaining a Service Oriented Architecture (SOA) using even more advanced words and technical terms. I'd like to give a shot at explaining it for the layman, using an analogy in plain english.

But first a description of a SOA
SOA could be described in three layers as seen in the picture below. On one side we have the Provider and on the other side we have the Consumer, separated by a Bridge where the two sides communicate.

The consumer uses a number of Applications necessary for it's business and the provider uses Components that provide these applications with information. They communicate through a set of Services using a common architecture.


enter image description here

The analogy
Imagine a house on the country side, that in many ways is part of a larger community, like a city or town. The city has it's own complex systems for providing water and electricity, handling sanitation, providing transportation and other utilities. The House is the consumer in this model, the City (or community) is the provider and the pipes, sewers, powerlines, optical fibers etc. is the Infrastructure in which they communicate.

This model could loosely be compared to a SOA. The people in the house uses a number of different "applications" like radiators, computers, toilets, lamps, underfloor heating, bathtubs etc. These applications don't care how the city generates the water, creates the electricity or handles the waste as long as it works. The components of the city are generators, water pumps and sanitation areas. It provides the house with all these needs but it's up to the house to use it in what ever way it sees fit.

I hope this gave at least someone a better picture of a SOA.

Solution 4

Let's assume you have four cooks. In SOA, you assume they hate each other, so you strive to let them have to talk to each other as little as possible.

How do you do that? Well, you will first define the roles and interface -- cook 1 will make salad, cook 2 will make soup, cook 3 will make the steak, etc.. Then you will place the dishes well organised on the table (so these are the interfaces) and say, "Everybody please place your creation into your assigned dishes. Don't care about anybody else.".

This way, the four cooks have to talk to each other as little as possible, which is very good in software development -- not necessarily because they hate each other, but for other reasons like physical location, efficiency in making decisions etc.

It also means you can recombine the dishes (services) as you like. For example, you might just use the dessert to service a cafe, or just take the soup and combine it with a bread you bought from another company to provide a cheaper menu, or let other restaurants use your salads to combine with their dishes, etc.

One of the most successful implementation of SOA was at Amazon. Because of their design, they could re-package their whole infrastructure and sell it as Amazon Web Service.

*This is only one aspect of SOA.

Solution 5

SOA is an architectural style but also a vision on how heterogeneous application should be developped and integrated. The main purpose of SOA is to shift away from monolithic applications and have instead a set of reusable services that can be composed to build applications.

IMHO, SOA makes sense only at the enterprise-level, and means nothing for a single application.

In many enterprise, each department had its own set of enterprise applications which implied

  1. Similar feature were implemented several times

  2. Data (e.g. customer or employee data) need to be shared between several applications

  3. Applications were department-centric.

With SOA, the idea is to have reusable services be made available enterprise-wide, so that application can be built and composed out of them. The promise of SOA are

  1. No need to reimplement similar features over and over (e.g. provide a customer or employee service)

  2. Facilitates integration of applications together and the access to common data or features

  3. Enterprise-centric development effort.

The SOA vision requires an technological shift as well as an organizational shift. Whereas it solves some problem, it also introduces other, for instance security is much harder with SOA that with monolithic application. Therefore SOA is subject to discussion on whether it works or not.

This is the 1000ft view of SOA. It however doesn't stop here. There are other concepts complementing SOA such as business process orchestration (BPM), enterprise service bus (ESB), complex event processing (CEP), etc. They all tackle the problem of IT/business alignement, that is, how to have the IT be able to support the business effectively.

Share:
150,012

Related videos on Youtube

Elena
Author by

Elena

Updated on July 08, 2022

Comments

  • Elena
    Elena almost 2 years

    Can someone explain in plain english what is SOA all about? I hear SOA here, SOA there but I cannot understand exacly what it is and what is used for. Was it some simple concept and later evolved into something huge or what?

    All documents, including wiki are a bit abstract or maybe I'm an idiot and don't get it. Is there an idiot's guide on this?

    What exactly is there behind these three letters?

    • Phil
      Phil about 12 years
      I think would be nice too if people stop explaining SOA abstractly in ways only people who already understand it can understand and show "Hello, world" coding examples. Demo code speaks louder thn blabbing.
    • Niklas
      Niklas almost 12 years
      @Phil - Check my answer. I've tried to use an analogy.
    • nullability
      nullability almost 11 years
    • Jordan Reiter
      Jordan Reiter over 10 years
      Amazon is a perfect example, actually. At some point Bezos insisted that every part of Amazon's code base had to be an API and respond to web requests. Article here: apievangelist.com/2012/01/12/… . You can see this when you log in -- Amazon uses OpenID for its own login system! Most websites use a built-in system for login. One advantage is that I think they can use the same login for all of their sites and services.
  • Tom
    Tom over 14 years
    Little harsh downvoting without a comment!!
  • CesarGon
    CesarGon over 13 years
    Mmmmm... CORBA, IDL, client-server... sounds so 1980s that hurts! ;-D
  • johnny
    johnny over 13 years
    yes, but someone else wants you to buy or use their monolith to control everything like Oracle SOA or use Microsoft WCF. Won't there always be a monolith?
  • Sebastian Mach
    Sebastian Mach over 12 years
    @Downvoters: The question does not really give enough context to justify downvoting Toms answer. Just because everyone else is paralyzed by the term SOA in context of service architectures doesn't make this wronger.
  • BentOnCoding
    BentOnCoding about 12 years
    Please don't guess at architecture questions. Stackoverflow is a place to get Expert answers, not a random guess from an article you glanced over last year. It's sad that this answer received any votes.
  • BentOnCoding
    BentOnCoding about 12 years
    WCF and Oracle SOA are technology dependencies that are irrelevant with a SOA solution. The concept is based around independent easily maintiainable services not some specific technology.
  • BentOnCoding
    BentOnCoding about 12 years
    @phresnel The tag is soa and if you can hover over that for a quick sec you will see a clear description of the context of the quesiton.
  • Sebastian Mach
    Sebastian Mach about 12 years
    @Robotsushi: And if you can research the tag for a quick sec you can see that the description was added more than a year after Toms answer.
  • BentOnCoding
    BentOnCoding about 12 years
    I think if you are unsure of the context of a question then you are not able to provide an expert answer. A simple question in the comment regarding the nature of the question would have quickly solved this mystery.
  • occulus
    occulus about 12 years
    +1 for mentioning the organisation-level 'big' meaning of SOA. A lot of the other answers focus on the software component aspect, which strictly speaking isn't the whole picture (even if it's the meaning people use a lot of the time).
  • Will Sheppard
    Will Sheppard over 10 years
    Downvoting this merely because it's the least relevant reply. Nothing personal @Tom!
  • Tom
    Tom over 10 years
    @WillSheppard you're down voting on a closed question after three years? Wow! In my defence, there's no context in the question, and SOA is used for Struct of Arrays. At the time of the question and answer the tag had no description (since added), so frankly my answer was relevant.