I would like to share with Spring's community a big debate that we are conducting at my work place this days.
As a member in the Architecture team we where asked to roll out the "Information System high level architecture"
In the group we found out that there are 2 main "camps" -
Group A - in short: SOA
Details: We should eliminate the concept of systems and think about developing services. Each service should be autonomous, re-entrant (stateless), SLA based... bla bla bla.
This group believes that every layer should be loosely coupled to the other layers using an Enterprise System Bus (ESB). The UI (WEB) should talk with the logic through web services etc.
Group B - "System of systems"
This group believes that SOA should bring evolution not revolution to our existing architecture. this group think that we should continue to build systems but we need to think of them as system of systems and the way to wire them up is using Dependency Injection (e.g. Spring). We believe that eliminating a one big monolithic system can be achieved in-process using DI Container and that the ESB/Web-Services (out of process) is a performance killer and an anti-OO technology. We believe that there is a place for a ESB/SOA in our architecture - but only as a way to integrate between systems/legacy and not over-use it as if it was a Microkernel.....
What do you guys think - who is in favor of group A and who is in favor of group B and why? - do you think that using Spring promotes the purpose of SOA or is it bad and promotes a back-door for one big monolithic system??
For the protocol - I'm in group B