Lately, you’ve heard about DevOps. Is it just another buzzword, or is it something you should investigate?
DevOps emerged over ten years ago to solve the problems of the Agile methodology. Not that Agile is bad, but there were often disconnects between developers and the operation teams who had to deploy the software. Software that “worked on my laptop” often failed when deployed.
The union of people, process, and products to enable continuous delivery of value to our end users –Donovan Brown, Partner Program Manager, Azure Incubations at Microsoft
There are other definitions, but I like this one because the people and process are just as important as the products (tools). There are no prescribed techniques or tools in this definition, and each organization must figure out what works best for them. DevOps works by delivering small incremental changes quickly, removing bottlenecks, and automating everything, including infrastructure for development, builds, testing, quality assurance, etc.
DBAs tend to use automation to avoid performing repetitive tasks like installations, backups, and other maintenance manually. (I typically would write a script if I needed to do something at least three times.) DevOps, however, takes automation to a whole other level. According to the Accelerate State of DevOps 2021 report, most Elite performers deploy changes multiple times per day on demand. Frequent, small changes are less likely to require hotfixes than large, infrequent ones, but this seems counterintuitive when thinking about databases.
App development lends itself easily to DevOps because it’s easy to replace files or services and roll back to an earlier version or servers with the earlier version, if necessary. However, you usually cannot do that with databases because of possible data loss. Database changes can then become the bottleneck that keeps new application features from being delivered. Moving the database into DevOps is not easy, but organizations worldwide are doing it successfully, according to the 2021 State of Database DevOps report.
DevOps practices require tools for scripting, version control, unit testing, builds, data masking, QA, orchestration, containers, and more. My advice to DBAs is to start using source control (like Git and GitHub) for database development and consider using containers or other solutions to build downstream environments like test and dev at the push of a button. You may not be working for a DevOps organization today, but the adoption of DevOps is increasing year-over-year, so it’s likely you will need to learn these skills sooner rather than later.
DevOps is not just automation and tooling, though they are essential; it’s also about communication and collaboration. The organization’s culture is critical because it will either encourage communication and collaboration or it will hinder them. Have you worked at an organization where the DBA team, operations team, and developers were all siloed didn’t know what each other were doing? I sure have! The aim of DevOps is to “enable continuous delivery of value to our end users,” not to protect your domain. The only way to do that is by working together for a common end goal.