The Qumulo product team is asked from time to time why we ship software every two weeks. The simplest answer is “because we can,” but there’s a bit more to it than that. Ultimately it’s about what is best for our customers and what drives the innovation that they’re looking for in storage. Let’s examine why this matters to our customers:
We build Qumulo Core — our flagship data-aware scale-out NAS — in small, incremental pieces in a way that ensures our software is always in a shippable state. This methodology, a tenet of Agile development, allows us to:
- Deliver software as soon as it’s ready: When we have a feature ready to ship we ship it instead of waiting for the end of a long multi-month cycle and combining it with a laundry list of other features. Holding a feature from our customers while other features are being worked on doesn’t make sense to us or to them, so we don’t do it.
- Be responsive to customer needs: As customer and market conditions change we are able to dynamically adapt, reprioritize, and respond. The fact that we’ll never find ourselves shifting focus and dropping features five months into a nine month release cycle frees us from “sticking to the plan.”
- Deliver quality software in small increments: Monolithic releases are often executed by branching the codebase apart, adding a bunch of new code to each discrete branch, sourcing it all back together again, and grinding through long regression test cycles designed mostly to make sure the branching and sourcing worked correctly. Qumulo’s agile methodology enables us to maintain one stable codebase, always shippable state.
So how do we do it? We build everything incrementally in small pieces. Each developer’s code is run through a gauntlet of automated tests as it’s checked into the singular codebase. In addition, each day’s aggregate code submissions are collectively run through tens of thousands of tests for correctness, quality and performance. If a new piece of code causes a test to fail or negatively impacts performance we know it and are able to immediately address it. Every time. Every day.
One of the benefits of the Agile methodology is that even big features, like erasure coding and snapshots, are delivered incrementally. Every day new small pieces of functionality are added to the production codebase which ultimately become much larger features, but our customers don’t see those aggregate features until we have added enough functionality to make them useful and production-ready. By then, we will have tested it hundreds of times and added thousands of new tests; as the features grow, the continuous improvement testing for those features grows as well. And most importantly: The codebase and test suites are all hosted on Qumulo clusters that we upgrade every two weeks, just like our customers.
We don’t see any reason why Amazon, Google, Facebook and other SaaS providers should have a monopoly on delivering software this way. We are excited about delivering to our customers new features and functionality for years to come. And we will. One two-week increment at a time.