Increased demands of lean operations and business better positioning within highly competitive markets are pushing businesses to adopt agility, efficiency, and effectiveness into their processes and supporting information systems. Adding to this the rapid change of technological landscape which mandates much higher response in information systems to the surrounding changes. In order to achieve this goal, a deeper look is required on how those information systems are laid out. This is what is called “Architecture”.
A Short Trip along the Distributed Computing History
The era of mainframes relied heavily on multiple jobs paradigm that are managed by the operating system. During 1980s and with the rise of PC’s and mini-computers, the distributed computing models started to appear. The objective of distributed computing was mainly better utilization of computing resources. During this period, client-server architecture became the basis of many operating systems such as UNIX, Linux, and Windows. Also this enabled the rise of other communication and internet services protocols such as HTTP, DNS, FTP, etc.
With the increased advances and economy of scale for infrastructure and communication technologies, ease of management and speed of change became the major force behind the maturity and acceptance of distributed computing models. Component-based deployment, standardized interfaces, and object-based message exchanges provided application-level integration on a much wider scale. Remotely accessible component models and frameworks, such as CORBA, COM, DCOM, RMI, and EJB, as well as message-oriented middleware and APIs, such as MQSeries (IBM), JMS (Sun), and MSMQ (Microsoft) have dominated this era. The ability to perform a distributed transaction and asynchronous message transfer has been the hallmark of this model.
Ubiquity of TCP/IP-based networks and breakthroughs in wireless technologies further pushed the envelope, making the execution of distributed computing possible all the way from an IP-enabled device firmware to a cluster of enterprise-grade relational databases. New integration and collaboration standards have been developed, giving rise to new ways of performing distributed computing that use SOAP- and REST-based Web Services, AJAX, JSON, RSS, and various other proprietary remoting technologies.
SOA emerged as a business-driven architecture, providing a notion of software services that are totally independent of locality and infrastructure. SOA is a gradual decoupling of business services that a software solution offers from the underlying infrastructure that it uses. The trend has been to execute the software functionality where it makes most sense from an operational point of view, while ensuring that the location of the end user or system is not a hindrance in using the functionality effectively. Business processes have been heavily dependent on information systems, and every strategic and tactical initiative tends to test the agility and effectiveness of these systems.
In SOA, every application, information system, or information device (since firmware-based devices are acting like applications) are exposing their capabilities to outside world as services.