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".