This week I   attended an IBM software technology briefing about SOA. Only brilliant technical people   could come up with SOA as a name for something. Let’s see, is it  safe operating area, School of the Americas, Skies of Arcadia (a  Nintendo game), Society of Actuaries, state of the art, or the Sarbanes-Oxley Act? Nope. Maybe it is   about an architectural firm that has great customer service? Or maybe it is   about the architecture of a building that has a good service entrance?   Neither. The SOA of the briefing stands for  "service oriented architecture". It is really important. The wikipedia has a comprehensive definition of SOA but basically it is   about a new way to get things done with software. Actually it is isn’t new — the idea has been around for decades — but now it is really happening. It is so much a part of the vernacular at IBM that they just matter of factly call it  “so a”. After an IBM briefing about "virtualization" a year ago, I tried to explain the word in simple terms (see Virtually Real or Really Virtual). I’ll try that approach here with SOA.
In a nutshell, SOA  will allow web sites to do much more than “click here to   buy”. In fact web sites built with SOA will result in us    standing in fewer lines in the physical world and have to endure fewer telephone   call centers that want to control us. Fulfillment models at our favorite   retailer’s web site will result in the staple goods we need just showing up   outside the garage door when we need them. If businesses have the right attitude, SOA will enable them to get closer to the ultimate Internet — to build   a people-oriented and user-friendly integrated experience for all parties involved – employees on the intranet, suppliers, customers, partners, analysts and prospective constituents. There is more to this story.
Over the last fifty years there has been an explosion of computer applications, but many of them were built in silos and were highly inflexible. In some cases companies thought decentralization was the answer so they allowed divisions and departments to do their own thing. The result is that many have a hodgepodge of incompatible systems that nobody is happy with. The web took   things a big leap forward. At last there was a common way (the browser) for   accessing and displaying information, even though the applications that run on   the server — that do the pricing, inventory lookups, shipping estimates,   invoicing, etc. — are still proprietary and usually tied to one particular IT vendor or system. The applications have also been very   monolithic; i.e. in order to fulfill the expectations of customers on the web   the application has to do the whole job. Soup to nuts; present the right price,   confirm if the item is in stock, calculate shipping, and confirm the status of   the order. Increasingly, customers want to get access directly into the supply   chain and see exactly where there order  stands. In short, applications have gotten larger and more complicated — harder, not easier.
SOA — arguably  the   biggest change in information technology in decades — is poised to change the way applications are created and how they interoperate. Instead of building monolithic applications that takes a customer  order, does   credit checks, checks inventory, looks through the supply chain, arranges for   payment, charges the customer, clears credit card transactions, etc., with SOA these various functions are built as separate pieces. Think Legos. The individual programs are called "services" and they are called upon as needed. A sales tax calculation "service", for example, could be used by many different divisions of a company thereby eliminating redundancy. IBM has been practicing what it preaches in this regard. It has reduced the number of programs it uses to run the company from 16,000 to a mere 4,000.
The SOA services do not all have to be developed or acquired internally. Thanks to the Internet, services can be "rented" from others. For   example, suppose that a company called American Specialties Inc. (ASI)   specializes in selling American goods for delivery mostly outside of America.   They want to create an application to sell their products on the web. The   trickiest part of the application is determining the best way to ship the   product to ensure it gets there when the customer wants it and at the lowest   cost. ASI doesn’t’t have the skills to write this particular part of the   application and they haven’t bee able to find a vendor with a software package   that can do it and which is compatible with the rest of ASI’s   software.
It turns out that there is   another company called Rates and Costs Inc. (RCI), which specializes in the   calculation of optimum routes and the associated costs for shipment to places   anywhere in the world. RCI offers the calculation as a service on the web and it   is the exact function ASI needs to incorporate into their web application. Since RCI follows the SOA standards,  ASI is able to see the specifications for RCI’s service   – what inputs are required and what output does it produce. RCI could have   created their calculation service using any IT platform they choose — the standards assure that things can work together.
The   programmer at ASI likes RCI’s program because it performs exactly the right   function that ASI needs and the software has already been written and tested!   ASI follows the SOA  standards to incorporate RCI’s service into their   web application. Whenever a user goes to ASI’s web page and needs shipment route   and cost information, a link is made behind the scenes to RCI’s web server to   get the information. ASI’s customers don’t know, nor will they care, that part   of the job is being done by RCI’s server; not ASI’s server. ASI makes an   arrangement to pay RCI each time one of ASI’s customers uses the RCI web   service.
Creating   programs by linking to other programs  without regard to what   programming language was used to create the others’ programs represents a   whole new paradigm. It is one of the information technology industry’s holy   grails. Standards organizations, such as Oasis, have been attempting for years to create a   “neutral” programming environment. The UNIX vendors – HP, DEC, Sun, IBM, Data   General, and others – formed various organizations, councils and consortia over   the years attempting to bring things together. Progress was made but none of   these initiatives achieved real openness and true compatibility across the   information technology industry — until SOA. It is not really new but it is time. Open Internet standards and SOA tools are making it happen.
SOA will make it possible for  the web to evolve from a web of   content to a web of content and applications. SOA will enable   server-to-server interaction in addition to browser to server interactions.   Servers will negotiate with other servers  and even complete   transactions by themselves with no direct human intervention. These interactions   will replace the paper forms and faxes that flow back and forth from company to   company today.
E-business evolved to on demand. At this stage many enterprises have bought in to the concept but are struggling with how to get there. This is why many web sites don’t fully meet our needs — they are dependent on many independent applications that the enterprise has had for decades and so far have been unable to integrate them. SOA is the new model — it offers the first comprehensive, standards based way to get the job done. Adoption of SOA will enable the interoperability within the many functions and departments of enterprises and between enterprises that has been a decades long   dream. History has shown that adoption of standards leads to an explosion of   usage and that will surely be the case with SOA. The SOA standards will enable entire industries  to be brought together. Virtual corporations comprised of a federation of smaller ones will    enable “hyper competition” on a global   scale.
How does "Web   2.0" fit into all this? Like a ball and glove. Quite the hot topic in tech circles and among venture capitalists, Web 2.0 is basically a style, a model, an approach, and a philosophy wrapped together. It includes a "lightweight" programming model that is more like webpage development than traditional programming. A key element of 2.0 is the blog feed — a way to allow people to look at a web page but also subscribe to it. Another element is AJAX, a technique built on a collection of Internet standards that produces a rich user experience — kayak.com is a good example — with pages that don’t "reload", they just change while you are looking at them. Another characteristic of Web 2.0 is that it is a perpetual beta — users treated as co-developers. The philosophy is "release early and release   often". One final element that I consider part of 2.0 is the PHP scripting language. Some professionals have considered it "rinky-dink" but IBM is taking it quite seriously. Jerry Cuomo, IBM Fellow and CTO for IBM WebSphere, said PHP has widespread skills,   an active community, viral marketing, and growing deployments.
All things considered, IBM really has it’s act together with regard to SOA. Every software and services exec is well versed on it and has it baked into their business and development plans. The promise is great and with tens of thousands of software engineers and management support I think it is fair to expect IBM to deliver. They have already made dozens of acquisitions to fill in the white spaces in their vision. Major customers are signing up and getting results. Much more at ibm.com, including tips and techniques, customer testimonials, and business partners.