During the last decade the term SOA has become a fuzzy over-used word. Lot of vendors have put the “SOA compatible” certificate on their products completely forgetting that SOA does not refer to a particular product or technology, but at the way you use those technology to achieve certain goals.
So it often happens that talking with Software Architects they are SOA experts simply because they used a lot of web services in their application. But let’s say clearly that only using web services does not make us an SOA expert!
A deeper look in the context
We must admit that the argument is hot; there are plenty of books, candidate official definitions and methodologies for developing an SOA. In this post I refer to the contribution that Thomas Erl has given to this subject, since I have been studying for some certifications using his books and courses.
I would start by introducing few important concepts:
- Web Services
- SOAP & WSDL
The Web Service Technology was born beginning 2000 when it was clear that e-commerce could have given good profits and it was necessary to create a way to make different portals communicate each other. Historically CORBA was one of the first attempts but its main limit was its dependence with the implementation language and the RPC used as communication protocol.
A web service is not a big revolution, the concept is simple:
- A web service exposes capabilities on the web via a contract that is accessed and used by any service consumer who implements the same communication standard.
To make a parallelism with traditional software programming a web service can be seen as a module, a capability like a method exposed by an object of the module and a service consumer is just another object that call that methods.
The real difference in web services is that communication technology and contract definition is not proprietary of any specific vendor (or language), but is globally defined, recognized and implemented by several product vendors.
SOAP & WSDL
SOAP (that originally meant Simple Object Access Protocol but today has become a self meaning word) together with WSDL (Web Service Definition Language) is the first result of the agreement between Industries and Web Consortium about the definition of a standard communication protocol for web services. SOAP defines how the data must be exchanged, while WSDL defines how web service contracts must be defined. Both specifications are built using the XML technology.
Rest (Representational State Transfer) is an alternative to SOAP. It is younger but its use is increasing year after year, mainly due to its simplicity that makes it the best choice when developing an SOA that does not have too many complexity in business scenarios. The basic logic behind it is that it uses HTTP as communication protocol and the HTTP methods like get, post as universal contracts to access web resources that offers capabilities.
Finally what is an SOA? A general definition can be:
- an SOA is a distributed technology architectural model with target characteristics that aims to satisfy a certain set of defined strategic goals, using the service orientation design paradigm to create logic that can be considered as service oriented.
To understand this definition we need to give a short definition of:
- SOA Architecture characteristics: an SOA must be independent by any specific implementation, in line with business specification and reusable and composable by the enterprise.
- Strategic goals: main goal of an SOA is to create an IT system with an native level of Interoperabiltiy that could be easily changed, scaled or evolved, and with a visible ROI by creating an IT system that is strategically targeted for the long term and able to resist to technology or business changes.
- Service orientation design paradigm: certain design principles are very important when designing the system. The main principle is the Composibility, and this is supported by other principles like Standardization, Abstraction, Loose Coupling, Reusability, Autonomy, Statelessness, Discoverability.
- Service oriented logic: Logic that has been shaped by service orientation design principles and that has in services its unit of work.
An SOA is an architectural model that is targeted as objective for the design of an architecture. If your architecture can be labeled as an SOA depends by how close it is to the definition above.
What is important to note, is that web services (implemented as Rest or SOA) is just one possible solution for implementing an SOA and it is neither necessary nor sufficient condition!
- Is not necessary because an SOA could even be implemented using components in a silo application (surely loosing a bit of technology independence).
- Is not sufficient because even if you use web services you could end messing up and creating a disposable silo application.
In conclusion please remember that simply using web services it does not make an SOA!