While application developers have widely accepted agile as a mainstream approach, database developers have been slower to embrace it. It is time to get rid of this apprehension and implement agile database methodologies.
For database developers, respecting the vulnerable state of the database when deploying changes has prompted them to avoid implementing agile methodologies in the database. Their insistence on manually inputting changes has created a bottleneck in otherwise agile organizations, and its gotten to a point where the database is becoming notorious for holding up application releases.
It is time for database developers to realize that database agility can be implemented safely and efficiently, allowing the database to scale up to faster development cycles demanded by the agile methodology.
But how are database developers supposed to do this? Is it possible to build an automated pipeline in which database development teams can address risk, ensure quality and shorten the development cycle for the organization as a whole?
My answer is an emphatic YES. Here are my 5 keys for safely executing agile database methodology.
Database version control is the first step in this process. In order to properly manage database changes, it is imperative to establish a single source of truth to ensure that the deployment scripts handles coding conflicts efficiently by merging them, generating a deployment script for only relevant and error free changes.
With database version control, the deployment script is always aware of database dependencies, ensuring the database code is covered. In addition, the deployment script being executed is aware of the environment status when the script is executed.
Automated testing provides a safety net for agile methodologies for the database because it assures that new changes do not cause errors for earlier work.
Furthermore, by automating and executing this process at the point of check-in, developers receive immediate feedback about an error and are put in a position to fix it quickly.
Automating testing in early pipeline phases, when development and testing rapidly iterate, accelerates delivery and frees engineering resources to focus on creating value.
Static code analysis software significantly accelerates this process and ensures adherence to company standards by reading the code and identifying the same kinds of patterns that peer developers look for.
Database developers benefit from applying static code analysis after unit testing, perhaps even more than their application development peers. Given the extreme pressure and ever-tightening deadlines of the agile database development cycle, many teams rush the code review process or skip it entirely.
Thus, automating the process at the database development level can reduce the time the team spends and increase overall consistency of code reviews. Automated code review can check against rules written to help enforce company standards and improve quality, performance, maintainability, security and flow.
To reduce the risk of data loss and other mishaps, agile methodologies for the database include a stop in the deployment stage for a review of code changes before they go into production. While automating around this stop is not a good idea, automating the creation of ALTER scripts for deployment is a valuable step in shortening the development cycle.
DBAs can use automated tools to collect all the queued changes that have passed regression tests and static code analysis, compare them to the production environment and generate the scripts to commit them.
Not only can this improve DBA efficiency and shorten the agile database development cycle, but it can also ensure all of a project’s changes make it into production.
As the organization moves away from manual processes and toward automated tools, IT teams can begin to realize the potential of agile database development. Using software tools in a piecemeal fashion is faster than purely manual processes, but it provides only incremental improvements.
Agile database methodologies calls for a fundamental shift in the way teams work. Instead of having people manage each step of the process, teams must look for ways to create fully automated pipelines that submit changes to regression testing, review and staging for deployment without further interaction from the team.
DBAs can rest assured that code changes meet quality standards and adhere to company policy, and managers can see that code will meet project requirements and run properly in production.
Application developers have long taken advantage of agile practices to shorten their development cycle and reduce the risk associated with change. DBAs, on the other hand, have traditionally relied on manual processes that reduce the risk of data loss in a live production database.
The resulting bottleneck, especially in a relational database environment, has kept the organization as a whole from realizing the full promise of agile methodologies for the database, allowing for the release software in prompt response to market change. And in today’s digital environment that’s really more of a necessity than a luxury.