Where To Use Terracotta
Terracotta helps simplify enterprise application development by providing a purpose-built infrastructure service called network attached memory.
Distributed Caches
Applications that have caching already and those that are looking to add caching for performance should both add Terracotta to the architecture. Distributed caches shared through Terracotta improve throughput without changing the code. This is because sharing cache data across application nodes improves cache hit rate by allowing one server to populate the cache on behalf of many. If you already have EHCache, OSCache, JBossCache, or other frameworks integrated to your application, you will see as much as one hundred times throughput increase with Terracotta.If you are adding the caching design pattern to your application now, you should select caches that Terracotta can cluster. Using any other clustered caching approach will actually impact your source code relative to the single-server implementation.
Hibernate
While using an O/R-mapper to get to system of record data is easy and powerful, tuning and scaling such stateless applications can be hard. Terracotta helps to reduce pressure on the database caused by O/R-mapped applications deployed in a clustered environment. Use it to cluster your Hibernate second level cache.Altenatively, you can get 10X or more scale from your Hibernate applications by using Hibernate in disconnected mode and using Terracotta to make Hibernate POJOs shared and durable while outside Hibernate's control. Terracotta ensures durability so you won't lose any changes while disconnected from Hibernate. Automatic Session reconnection means you can easily flush objects back to the database when you no longer need them.
HTTP Session Clustering
Terracotta is used by Java websites both large and small to cluster web sessions. When clustered by Terracotta, web application session becomes highly available without actually being replicated to every app server in the cluster. This leads to scalable applications especially when used in conjunction with an HTTP load balancer.
Virtual Heap for Large Datasets
With Terracotta, Java applications can address heap in excess of one machine's physical RAM. Your JVM can spill data to the Terracotta Server Cluster. The Terracotta Servers can, in turn, spill data to disk. This two-tier system ensures high performance by keeping data as close to the processing context as possible. It also makes it possible for 32 bit systems to access terabytes of data.
Cluster OSS Frameworks
Terracotta enables developers to build highly available, highly scalable applications with a variety of Open Source development frameworks, including some that do not have built-in high availability features.
Terracotta supports these frameworks because of the simplicity of Network Attached Memory. Direct framework support means that developers can rely on the integrated projects without having to integrate Terracotta by hand. More frameworks are coming online weekly. We achive this integration through Terracotta Config Modules. You can use a module by simply downloading the appropriate module. You might also consider creating your own Config Modules for bundles of code or clustered abstractions you wish to build for your own team.
Master Worker
Master - Worker is a design pattern that Terracotta users leverage to divide and route large workloads around a grid of JVMs.
To Deliver Master - Worker Terracotta uses both POJOs and frameworks hosted on our own project Forge.
POJO Clustering
Terracotta works with or without a container. Terracotta works with Open Source and proprietary frameworks. This is because Network Attached Memory works with the POJO's in those frameworks and it works the same for your own POJOs. No Spring beans, getters and setters, serialization, or other interfaces are required in order to use the technology.
Terracotta also supports Spring explicitly so when you decide to wire up your application using Spring's dependency injection, or when you start to use frameworks and abstractions like Spring Webflow, or Spring Batch you can cluster those applications without the need for RMI or Spring Remoting in your application.

