In his new ebook, DevOps for the Database, Baron Schwartz digs into the root causes and offers practical guidance for more widespread and effective use of DevOps practices to optimize database performance. There are many different definitions of DevOps and different ideas about the right way to do it – all are context specific.
However, Baron’s first-hand observations and insights gathered from the database community suggest that certain capabilities are especially important and that advances are often achieved through a similar progression. Steps forward typically fall into six categories:
- Baseline DevOps infrastructure operations practices are applied to the database: automated provisioning, automated configuration, monitoring and so forth.
- Database-specific operational tasks such as backups, recovery, upgrades and refreshing the test dataset on pre-production databases are automated.
- Database schema, code and data models – table structures, stored procedure code, etc. – are managed similarly to source code with version control and “normal” change control processes.
- Deployments of database changes such as schema changes (migrations) and data transformations (data migrations) are automated, not performed manually.
- Performance and availability are not just DBA jobs. Developers are involved in and, ideally responsible and on-call for the performance of their application’s production database.
- Database administrators are not doing repetitive tasks. Instead, they serve as subject matter experts who consult with or are embedded within engineering teams to maximize productivity.