In recent times, the term Service Oriented Architecture or the acroymn SOA has become a prominent buzzword in the IT landscape. The IT architecture has been in a constant state of evolution from the early monolithic mainframes, to client server, distributed component architecture and 3 to n tier architecture. The strategic IT vision began with complex object frameworks, moved on to touchy client-server systems, followed by simple three-tier architectures and ended up in a tangle of distributed computing.
Each of these architectural patterns addressed a specific set of problems. However along with their strengths came weaknesses which were addressed by the succeeding architectural pattern.
Limitations of monolithic architecture:
- Applications are tightly coupled
- Applications are difficult to understand and maintain
- Code reuse scope is limited
- Applications are inflexible for handling changing business requirements
Limitations of client server architecture:
- Lacks scalability
- As business logic is located in the fat client layer, code reuse is difficult
Limitations of 3 tier architecture
- 3 tier applications are developed using a silo based approach
- High integration costs are incurred if tier based applications need to communicate with each other
The demands on IT have always been and will always continue to be driven by business pressures. The business pressures examples are:
- New demands – Supplier, Customer, Partner
- Evolving Business objectives – Growth, profit and value, leadership, customer satisfaction, innovation
- Changing markets – technology, regulation/deregulation, mergers & acquisitions, economy, competition
- Satisfying unpredictable needs.
As the degree of automation in an enterprise’s IT landscape increased, the enterprise needed IT architectures which could evolve along with the evolving business needs. The architectures needed to meet the enterprise’s current as well as unforeseen future requirements.
The existing architectures suffered from the following pain points:
- Agility – existing assets cannot be leveraged easily, information sharing within an enterprise or across enterprises is difficult.
- Process heterogeneity – Enterprise’s IT infrastructure covers gamut of technologies spanning generations. Thus business process automation across application silos is difficult
- Data heterogeneity – redundant data, in some cases non-availability of source of single truth, data nomenclature differences
- Costs – Duplicate data entry, Expensive point-to-point integration touch points, operation and maintenance costs for taking care of gamut of technology
What we need is
- A software that reflects business need
- Promotes reusability
- Promotes integration
- Software which is agile to enterprise’s changing business needs
Software needs to be built to change and not built to last.
SOA is presented as a cure-all which addresses these pain points. So what is SOA?
SOA is an architectural style/pattern for creating and using business processes as “services“. Alternatively it can be defined as an approach for building distributed computing systems based on encapsulating business functions as services that can be easily accessed in a loosely coupled fashion.
Essentially, SOA is a shift in the focus from “applications” to “business processes”. It is an architecture in which processes are constructed either in whole or part by assembling resuable services.
So what is a “service”? I will take that up in my next blog.