Pure Danger Tech


Terracotta scalability and licensing

17 Dec 2009

Stu Hood made a couple comments on Twitter today that I wanted to comment on in a bit longer form:

@stuhood: I adore the concepts in Terracotta, but until they grow up in terms of licensing, awesome projects like Terrastore are off limits.

@stuhood: I meant the pay-wall in front of Terracotta’s linear scaling: seems the community version isn’t for production use?

I’ll preface this by saying I know Stu and I’m not trying to call him out or anything. I think this is a misunderstanding of how Terracotta works in open-source and commercial forms. Terracotta’s open-source community version (which you can use for free) can and is usable in production scenarios. We know of hundreds of open-source production users – every time we’re at a conference someone we’ve never heard of wanders up and says they’re in production with Terracotta.

The open source version is designed to exhibit linear scalability by adding new application nodes *up to a point*. That point is reasonably high but it’s hard for me to give a hard criteria on what it is – it depends on # of objects, object size, # of locks, transaction volume, etc. Many applications are perfectly fine using a single active server (with N hot backups). We do most of our basic testing on 8- or 16-node clusters with a single active server and we can easily show linear scaling for apps we test in that kind of environment. You can buy a support license for that usage if you want to get patches, 24×7 support, extra monitoring apps, etc. Or not. It’s up to you. We call this package the EX version. Same performance and scalability as the open source version, but with support.

However, some people are going to need greater scalability (dozens or hundreds of nodes), often due to the number of clustered objects involved. If you get to a point where the single active server is the bottleneck, you can buck up for an FX license which lets you run multiple active servers. When you use the FX version, objects and locks are automatically striped across all the active servers. With FX we also test for linear scalability as you add active servers (in addition to when you add active nodes). The upcoming Terracotta release (3.2 – in RC testing now) has a ton of optimizations to further improve performance of multiple active servers and we’re seeing some pretty crazy numbers over older releases.

With respect to the licensing maturity, I think this is *exactly* what a mature license strategy looks like in open source. You make the product free to try and use for people who are building and testing new applications, or have applications that don’t need extreme scale in the near term. And if you need to do more, at some point you have to start buying a license to get that extended enterprise-level scalability. When you make that change, you don’t have to modify your app, just modify the configuration of the cluster nodes. That said, many apps won’t need to use the FX server, and in that case the open source (ES) or support version (EX) is sufficient.

If you want to have a company with a team of full-time developers making things insanely fast, testing for failover (we do all the cable pulls and power off testing, long running tests), running a big performance lab, etc, those things cost real money. I think the Terracotta strategy strikes a very reasonable balance point that makes that possible.