"With 12 of the team working on the same database, someone at some point will make a change that disrupts others."
The delays, often caused by disruptive changes, were holding Bennetts back, and slowing development. Ryan wanted to move from a shared development model to dedicated database development, with each developer having their own copy of the database.
While some developers had sandbox databases for local development, they weren’t easy to refresh, and weren’t stocked with sufficient data to do any significant development testing. The result was that most developers ended up trying to work on the same test environment database. The team had wanted to shift to using proper, dedicated development databases for a while.
“The blocker was cost and time,” Ryan says. “The only way to provision a database for use in development or test was to do a backup and restore. It takes an hour to set up a 15 GB database and I just didn’t have the time or storage capacity to set up 15 or more database copies for development and testing each time we started a sprint.”
The problems were mounting though, and it was restricting the team’s productivity. Some new features required changes to multiple database objects. In the shared database, there was a high chance that this would cause conflict for developers working on other features. If a developer needed to test locally, he or she had to juggle space locally to make room for a database restore, or spend time ‘mocking out’ the parts of the database and the data that were needed.
“We have an issue at the minute where we end up with a long development queue,” Ryan explains. “Once a feature has gone into test, we often have to block development of other features to avoid conflicts and inconsistencies.”
"We have an issue at the minute where we end up with a long development queue."
"A big win for us is giving each developer the freedom to work on their own database."
Productivity is the big advantage Ryan sees in adopting SQL Clone. It’s not just about saving time on current provisioning processes, it’s about giving the team the ability to introduce new practices and processes that will enable them to do more. What if they wanted to compare different approaches to developing the same feature, or the behavior of before-fix and after-fix versions of a feature, for example?
“Think speed of change,” he says. “With SQL Clone, I could create a couple of clones on my machine from the same image, run simultaneous tests against each clone, and compare the results at a database level. All without worrying about space or performance issues.”
Ryan is now looking forward to rolling out SQL Clone across the team. In development, each developer will have their own copy of the database. In test, there will be multiple environments with an identical copy of the database to test different features, which will be quickly refreshed or deleted when each feature is completed.
Web applications at Bennetts support a large and growing customer base. The team need to quickly deliver software that the business can trust to function, perform, and scale as they expect. For Ryan, dedicated developer databases and the ability to test with realistic data are central to this goal. “We can get around space issues by buying more disk capacity, but that doesn’t solve the problem that database backup and restore is, fundamentally, a ‘heavyweight’ provisioning mechanism. Our hope is that SQL Clone can provide a quicker, lighter approach, better suited to our development and testing requirements.”