About bad habits and spaghetti
Usually when I find myself explaining what SOA is, it usually helps me to go over some history of software development and to observe the bad practices that are often done in recent years.
Over the last 3 decades, the importance of information systems in organizations has experienced an absolutely devastating explosion. We have moved from centralized, batch and disconnected computing to fully ICT-based organizations with massively distributed and interconnected information systems.
All this transformation has not come alone. In parallel, catalyzing this change, we have seen how the paradigm of software development evolved.
Structured programming, which allowed for a certain level of modularity, was the norm when integration requirements between systems were solved by complex batch processes that lasted nights and weekends.
Client – server architecture began to separate the presentation and the data, but the business frontier was not clear. The issue of moving information quickly began to become important, but most of the integration requirements still fell on the server side, and its mass data processing power in batch processes.
Object orientation introduced a radical change in the way we model software and design information systems. Ability of abstraction, always necessary for a development of quality software, became essential to understand the new model and to realize its full potential. The reuse of industrially proven software pieces, perfectly encapsulated and self-contained, seemed to be within easy reach.
The explosion of the internet and the architecture of 3 layers in web applications meant the definitive takeoff of distributed computing. Using object-orientation as a basis for application development using pre-built parts to solve usability issues and data access, applications developed faster and it was easy to exchange information between different systems.
As the needs for information sharing increased, different approaches emerged, such as RPC to execute remote processes between applications, or the web services themselves, introducing the important concept of contract (the WSDL) between provider and consumer of the web service.
But let’s not forget that all these changes were coming very quickly, without giving organizations time to recover the investments made in the previous technology. It is logical to try to protect those investments trying to coexist information systems of very distant generations, and therefore very old and disparate technologies, with difficult and expensive maintenance.
But how have they been solving the needs of integrating these information systems over the years with the technology available at each time, without throwing away existing systems, and trying to save costs in each project?:
– batch processes
– tables replication
– remote access to databases from another system using dblink or similar
– opening of embedded applications
– automatic file sharing
– proprietary web services, usually for request
All of these integration methods present major drawbacks when we zoom in and look at the resulting system map in the organization, a map that visually reminds us a lot of a spaghetti dish, which is how we know these types of scenarios:
- Strong coupling, ie dependence between systems, their databases, their technologies, their designs
- Redundant requirements inherent to the business, which are repeated in different functional areas
- Redundant logic, which reinvents the wheel trying to solve similar requirements
- Project overhead, due to organizational disarrangement, and the strong coupling and its domino effect when analyzing the impacts of small changes
- Dependence on technology, due to the strong coupling in the way of integrating systems
- Saturation of the network, since the high number of point-to-point integrations involves redundant traffic and massive discharges of information that are in fact unnecessary
And then, SOA.
In the next few entries we will go deeper into the impact of an SOA strategy in this scenario, and we will see the value and importance it brings to the ICT sector. And we will see the important change of approach that it entails and the amount of good practices that it recovers for the development of quality software.