Startup Java infrastructure software maker Terracotta has taken the wraps off version 2.7 of its eponymous Java application scaling and acceleration program.
With Terracotta 2.7, the company is adding support for a bunch of new web application servers and application frameworks, but more importantly, it's trying to get the message out that there is a way to scale Java-based web applications that does not involve upgrading database servers.
Ari Zilka, who founded Terracotta in 2003, was once the lead architect for retail giant Wal-Mart's online store, and prior to that, he was a consultant working for the online sites for Gap, Nike, Harrod's, Intel, Barnes and Noble, Compaq, and Intel - just to drop a few names. And in all of those Web site experiences, Zilka saw the same bottleneck again and again in Web applications: Scaling web apps is not as simple as adding web servers because the databases behind applications had scaling issues too.
More times than not, database makers and server makers were more than happy to convince IT shops that they needed to do a costly upgrade on back-end systems as well as add application servers to boost performance. In many cases, companies created custom scripts to offload and cache data in their databases closer to the app servers to boost performance.
Nearly two years ago, after years of development that was made possible by venture funding from Accel Partners, Benchmark Capital, DAG Ventures, and Goldman Sachs, Terracotta released its product, which is also distributed as an open source program. What Terracotta does - to simplify it greatly - is cluster many JVMs sitting inside app servers spread across a network of hardware and present them as one giant, highly available JVM to all Java applications on the network.
The software stores the transient data in memory for the Web transactions going on inside the Web application servers and collects it all together. That allows one JVM to fail over for another, data to be given to multiple JVMs at once (with locking), scaling up of Web apps by adding servers on the fly as needed, and reduced database accesses because the Terracotta server and its in-memory database (which is based on the open source Sleepycat database) stores data and only goes back to the database when an app server asks for something it doesn't have.
The in-memory data the JVMs are using is also backed up to disk to preserve it. Multiple Terracotta servers can be clustered together in active-active or active-passive configurations, helping to further scale Java applications and to provide disaster recovery.
With Terracotta 2.7, the company is adding support for the Spring 2.0.8 and Spring 2.5.2 application frameworks and Sun Microsystems' open source Glassfish V2.1 application server. Terracotta is already certified to work with Red Hat's JBoss, IBM's WebSphere, and Oracle's WebLogic app servers. It also works with the open source Tomcat, Jetty, and Geronimo servers.
Interestingly, says Amit Pandey, Terracotta's chief executive officer, Jetty is taking off among its customers. Terracotta has 60 customers and 150 installations to date. About 80 per cent of these customers are deploying the software to scale their Java applications, while the remaining 20 per cent are using it to provide high availability for their app servers, which is possible since the state of one JVM can be moved instantly to another JVM using the Terracotta server.
The scaling issue is important for economic reasons. "One customer who came to us said they were told they needed to do a $2 million software upgrade for Oracle databases so they could scale," says Pandey. "We came in and gave them the scale for $200,000."
New in Terracotta 2.7: Hot patching for production systems, which means Java applications don't have to be taken down as elements of the software stack are updated. The software also has a one-click backup button for all data in the Terracotta setup, and it includes a panel to show cluster-wide runtime stats in real-time, including CPU utilization, heap utilization, and transaction rates.
Terracotta 2.7 costs from $5,000 to $15,000 per server node, depending on features, with the typical customer paying $7,000 per node. A single Terracotta server can handle up to 150 nodes, but on heavy Java applications, such as those used in online reservation systems, that gets reduced to somewhere between 15 to 20 nodes per Terracotta server. ®