There is a lot of confusion around SOA - Service Oriented Architecture. How will it help? Is is software, hardware, both? Is it something you buy, build, or is it an architectural concept relying on fundamental principles of OOAD such as abstraction, inheritance, encapsulation, and polymorphism?
Yeah, you get the picture. So, meet Greg, the Architect - he has a similar problem in trying to understand just what SOA is.
Greg is driven by his CIO's need to improve revenue, decrease costs, and get new product function and feature to market faster. Greg goes looking for ways to deliver SOA from various sources, only to discover there is a maze of content to consider, some of it coming from, shall we say - special interest groups (Vendors?).
It's not really possible to define all of what SOA is and is not in one short blog, so instead I'll provide some relevant links and discuss it in PNC terms. SOA is about assembling (buying or building) applications and application components that can be reused in ways which were not originally known. You might buy a solution for Customer Relationship Management (CRM) and later reuse the part of the solution that looks up a customer's account balance. Much of the SOA conversation surrounds how to reuse the get-the-customer-account-balance information.
So first, SOA is about reusing applications and/or parts of application in new ways. This is good, because any piece of program code you reuse is a piece of code that doesn't have to be paid for, is available immediately, and is probably pretty high in quality (since you're already using it). Now, programmers have been reusing code since Grace Hopper cut her first piece of nanoseconds. Problem is, they've been copying and pasting the reusable code, which leads to all sorts of issues when a bug is found.
So, SOA is also about how to reuse code. In its simplest form, the parts of applications that are to be resused are made available as Web Services, a specially designed way of finding, accessing, and using reusable code. The simple term "Web Service" actually has a lot of stuff behind it that allows for securing, monitoring, controlling, combining, and aggregating business functions into powerful capabilities which were not envisioned when the original code was acquired. That is the power of SOA - it provides a capability to be more flexible as time moves on. With SOA, speed to market can improve over time, even though systems become more complicated. Application can become more resilient, more reliable, and more controlled, because SOA was designed around the business concepts, not computer concepts.
Want to learn more? Here are some useful links for SOA: