A few months ago I went to see The Human League when they came to Manchester. They were Britain’s Best Breakthrough Act in 1982, don’t tell me my finger isn’t on the pulse. I’m not a superfan, I just like a few of their songs. I’m certainly not hipster enough to talk about their “earlier work” and “rare b-sides.” In fact, the songs I like are mostly the usual crowd pleasers. The concert was heaving, and for someone who doesn’t see live music all that often it was LOUD. As they were going through their repertoire I happily belted out the ones I knew. But the honest truth is for the songs I’m not that familiar with, there’s a part of me thinking, “what about the classics?” They closed with “Don’t You Want Me” and the crowd went bananas, and this particular passing fan went home delighted. The increased volume level that accompanied the encore told me I wasn’t the only one holding out for the favourites. I’m sure this is a quandary all bands face when they’re launching a new album. How much do they focus on the new material versus reinforcing what made them popular in the first place?
The 5 years we have had have been such good times…
At Couchbase we’re locked in the studio working hard on our fifth album, Couchbase 5.0 – previews are available now. If you’re relatively new to Couchbase, here’s a quick recap of our back catalogue. Our first edition, (“Simple, Fast, Elastic”) was a pure Key-Value store. It was scalable, but my word it was fast. The product was built with a memory-centric architecture, written in C and based on the popular memcached project. This debut earned us a lot of notoriety and had some great success. We followed that up in 2.0 with a fully fledged document store including indexing and cross datacenter replication (XDCR) capabilities. For our “difficult third album” we completely rewrote our internal plumbing to make it more fault tolerant and lay the groundwork for the next set of features. Our 4.0 release went in a significant new direction and one that really changed the game. It introduced N1QL, a SQL-like language familiar to the masses to query and manipulate JSON documents. Along with this came a powerful secondary indexer and an integrated mobile solution complete with cloud synchronisation. Couchbase Server was no longer the preserve of the alternative stations but getting serious airplay in the mainstream.
5.0 will build on this even further: production full-text search, role-based access control for documents, new bucket capabilities, a brand new UI, and an analytics service preview. It’s going to be another huge progression for us, and the product is barely recognisable from version 1. But often I speak with customers and they inquire (possibly concerned), “what about the classics?” What of that high performance key-value store that made people stand up and take notice of Couchbase in the first place? Given all of these additions, it might have been all too easy for us to forego some of the early qualities that brought us success. In fact, the opposite is true.
Don’t forget it’s me who put you where you are now…
At Couchbase we are obsessed with performance. We always have been and always will be. This obsession is a voice in our heads at every turn reminding us what brought us here . The Key-Value (KV) Engine development team takes enormous pride in ensuring that each release is an improvement over the next. For example, take a look at how previous releases stack up for one particular Key-Value throughput metric:
This graph is worth a second look: our current edition, 4.x, is more than twice as fast as its 3.x predecessor, and 3.1.6 was no slouch. In a follow-on post I’ll go into the technical detail of how these improvements were achieved (tl;dr hard-fought profiling, analysis, use of efficient multithreaded C++ data structures, and cache line awareness).
You’d better change it back or we will both be sorry
Maintaining performance takes a lot of effort. Couchbase Server is relied upon for the smooth running of thousands of mission-critical applications in all manner of industries. Many developers are familiar with the dilemma, “I can make this fast, but I’m not sure how safe it is.” It’s not that functionality always wins the debate over performance – at Couchbase there is never a debate to be had. We always design and implement features with an eye on how to make them fast, but functionality always comes first. The culture to improve performance initially comes from holding a high bar in terms of preventing performance regressions. We have an independent team that bombards every single build with rigorous performance tests and scrutinises the results. Take a look, the list of metrics is endless. And from time to time when we introduce performance regressions they let us know all about them.
We have been relentless in the pursuit of new and advanced features and will continue to do so. I’m hugely excited about what’s coming in 5.0 and beyond. Interesting new use cases will be opened up by these features and we’re sure to get a new army of first-time downloaders checking us out because of the brand new content. We are fast becoming the defacto standard for building systems of engagement. But rest assured, no matter what features we develop, for those of you that just want the old classics, we’ll continue to deliver the things that matter most to our some of our core customers: scalability, high availability, and consistently low latency, high throughput operations.