A service is a discrete unit of functionality that can be accessed remotely and acted upon and updated independently, such as retrieving a credit card statement online.
A service presents a simple interface to the requester that abstracts away the underlying complexity acting as a black box.
SOA separates functions into distinct units, or services,[9] which developers make accessible over a network in order to allow users to combine and reuse them in the production of applications.
Lower level enterprise integration patterns that are not bound to a particular architectural style continue to be relevant and eligible in SOA design.
[23] This is done to make the functional building-blocks accessible over standard Internet protocols that are independent of platforms and programming languages.
One example is SOAP, which has gained broad industry acceptance after the recommendation of Version 1.2 from the W3C[25] (World Wide Web Consortium) in 2003.
These standards (also referred to as web service specifications) also provide greater interoperability and some protection from lock-in to proprietary vendor software.
One can, however, also implement SOA using any other service-based technology, such as Jini, CORBA, Internet Communications Engine, REST, or gRPC.
These services inter-operate based on a formal definition (or contract, e.g., WSDL) that is independent of the underlying platform and programming language.
In communications systems, for example, little development of solutions that use truly static bindings to talk to other equipment in the network has taken place.
By embracing a SOA approach, such systems can position themselves to stress the importance of well-defined, highly inter-operable interfaces.
Other predecessors of SOA include Component-based software engineering and Object-Oriented Analysis and Design (OOAD) of remote objects, for instance, in CORBA.
In the absence of native or binary forms of remote procedure call (RPC), applications could run more slowly and require more processing power, increasing costs.
Most implementations do incur these overheads, but SOA can be implemented using technologies (for example, Java Business Integration (JBI), Windows Communication Foundation (WCF) and data distribution service (DDS)) that do not depend on remote procedure calls or translation through XML or JSON.
At the same time, emerging open-source XML parsing technologies (such as VTD-XML) and various XML-compatible binary formats promise to significantly improve SOA performance.
This constraint has the drawback that it could reduce the overall scalability of the service provider if the service-provider needs to retain the shared context for each consumer.
Due to the fact that the design may involve multiple services working in conjunction, an Application may generate millions of messages.
Tim O'Reilly coined the term "Web 2.0" to describe a perceived, quickly growing set of web-based applications.
SOA is the philosophy of encapsulating application logic in services with a uniformly defined interface and making these publicly available via discovery mechanisms.
The notion of complexity-hiding and reuse, but also the concept of loosely coupling services has inspired researchers to elaborate on similarities between the two philosophies, SOA and Web 2.0, and their respective applications.
Microservices are a new realisation and implementation approach to SOA, which have become popular since 2014 (and after the introduction of DevOps), and which also emphasize continuous deployment and other agile practices.