Of all the new and exciting stuff I have seen at Oracle OpenWorld this year, two new technologies (at least to me) stand out. The first is CEP (Complex Event Processing), which I am sure will be covered in another post on this Blog in soon. The other is Oracle Coherence, known as Tangosol Coherence before Oracle acquired this technology recently. To describe what this technology is all about, lets start with a quote from OTN:Coherence provides replicated and distributed (partitioned) data management and caching services on top of a reliable, highly scalable peer-to-peer clustering protocol. Coherence has no single points of failure; it automatically and transparently fails over and redistributes its clustered data management services when a server becomes inoperative or is disconnected from the network. When a new server is added, or when a failed server is restarted, it automatically joins the cluster and Coherence fails back services to it, transparently redistributing the cluster load. Coherence includes network-level fault tolerance features and transparent soft re-start capability to enable servers to self-heal.
I don’t know what your impressions are after reading this, but my first thoughts were along the lines of: "Sounds like very complex cluster configuration and management, and probably it will be very difficult to program against". However, after listening to a number of excellent presentations on the subject, and after having downloaded and "installed" the software (you’ll find out why I put that between double quotes shortly), I can safely say that although nothing in the OTN quote above is untrue or even exaggerated, working with Oracle Coherence is ridiculously simple.
Demystification occurs the moment the download begins: Oracle Coherence comes in the form of an 8Mb(!) zipfile. After unzipping it a few moments later, it turns out there is not even an installer. There’s a couple of jar files. There a documentation directory with a User Guide and Javadoc. And there is a "bin" directory with a few shell scripts. The first script is called "cache-server.cmd". Double-click it and a console window pops up with some logging that, upon examination, tells you that a cluster has been started with one member. Double-click it again, and a new window pops up telling you that a new member was created and added to the existing cluster. A quick examination of the first window shows that the arrival of this second member was indeed detected. Just for fun, you can launch a few more "cluster members". For some more fun: if your network allows multicast, "install" Coherence on some other machines in your network, and lauch a few servers on those machines as well. They will find eachother automatically and form a cluster (actually the term Coherence uses is "data grid") without any explicit configuration! The last directory is called "examples", and a brief examination of some of the Java code in it shows that the programming API is equally simple (not to say simplistic), and basically, if you know how to program against a java.util.HashMap, you’ll know how to code against a Coherence data grid!
Does all this sound too good to be true? Or, does this make you feel that this technology sounds TOO simplistic to be able to cope with real life, large, performance-critical situations? I invite you to come and find out for yourself at the AMIS Query "Oracle Coherence – RAC for Middle Tier, or: the Super-Cache" on Februari 13, 2008 and listen to Jonathan Hall of Oracle UK, hands-on Enterprise Java architect, as he talks about distributed caching and data grids, exploring the differences in caching topologies, scaling out and then building up to advanced data grid features, that can only be realised when there is consensus amongst the cluster members and there is a coherent view of all the objects within the cluster.
The session will begin at 16:00 with dinner at 18:00 and end with a hands-on session where you can try all this out for yourself. More information about this session, including registration information, can be found here. I hope to see you all there! From personal experience, I can assure you you’ll be psyched, and that it will change the way you think about clustering and grids forever. This happened to many Oracle Product Development teams as well: at OpenWorld, many speakers from these teams mentioned being in close conversation with the Coherence team to find ways to leverage their product using this technology. In future releases, Coherence might provide the dehydration store for the Oracle SOA Suite, the infrastructure data for the Oracle Application Server, a distributed cache for Toplink, and in my opinion, this is barely scratching the surface of all the possibilities.