The Role of a Data Services Layer in SOA
You can read the article here.
(just to mention a few of them).
In fact, what she says is that service-orientation is still needed but the SOA TLA is now too heavily associated with the idea of project failure.
First comments:
So, what was really wrong with this supposedly dying SOA?
But it is not necessarily too late for SOA, as far as we can reconcile data and processes, states and behaviors, attributes and methods, however you name it.
So let's go back to the fundamentals. David Linthicum is thinking in the right direction: How to deal with data in SOA?
That's where we are today in SOA. Data Services are clearly going in the right direction. Customers will be able to solve some of their data integration issues with SOA, and they will have time to understand the value of this approach. To some extent, Data Services are at the cross between the promises of SOA and OO: states encapsulated by business methods.
Obviously, we'll need to go further, move from simple data federation to adaptative mediation, but we'll have time as we are solving real problems in the meantime.
Data Services should not be too much focused on names like SOA, WOA, RESTFul, mashups. New architectures are not replacing old ones (even if their proponents always tend to think it, at the beginning). They just complement them. Data Services platforms should equally support all these styles. Data Services Platforms should publish integrated data as SOA-or-not services, but also as POJOs, xDBC... The same way they have to connect to SOA-or-not data services as data sources, but also to RDBMS, packaged applications, mainframe transactions and screens, etc. The real IT world will certainly never be all-SOA, but equally it won't be all-non-SOA.
Services are basically components. There are many deep reasons why imposing a component-oriented design has continuously failed for decades. SOA is a new try and it won't be the last one. Component-based progamming models have failed for cultural reasons (programmers are not ready for that) and also because of the Lego model. You can't build a complex system by manually linking thousands of atomic components. SOA is way too much manually hard-coded today. We need to be able to dynamically generate, publish and compose services at runtime. We need to design new data access patterns, maybe based on asynchronous, reactive models. This will require advanced metadata, more semantic metadata and dynamic computation of chains of service calls at runtime. All this won't be achieved in few years.
In the meantime, programmers will progressively have to accept they won't control the flow of service calls, exactly as DBAs had to accept they won't tune all SQL statements any longer with the raise of persistence technologies. Each time you add abstraction layers you are able to do more, but conversely you lose some visibility and control on the lower layers.
So, the real debate is not what's next after SOA?, or which style of service-orientation will win? REST is not simpler than SOA if you want to manage complex things by manually connecting services. If one day we want to solve complex problems with simple solutions, then we'll need new abstraction layers, we need dynamic SOA. And for that, we need to stop manually calling and connecting services. Regarding this SOA versus WOA or SOAP versus REST is not the point at all. Services are a required piece in the puzzle, but we need new abstractions on top of them.
See the funny REST is dead blog entry here.