We’ve been teasing the twitter-sphere for a few days now about some big Terracotta news and now I can finally talk about it.
Terracotta has entered into an agreement with Greg Luck, the copyright owner and primary developer on the Ehcache project. Ehcache is of course the most popular open source Java cache library. The agreement means that Greg Luck will join Terracotta, the Ehcache copyright will transfer from Greg to Terracotta, and Terracotta will take over hosting Ehcache.
Before going any further about where we’re headed, I want to answer some possible first questions you might have:
- Open source – Ehcache is open source. Terracotta is open source. No change.
- License – Ehcache currently uses the Apache 2.0 license. No change.
- Hosting – Hosting will move from SourceForge to the Terracotta Forge. The exact details of this are still in progress but Terracotta will take over the hosting of source code (svn), mailing lists, issue tracking, forums, etc.
- Greg Luck – Greg will continue to be heavily involved in the direction of Ehcache.
- Existing functionality – Ehcache will continue to be, by default, a non-clustered cache with exactly the same usage patterns it has today. No change in basic usage.
Terracotta has been working hard this year on distributed cache use cases. We are on the brink of releasing Terracotta 3.1 which includes a new smoking fast Hibernate second-level cache implementation. That Hibernate cache implementation is built on top of DistributedCache from our Terracotta Integration Module tim-distributed-cache. This picture shows some of our most visible map and cache support as of the 3.1 release:
The DistributedCache is built on top of the highly scalable ConcurrentDistributedMap. We were planning to continue building out the DistributedCache feature set, although much of this work would have been rebuilding features that Ehcache already has. Instead, we think it’s a lot better use of our time to step back and consider the basic feature set in this area and determine the best way to create the best distributed cache available.
And it seems pretty clear that directly integrating a distributed memory store into Ehcache makes a ton of sense. It takes advantage of all the existing Ehcache APIs and functionality and all of the DistributedCache goodness we’ve been working on to put together a cache that is both full-featured and clustered. (I also expect it may have modes for both copy-cache and shared-object-cache modes but that remains to be seen):
If you are an existing happy user of replicated Ehcache, you might be wondering what is in this for you? First, the Terracotta cache maintains a consistent view of the cache across all nodes (which is not true of the current replicated Ehcache modes). This is of course, a critical value proposition of Terracotta, although we have also been exploring ways to selectively weaken consistency in read-only cases for even higher throughput.
Second, you gain all of the visibility in the Terracotta developer console. We currently have extensive monitoring capabilities for the Terracotta core platform and Terracotta Hibernate Cache product. We will continue to invest in cache visibility and monitoring functionality, giving you the critical insight into your cache that lets you know whether your cache is working for you or against you.
If you’re a happy user of the regular old single JVM Ehcache, you might also be wondering what is in this for you? By moving support of Ehcache from one user to Terracotta, Ehcache gains all the supporting infrastructure – a QA team, a lab full of testing machines, and a bunch of performance-obsessed cache hackers.
In the future, I see Ehcache will continue to increase in performance, will gain a tightly integrated distributed cache option, a smooth upgrade path from single VM to a cluster, and outstanding visibility into what’s going on inside your cache.