I am sitting here in a class in Seattle ( Pluralsight). Earlier in the
day we had an excellent debate on what is Service Orinted architecure( from a Microsoft perspective)
Many including Aaron Skonnard think that the one of the four tenets ie Services are autonomous is not correct.
The main discussion was why are we doing SOA?
We went from a Component based interface driven design to a COntract based Protocol independent design.
Joel Spolsky’s Law of leaky abstraction got a mention here. The abstraction works fine when everything is fine, but the leaks in these abstractions force the developers to soon know the details.
So if services are autonomous, ie they should be independent of every other system, why are there specifications like WS Transaction which are making systems dependent on each other.
The message that everything is a service and services are not object oriented is not correct. Behind services are OO components which still do the work.
Some one here was pointing out that every now and then the processing power of our systems becomes so much higher that we as a industry need something new to make out lives more complicated.
SOA makes testing a hell? Since the premise of service is contract/schema and not data, there is a new problem that we only talk about the syntax of the contracts than the semantics.
Here we are fifteeen years later, still finding answers to the distributed problem.
Also there are a bunch of Microsoft employees from the team system group in the class, who had some interesting views on what services mean. Hopefully they will solve the problem of distributed software developement( Oops some more leaky abstractions!!)
Are we making the realm of software development more complex than we really need to. Do we really need to solve this distributed problem?
We first define a complex problem ( Distributed computing ) and then define a much more complex solution ( Well may be Indigo will solve all of this ) when we really could have focused on some other simpler non distributed plaftorm. Why are all the Java folks suddenly talking of simpler things like Spring Frameworks and simpler API’s.
Oh well:)