A small firm, Terracotta, is bringing Java know-how to managing applications in a way that improves their scalability while leaving the application code unchanged. In effect, Terracotta clusters Java Virtual Machines underneath the application, tracks JVM activity, and caches the Java objects and data so that any machine in a server cluster may retrieve them from system memory.
As user traffic to an application builds, this approach has the effect of building a bypass to the congestion center of the typical Java application -- the time-consuming calls to the relational database for data with which to build temporarily needed software objects, and the data they will consume.
Instead of waiting for interactions between the database on disk and application server, Terracotta serves as an intermediary or a kind of alternative database, where data -- particularly scratch data, not the transaction result but all the objects and data needed to execute the transaction -- can be stored in memory until they are needed again or can be safely flushed.
And Terracotta performs these functions not just for one Java Virtual Machine but for as many as needed to meet demand. By clustering the JVM instead of copies of the application, Terracotta simplifies and streamlines many aspects of configuring for application performance. It allows more servers to be added to the machine cluster as traffic builds.
"They offload functionality that the database typically gets bogged down with," said Brad Shimmin, an analyst with Current Analysis. And Terracotta's approach "doesn't require the developer to do anything." Terracotta, on its 2.6 release since Monday, gets added to the application infrastructure, monitors the functioning Java Virtual Machines, and manages their data and object traffic for a server cluster.
"It's not a case of the developer saying, 'Oh, my God, I've got to embed another Java library in my application'," said Shimmin.
Terracotta is doing the opposite of the server consolidation that is going on elsewhere in the data center, said Amit Pandey, Terracotta CEO, in an interview. Instead of subdividing a physical machine by adding applications, Terracotta 2.6 is multiplying JVMs to make one server handle more traffic for one application. As in other forms of clustering, the Terracotta approach allows a JVM to fail without losing its transactions or data, shifting them over to another operative JVM.
Terracotta keeps track of objects and data in server memory and shares that information across a server cluster. Its function in some ways is duplicated by an in-memory database, such as Oracle's TimesTen, that can sit in front of a disk-based system and speed performance. Given its data tracking abilities, it also resembles Oracle Tangosol, which links up server memories into a grid and manages data for the group.
But Terracotta's expertise in clustering Java Virtual Machines springs from the experience of Ari Zilka, a co-founder and chief technology officer of the San Francisco firm, and veteran of scaling up Wal-Mart's Web site operations a few years ago. Unlike Oracle, Terracotta 2.6 is also open source code. It has been deployed by Comcast, Pearson VUE, PartyPoker, and other large-scale Java application users.
Pandey says he knows of 150 deployments, most of which have occurred over the past year as the product became open source code. Terracotta is available in commercially supported versions for $2,000 to $10,000 per node, with deals averaging $7,000 per node, Pandey said.