Simply stated, SOA is an architecture to provide maximum flexibility and reusability for modern businesses. This is done through business components that offer a set of services. The main idea of SOA is that the applications should be decomposed into reusable components that deliver the business services. Thus as more services are needed, new components with the needed services can be added easily. For example, a bank provides a set of services (e.g., deposits, withdrawals, fund transfers) and these services are provided through components that can be combined into banking applications. An SOA is based on three fundamental features (see the figure):
Reusable Components: It is important to decompose business applications into business components (BCs) in such a fashion so that as many components as possible are general purpose (i.e., reusable) and as few as possible are special purpose. It is highly desirable to create common services and components that can be reused to serve many different requests.
Web-Services Enablement. The components must have well defined service interfaces that can be stored in a directory so that service clients (SCs) can query an interface directory to discover and invoke the needed service providers (SPs). Although older technologies can be used for service definition and discovery, Web Services (WS) is the favored enabling technology at present. WS provides a widely accepted mechanism for service definition through WSDL (Web Services Definition Language) that can be defined and discovered through a UDDI (Universal, Description, Discovery and Integration) directory by exchanging XML messages over the Internet by using HTTP.
Enterprise Service Bus (ESB): Instead of point to point communications between participants, a loosely coupled common middleware infrastructure must be used for communications, brokerage, security, directory and administration services needed throughout the enterprise. Although such an infrastructure can be provided by the existing EAI (Enterprise Application Integration) platforms, the SOA patterns strongly suggest WS-enabled ESBs for SOA.
Even though a longer list of SOA features can be found in the literature, the aforementioned three features embody the main requirements of an SOA from a practical point of view. See a short tutorial on SOA for a conceptual overview.