Tuesday, January 18, 2011

Oracle Fusion - Avoid it if you can

The project I was working on used Oracle Fusion 10g for the last 3 years.  It is scary to look back at how bad it was when we first started using it.  The quality and performance back then were abysmal.  How Oracle gets away with with pushing out Beta quality (if that) and still charges an arm and a leg for it is beyond me.  10g has improved a lot in the last 3 years (it had to) and 11g is supposedly better but I would still stay well away from it if I had any choice.

So why was it selected for the project in the first place ?  From what I can gather the decision was made very early in the project and was no doubt done by managers looking at Oracle sales material.  Oracle software seems to be able to generate a large checklist of inclusions which helps gets the sale and justify the price but once Oracle has signed you up you're stuck.  An extra "bonus" is that they license by the CPU so the worse the software performs the more you have to pay !

Middleware is an interesting product since it costs a lot but doesn't actually do anything by itself.  Oracle's position is that they provide the middleware and then someone else develops on top it to produce the end product.  This situation means the developer finds all the problems and has to deal with Oracle Support to resolve the problems.  However dealing with Oracle Support is such an arduous and time consuming process that one often finds workarounds rather than logging a defect.  A problem will only be dealt with if you can come up with a sample program to demonstrate it and if you have applied all the latest patches etc.  To do this you usually have to figure out exactly what is failing and why.  Our project had a number of people adept at debugging and decompiling the Fusion stack to try to narrow down a problem and understand what a particular Java exception meant.

So what specifically is wrong with it ?
Let's start with the motto.  "Productivity with Choice" is a complete lie.  There is little choice (you're stuck with Fusion - get used to it) and you can say goodbyte to productivity.

Overall quality and user (ie developer) friendliness is a huge issue.  Things can fail in so many different ways, often due to incorrect input but the error messages (if any) don't help work out the problem.  Google usually doesn't help and Metalink's usefulness is limited so that when it finds something helpful it is the exception rather than the rule.  Debugging and decompiling the stack or a lot of trial and error become your tools to diagnose a problem.

JDeveloper looks like a useful tool but it never fails to disappoint, especially with BPEL.  It has a pretty GUI drag and drop designer for BPEL and also provides a source code view into the XML.  Unfortunately the integration of the two views is fatally flawed and you end up losing work.  I am told there is a particular method of saving work before changing views that leads to less frustation but after having garbled text when scrolling (some problem with dual screens I am told), frequently finding changes going missing and then a complete lock up I lost patience all together and started using a text editor (notepad++).  My loathing for BPEL is no doubt related to my frustation with JDeveloper and the suboptimal experience of programming using XML in a text editor but that's the subject of another post.

The ESB caused so many problems that we had to refactor our code to remove it.

The clustering seems half baked.  The way it works is all hidden, there is no API to integrate your own components with it and the Oracle supplied components have varying degrees of support for it.  For example, a BPEL process only needs to be deployed on one node (and then the BPEL engine replicates it to other nodes) but an EJB needs be deployed separately on all nodes.  Configuration changes via the web consoles are not always replicated, etc.

There are plenty of other issues but since I have left the project they are starting to fade (maybe this debrief is starting to work).  Feel free to add more in the comments.

With all the problems you have to ask your self what value is Fusion adding.  If you take the best Open Source Application Server that offers the level of support you need what does Oracle Fusion offer on top of that ?  With an Open Source solution you can avoid the per CPU licensing and you don't have to be stingy with developer systems.  With the money you save you can probably develop any extra components that the Open Source solution might be missing and you can win Karma points by making contributions back to the Open Source project.  You will also no doubt find that your questions and defects get more attention.

So do yourself a favour and evaluate all other possible options before choosing Oracle Fusion.

No comments:

Post a Comment