Steve Vinoski’s interview at InfoQ has some interesting thoughts about CORBA and its future. Even if you don’t use CORBA it is still worth watching the interview to understand what are the possibile ways one can try to design a distributed enterprise class application.
Here is a list of interesting points that Steve makes in his interview:
- If you are building a large enterprise scale distributed system, he says he’d prefer using REST over CORBA
- Suggests looking Erlang for concurrency and middleware applications (I’ve read a lot about how well Erlang scales when compared to most of the other dynamic languages). Python’s threads are not really that scalable given the GIL, don’t know anything about Ruby.
- From his interview, he seems to suggest that CORBA is now relegated to integrate with older systems which have been built using CORBA – which is probably true as I don’t see much being published / talked about CORBA in the developer community. It might be a fad, and the true designers who have seen it all might still prefer CORBA. If you are one of those, I’d be interested in knowing your thoughts when trying to design a maintainable, distributed application.
- He says that the idea of the IDL as an interface is not really true. And that, the REST verbs can pretty much replace what the IDL’s verbs (functions are). This I think is possibly an oversimplification of the IDL. However much fanciful REST verbs might look, they might not provide the richness of functions in a IDL (of course, IDLs have their own drawbacks). I think that equating them to REST verbs might be a stretch.
The usual language of choice question does bring an interesting point. Most of the application developers try to fit the language to the problem, rather than using the language that best suits for the problem. In such a case doing cross-language integration is not a simple task. If I were to write a MQ in Erlang with all the goodness the language provides, integrating it with a Java application (which seems to have become the language of choice for pretty much all the applications – from banking systems to rovers on Mars !) is not easy.
In such a case, are architects and developers left to fit the language to the problem ? Will attempting a cross-language middleware create another architecture like CORBA ? And the bigger problem is a cultural one. If the product I am building uses Java as the primary language, then how do I convince architects / developers that there are certain parts of this application which are best written in (say) Haskell / Erlang / Lua (or any other language) ? Does the question of consistency and purity of design come in the way of choosing the right tool for the job ?