23 Apr 2017

How the Database Is Your Main Agile Development Bottleneck

8 Tags 0 Comments

Your application developers have long been agile, and you’re trying to get your team on the path to agile database development so you can catch up. What’s causing the bottleneck?

Most database development teams find their processes (especially relational database development) slowed down by a few important differences between application development and database development.

Break the Bottleneck, Win the Sprint

Here are four examples of potential agile development bottlenecks and some advice on overcoming them, courtesy of Daniel Norwood:

1.  Overwriting

When app developers release a new version, then discover it has defects, it’s relatively easy for them to restore the old version and overwrite the new version temporarily.

If you try restoring the previous version of a database and overwriting a more recent version, you’ll likely lose the changes to data (additions, edits, deletions) made in the interim.

agile-development-bottlenecks

2.  Version control

As a single source of truth, version control is indispensable to app development teams. In database development, however, the database itself is considered the single source of truth, yet there are different instances to manage (dev, test, prod, etc.). So, in a sense, “truth” here depends on context.

Unfortunately, in spite of how frequently procedures and functions change, version control is not afforded the same consideration in the database world as it is with application development.

3.  Automation

App developers use tools throughout the deployment cycle and are accustomed to releasing entire code bases several times per week or per day because their deployment pipeline is fully automated.

Database developers deploy scripts to update the database from one state (dev, test, stage, prod) to the next, manually promoting changes to mitigate risk.

4.  Urgent changes

When your business identifies a change that must be made immediately to a production application, the application team can implement it quickly due to the automation of their deployment pipeline.

On the database side, where the deployment process takes weeks, database professionals will likely fast-track the change into production with limited testing. This creates upstream challenges for the database team as those changes must now be applied to each of the test and staging environments to avoid invalidating tests in those environments.

This further complicates and slows an already complex and tedious process.

Agile Database Development: In It to Win It 

To break the agile development bottleneck, it’s not enough to enforce source control for database objects, ignoring the meta-data that influences application behavior and can create equally frustrating conflicts in different environments and deployment phases.

An advanced continuous delivery database management tool enables enforced source control for the entire database – schema objects (table structure, columns, indexes, foreign keys, etc.), database code (procedures, functions etc.) and meta-data (parameters tables, lookup content, dictionary tables etc.), all using the same check-in, check-out process that prevents out-of-process changes and conflicts resulting in the overriding of objects or data that should be protected.

Market leading tools ensure that due process and development best practices are followed. This, in turn, allows you to leverage a single source of truth for database safe deployment automation. And by correlating the check-in with a specific task, it’s no longer a mystery which database changes relate to which tasks. Information regarding changes is saved in the repository, allowing the retrieval of only relevant changes and objects when building a list of tasks.

By utilizing SQL Server version control, development teams are able to perform comprehensive roll back and keep track on object versions and revisions, seamlessly and efficiently. 

database-version-control

About the Author

Yaniv Yehuda is the Co-Founder and CTO of DBmaestro, an enterprise software development company focusing on database development and deployment technologies. Yaniv has over 30 years of experience in software engineering, design and development. In recent years, his focus has been on raising awareness about the challenges around database process modernization, and how to support database Continuous Delivery.

Recent Posts