The Gartner hype cycle for Application Infrastructure Middleware, Platforms and Architecture 2007 says that SOA is sliding into the trough of disillusionment. That’s great news because it means the meaningless hype is substantially behind us and we can look forward to climbing the slope of enlightenment.
The recent rise and fall in hype around SOA takes me back to the late eighties when there was similar hype around object-oriented technologies. OO had a similar “business case” to SOA in that it was supposed to magically provide faster and lower cost development through re-use of OO libraries and assets. “Agile” is the word we would use now…but I don’t recall it being used at that time.
At the same time as we had all the OO hype, there was a lot of confusion about OO languages (at the time there was really on SmallTalk and C++ on most peoples radar), about OO concepts – what is an object, what are the right object sizes, structures, relationships? And there were many disasters involving software developers trying to shrug off procedural feet of clay and launch into the new OO paradigm. Lack of standards were a big problem too…C++ compilers and libraries were not interoperable.
And the promises of re-use never really got of the ground without substantial amounts of “Governance”.
So what happened to the OO hype? It magically disappeared into the background. Noone ever talks about OO now, it is just a given. But there are some interesting events that happened along the way.
A new OO-based languge (Java) came along to effectively “democratise” the concepts. People no longer had to struggle with the complexities of C++ in order to use OO. Java also came with a rich set of class libraries that gave you an awful lot of power out of the box – previously only available through buying expensive commercial class libraries. I think it was this set of standard classes that engendered a whole raft of re-use.
Another important milestone for OO was the emergence of design patterns as a way of communicating and recording OO best practices. And more recently we have some pretty good innovations to support agile development pactices – things like continuous build and integration which automate a lot of the grunt-work involved in the software development lifecycle.
So what will the SOA landscape look like in 10 years time when its a “no-brainer” and everybody is operating in a services-world? Presumably SOA design patterns will have emerged to address the confusion around service concepts – what is the right size, structure, relationships between services?
What will be the platform of choice for developing, producing and consuming services?