Well, I am not familiar with Terracota on detailed level, but on a face value it looks like what they provide is a Clustered JVM – Not a Grid Computing platform. I am not sure how well it scales given its master-slave approach, but in Grid Computing arena it looks like it lacks certain key features, such as - Grid task deployment
- Peer class loading
- Fine grained job scheduling and collision management
- Support for non-homogeneous environments (what if one computer is twice as fast as the other?)
- Fine grained control on how a job gets split between grid nodes and which node gets which piece of computation.
- Fine grained control over job fail-over logic – when and to which node a job should fail-over to.
- Support for connected tasks and a concept of task session – what if one job has to signal the others about a certain event?
- Checkpoint management for long running jobs.
Having mentioned the above, I am sure Terracotta has many features that are not found in many Grid Computing products today and certainly found its niche in distributed computing market.
Best,
Nikita Ivanov
http://www.gridgain.org
Since Terracotta was mentioned and answered by Nikita (who politely points out he is not familiar with our products, so no worries), I just want to clarify two things. While many grid-associated vendors believe that Terracotta cannot "do grid" because it has no API, this is a misconception. Our grid framework is located here:
http://www.terracotta.org/confluence/display/labs/WorkManager
It can be used for distributed queries, partioning of work, and it has interfaces for handling failure, etc. As a general rule, Terracotta is not against API's nor is it demanding that people code in POJO without frameworks. Terracotta likes to enable HA and scale-out of frameworks like Spring, web app frameworks like Wicket and Rife, or asynch frameworks such as SEDA and java.util.concurrent. This BTW suggests that a framework like Gridgain could likely work ON TOP of Terracotta as opposed to being directly compared.
Another misconception that we admittedly caused out there is that we are a "clustered JVM." We like to say that we cluster _at_ the JVM-level which means we plug-in to Hotspot or IBM VM...not that we implement our own.
Thanks,
--Ari