Does a "Service Layer" Mean You're Doing SOA?
Via this recent piece from Michael Meehan, I came across an older case case study from ING Card, which features this diagram:
Given the benefit of doubt with regards to the choice of WebSphere, this seems like a fine architecture. But it has absolutely nothing to do with SOA. Every decent multi-layered application has an architecture that separates back-end business logic from UI and control flow, and commonly introduces a façade in front of the back-end.
In my view, SOA – independently of whether it's implemented using WS-* or with RESTful HTTP – is an architecture for a set of systems, not for a single application.
I don’t think that you’re being 100% fair. IMHO any application which can have its internal service layer easily replaced with an implementation of the same service which calls out to to other applications or systems is to my mind a service oriented architecture. The fact that circumstances mean that you don’t need to distribute or communicate doesn’t mean that the pattern isn’t still valid.
The diagram you show actually hides the implementation of the service layer, we don’t know whether it is code deployed in the same package or code that communicates with other systems, we can make assumptions, one of which is that some of the services are implemented locally, but the detail is (rightfully) hidden from us.
Stefan, someday you (or someone) is going to have to explain what SOA is in concrete terms. I’m starting to think it has no explanatory power - when you take SOA away, what is lost?
I’m at a vendor conference here in Paris and attended an overview of WS-* yesterday. The presenter kept calling WS-* specs “SOA standards”. Talk about muddying the waters.
Danny, you are making the assumption that a local service call is equivalent to a remote service call, which is a common antipattern (and a common source of really ugly problems).