Since it hit the top of the hype curve
people have been saying that
SOA principles have been around for a long time before SOA was popularized. Loose coupling as an approach for distributed systems and EAI has frequently been compared to the software pattern of
late binding. Software development principles and practices have
continuously evolved over the decades, often in a very
Darwinian approach. We've had
generational programming languages, such as
Fifth Generational Languages like Prolog, and now according to
Kirstan Vandersluis, founder and chief scientist of
XAware, we should recognize the fact that we've gone through at least four generations of architectural approaches based on Services.
Across industries, smart architects have been exposing functionality as reusable services [for years]. This got me thinking about the how service oriented architectures have been evolving over the years. Those of us working to expand capabilities in SOA tooling have recognized that services and SOA have been around far longer than the "web service standards" that have made SOA so popular over the last few years. It is apparent that in the software industry, we have gone through phases of maturity in our service-oriented implementations.
Kirstan
echoes the sentiment that sometimes
SOA is too strongly associated with Web Services. He believes that we're not quite there yet in being able to realize the full potential of SOA, but these things take time.
The traditional 12 or 18 month development cycles involving armies of analysts and developers are replaced by a business analyst drawing a flow graph of the new process, then clicking a button for deployment to enterprise-ready infrastructure. The "service oriented" approach is measured in days or weeks using a fraction of the engineering resources.
However,
as we've heard elsewhere sometimes
your mileage may vary and SOA projects are
not automatically successful through some implicit/embedded panacea. But as Kirstan suggests, this is a generational problem and as we go on we should get better (or something else will arise). According to Kirstan we've had 4 generations (so far) of Service based architectures:
1st Generation Services - Simple services coded in a 3GL language like C, C++, C#, or Java, which don't use modern SOA standards like WS-* or REST. These services tend to tightly couple the consumer with underlying resources. Older distributed computing technologies like CORBA and DCOM fall into this category as well.
2nd Generation Services - Services that are standards-based and fairly simple, like implementing an operation to retrieve, modify, create, or delete a data set on a database. These services can often be auto-generated from other sources, such as from a Java or C# class, an EJB, or a database query. These services tend to reflect a method on an object, or expose an underlying implementation strategy like a relational table. They are easy to create, but because they are technology-oriented rather than business-oriented, they are unwieldy to use directly in a business process. Instead, they require combining with other services and logic to provide the proper level of granularity for orchestration.
3rd Generation Services - Truly "service-oriented", these services are aligned with a step in the business process. Loose coupling is achieved by explicitly defining data formats that are the payload of the service request and response, and these formats are driven by analysts that know the business process at hand, not by technologists attempting to optimize execution times and storage requirements. These services are often created by stitching together and transforming 1st and 2nd generation services to achieve a coarse-grained service that is suitable for orchestration and at the same time achieves loose coupling.
4th Generation Services - These are 3rd generation services that are institutionalized as managed, secure, governed, and reusable services. 4th generation SOA involves an ecosystem of SOA-aware technologies and procedures, which allow construction and management of business processes and higher level services. Given time to achieve 4th generation services, a company will maximize the benefits of SOA, enabling them create and modify business processes quickly to meet the changing demands of the business.