service oriented architecture (SOA) architectural pattern Edit
In the '80s and '90s most organizations used a single application, and a single server was used to automate their business processes. As more and more processes where automated more computers were added to automate the business. When more automation happened, the number of computers grew exponentially & new applications were introduced into the organization which was written in newer languages, now you also had to deal with legacy applications that were old but working fine. These applications had to talk to each other. In larger organizations, we also had to deal application across geographical boundaries which had to talk to each other. You also had applications were running on different platforms like Windows, Linux.
The service-oriented architecture is a software architectural pattern which was introduced to find a solution to the above problems. In SOA application components provide services to other components via a communications protocol, typically over a network, A service-oriented architecture is an approach to design enterprise applications by loosely coupling interoperable services. SOA uses loosely coupled services, standard interfaces, and protocols to deliver seamless cross-platform integration. In SOA every component of s system should be a service and a system should be composed of several loosely coupled services.
service-oriented architecture has nothing to do with any technology, tool, or a vendor. Its an approach or a way of building and maintaining software systems. In SOA, assets and components may not be controlled by a single owner, different teams, different companies may be the owner of a service. In SOA architecture the services need to be an autonomous and self-contained piece of software.
Components of SOA
There are 4 major components of SOA
- Enterprise Service Bus
- Service Description Repository
- Clents or Service Consumers
Service is a self contained unit of software which performs a specific task, it is the basic building block of service oriented architecture
Enterprise Service Bus is the backbone of SOA. Its a piece of software that is responsible for handling the integration part of the system. Service consumers connect with and call services using the ESB
Service Description Repository This helps service consumer discover services. This is necessary when SOA system grows and becomes large and complex.
Service Consumers are service consumers, they use the ESB to send request and get response from service providers.
Advantages of SOA
There are several advantages to service-oriented architecture.
- Reusability: components can be used in multiple applications becasue of their autonomous and self contained nature
- Maintainability: its easier to maintain components in SOA, as you have to take care of only your service without having to worry about other services
- Scalability & Availablity: Scaling is simple as running multiple instance of the services
- Platform Independence: Services can be developed in multiple platforms like windows / Linux and they can work together.
Disadvantages of SOA
- Compex Service Management: As they system becomes larger its difficlult to manage services
- Increased Overhead:
- Upfront Investment:Implementing SOA architecture is complex and needs upfront investment