Growth and the Future
Terracotta also recently received another round of funding to the tune of $10 million. What do you plan to do with that?
Terracotta has very many paying customers today and we add more every week. This year, however, our goal is to grow the revenue by about 10 times from last year. You might think that this implies we will invest in scaling the sales team by 10 times, but we will not. We are investing in growing the core engineering team with these funds. We are currently the largest clustering entity that I am aware of [20 to 30 developers working on core product almost 24x7 around the world]. We intend to grow the team in order to introduce more performance, more tuning tools and more platforms and frameworks even faster than we deliver these today.
Our CEO and I are in total agreement that our business should scale by making the product easier to integrate and faster to deploy toward the goal of saving yourself database licenses and CPUs. It shouldn't grow purely by brute force.
What is Terracotta's value to the customer? That is, why would a customer choose Terracotta over ... Oracle or GigaSpaces or Appistry?
Terracotta is designed to give developers pure Java and object oriented programming universe where the JVM boundaries melt away without needing messaging or databases while simultaneously delivering a runtime where any JVM can be stopped arbitrarily without regard to what it was doing-stateful objects and stateless memory written to disk in a single platform at the same time.
This lowers the database dependency for the average app by as much as 90 percent while simultaneously increasing application throughput by 10 times, as measured by our users.
Users regularly report that we are 10 to 100 times faster than alternatives, and since we are flushing all data to disk at those speeds, we can uniquely be used for mission critical data that you would otherwise assume must belong in Oracle's DB. Sure, keep your users, sales order, products and inventory information in Oracle's DB. But you can work with these objects for arbitrary amounts of time outside Oracle without risk of loss or inconsistency.
We're fastest, most reliable, and, at the same time open-source software (OSS)-so free unless you want to pay.
What's Terracotta's relationship with the Spring Framework and SpringSource the company?
I have lots of respect for the Spring folks. I wish we and they had more time to spend together, if simply for the fact that they want to make enterprise Java applications very easy to build and maintain while we want to make apps easy to scale and run in a production environment. Our charter is quite complementary and we both understand that. But both they and we are mostly heads-down working through giant queues of features in our own products.
That being said, Terracotta has direct support for running Spring application in a Terracotta environment. I think more than 50 percent of our users use Spring. It is and will remain important to us.
Some critics have said Terracotta's technology appears to be a lot of hocus-pocus-that your process of enabling users to run a clustered application but yet write to a local JVM is essentially a lock-in strategy. Is that true?
I think you are asking two questions. I used to hear the hocus-pocus claim in regards to our technology sounding too good to be true. We open-sourced so that those who are so inclined can read the source code to see how it works. We also open-sourced because the OSS community wanted to integrate and rely on our approach inside their frameworks and products which was impossible if we were proprietary. Today we integrate with and are used by more frameworks than all other options combined. As for lock-in, yes, you are locked in with Terracotta. We are the only solution that clusters applications at a JVM-level allowing them to scale nearly linearly without changes. I like to say that with Terracotta you cluster the application you wrote instead of having us dictate to you how scalable applications must be built. That's lock-in, but only because the alternatives ask you to tightly couple and embed their architecture and scalability approach in everything you do.
What's Terracotta's strategy for scaling transactional applications?
Terracotta is internally transactional and all nodes always have a consistent, up-to-date view of the data. As a result, our view is leave the replication to us especially since we don't replicate. Avoid transactions as much as you can. Only introduce them when you want to read from one system of record and write to another atomically [e.g., writing two databases at once as part of one business operation].
Always remember that Terracotta persists to disk at in-memory speed so getting us to participate in a JTA [Java Transaction API] transaction using an external data source as our backup is just not needed.