DevOps is a common practice in most R&D organizations these days. There is usually a DevOps team that is responsible for the automation of the development lifecycle, including unit testing, integration, deployment, and delivery. This process is collectively called CI/CD (Continuous Integration / Continuous Delivery).
DevOps brings a lot of value to the business. It speeds up time to market dramatically. It saves a lot of time and money by automating processes that would otherwise be time-consuming. It reduces the number of bugs found in the software thanks to automated unit testing and integration done early in the process. It improves employee satisfaction, because developers can focus more on developing in a modern environment rather than fixing annoying bugs using manual tools and processes. DevOps eventually improves software quality.
But in most organizations, all of this great value is only realized for application development. The application developers are usually familiar with the tools and processes involved in CI/CD processes, and they expect to work this way. But for database developers and DBAs, the world is usually different. They still live in the 90's, where most of their work is done manually using scripts.
It's common to see a database developer writing various database scripts, saving them in a local folder, then running them manually to apply them to the test/staging/production environment. In many cases, some of the scripts will fail, either because of human errors ("Oh, I forgot to run that script first"), or because the target environment doesn't look exactly like the dev environment ("Who added the IsActive column to the Users table in production?").
You might wonder why this is the case. If we already have the tools and processes for CI/CD, and they are so common among application developers, why aren't they just as common among database developers?
There are several reasons for that, some of them are technical, some are cultural. But the main reason is that unlike application DevOps, database DevOps is hard. When you develop software, all you need to manage is the source code. But when you develop against a database, you need to manage source code (stored procedures, views, etc.), schema (table definition, columns, data types, etc.), and you also need to manage data (operational data, static data, etc.)
But hard doesn't mean it can't be done. It's about time that database developers hook into the organization DevOps processes, work together with the application developers and the DevOps team, and enjoy all the great benefits of CI/CD. And it's also about time that the business reaps the tremendous value of DevOps in the database field as well, not only in the application development field.
Our team in Madeira Data Solutions has many years of experience working with hundreds of database dev teams, helping them improve their development processes, implement database unit testing, add automation, and drive success. With so many years and so many customers, we've seen it all.
Knowing the pains and understanding the complexities, we developed a methodology to implement true CI/CD for database development. Since our focus is on the Microsoft data platform, we developed our solution for SQL Server, Azure SQL Database, and Azure SQL Managed Instance. We use common tools and frameworks, such as SQL Server Data Tools, Azure DevOps, and Jenkins.
Our goal is to train your teams, so that they can operate the process by themselves going forward. We set up everything, provide training and mentoring, and implement the processes together with your teams. The change is dramatic. After only a couple of weeks, your team moves from manual, slow, and error-prone development to automated integration and delivery on a daily basis.
It's easy to measure and demonstrate the ROI from this process. It results in less bugs (thanks to unit testing and other features, such as refactoring), less time to fix bugs (because they are identified early in the process), less time spent on integration and deployment (since everything is automated), happier customers, happier developers, and a lot more. We have already implemented this solution successfully with several customers, and the impact is amazing.
So we are announcing SQL Database DevOps. If you are an R&D business working with SQL Databases, and your database developers are still stuck in the 90's, then it's time to move into the future and enjoy the benefits of database CI/CD.