As technology continues to permeate through society, companies across all industries are finding out that they must think and behave like software companies. This is because the customer experience is increasingly delivered through software applications regardless of industry – be it financial services, healthcare, logistics, or something else. To meet customer expectations, respond to market feedback, and stay ahead of the competition, teams have turned to Agile development methodologies – lured by the promises of nimble, transparent, faster, higher quality software releases.
Agile for the Database
What does agile database development mean? Fundamentally, the meaning is no different than in an application software context: a set of values and principles which allow teams to respond rapidly and flexibly to change. The last decade has seen a seismic shift in the pace, quality, and agility with which application code is developed. However, an overwhelming number of organizations have failed to witness the macro benefits of faster time to market and improved quality of service.
This is because Agile tools and practices were myopically applied to application code – leaving many other critical components behind. To shore this gap, teams have more recently embraced DevOps, which seeks to bring many of the Agile best practices beyond the application development team.
As teams begin to adopt DevOps, many are still making the mistake of leaving critical components behind. Without bringing Agile and DevOps to the entire software stack – from development through to operations – teams will continue to see diminishing returns in time to market, quality, and efficiency of their engineering teams.
Agile Development and the Database Release Process
One area that many organizations continue to overlook is the database release process. The database release process is separate and siloed from application code and involves manual handoffs, manual review, manual validation, and a manual deployment process. Without getting rid of this silo and eliminating a lot of the manual effort in the database release process, teams will continue to struggle in truly achieving their Agile and DevOps goals.
Central to any Agile methodology is making changes in an iterative, incremental manner, having an open and transparent process, and adjusting with a rapid feedback loop. While simple in concept, this method is difficult to apply to DB development for several reasons. For decades, DBAs have been chartered with safeguarding databases (and the corresponding data they hold) from theft or loss. Data is an enterprises’ most important asset. Understandably, the teams safeguarding these assets are skeptical of and resistant to change and aren’t conditioned to be transparent. Given that agile database development means a more rapid and iterative development process and increased transparency, it’s no wonder that many organizations struggle to achieve agile database development.
Database Version Control and Agile
There are also technical challenges that make agile database development difficult for many organizations. Databases, unlike applications, have state. As a result, iterative development is much more difficult as each change persists. So, either teams must roll back changes carefully to restore prior state or they must roll forward. And, since databases underpin many applications – in some cases also supporting many versions of a given application – it can be especially cumbersome to bring rapid, iterative development process to the database. To better understand all the difficulties that can derail efforts to bring Agile methodologies to database development, see the whitepaper on Why Agile Database Development is a Struggle.
While Agile database development may not be easy, it can be done. Despite the challenges presented by the database, many teams have managed to overcome the hurdles. This requires strong business sponsorship – often with executive backing – to assist with the cultural changes. In conjunction with executive backing, teams also need the proper tools and processes to bring visibility and automation to database development and release tasks. With all these elements in place, teams can take the steps to build confidence in an Agile approach and make the transition to an Agile DB development process.
By taking the effort to bring Agile practices to database releases, organizations could realize a much better return on the investments they have made. With the entire software stack – including the database – evolving incrementally, flexibly, and quickly, businesses can gain a competitive advantage in bringing innovation to the market more quickly and being responsive to their end-users with higher quality products and services.