The cloud phenomenon is an interesting one, and a natural evolution of the outsourcing model. While a lot is going on around cloud computing itself, little is being said about reliability.
Do clouds offer reliability? In a way yes: caching systems like Terracotta, Gemstone or Oracle’s Coherence offer a fail-safe mode for availability of your data in the form of caches. So if a cloud node goes down, chances are that a live copy of the data still exists somewhere else, which means that your process can continue working elsewhere.
All is fine (or mostly fine) if you are working with a single database and are processing, say, web requests in the cache. After all, if you only have one database and no other resources then you don’t even need something like a transaction manager (or Atomikos, for that matter). There are at least two situations where things change:
- If you queue cache updates to enable write-behind, then you find yourself in a queuing scenario and are processing jobs from a queue to a database. Enter distributed transactions.
- If you are not processing web requests but rather get queued requests from the start. Enter distributed transactions.
In both cases you should at least consider using a transaction manager. In both cases, Atomikos is a good choice for the following reasons:
- It’s open source (or at least our basic version is)
- It’s very light-weight and easy to deploy (meaning it lends itself easily to cloud-oriented virtualized configurations)
- It bundles over 10 years of experience and market leadership
- It provides full crash recovery and all other bells and whistles - unlike many of the built-in solutions that you will find in a cache
So in that way, Atomikos provides “reliability for the cloud”.