CD for DBs: Database deployment strategies
Avan Mathur shares strategies for database deployments and rollbacks as well as some patterns and best practices for reliably deploying databases as part of your CD pipeline, safely rolling back database code, ensuring data integrity, and more.
Talk Title | CD for DBs: Database deployment strategies |
Speakers | Avantika Mathur (Electric Cloud) |
Conference | O’Reilly Velocity Conference |
Conf Tag | Build Resilient Distributed Systems |
Location | San Jose, California |
Date | June 20-22, 2017 |
URL | Talk Page |
Slides | Talk Slides |
Video | |
As organizations invest in DevOps to release more frequently, there’s a need to treat the database tier as an integral part of your automated delivery pipeline—to build, test, and deploy database changes just like any other part of your application. However, databases (particularly RDBMS) are different from source code and pose unique challenges to continuous delivery, especially in the context of deployments. Often, code changes require updating or migrating the database before the application can be deployed. A deployment method that works for installing a small database or a green-field application may not be suitable for industrial-scale databases. Updating the database can be more demanding than updating the app layer: database changes are more difficult to test, and rollbacks are harder. Furthermore, for organizations that strive to minimize service interruption to end users, database updates with no downtime are a laborious operation. Your database stores your organization’s most mission-critical and sensitive data (transaction data, business data, user information, etc.). As you update your database, you want to ensure data integrity, ACID, and data retention and have a solid rollback strategy in case things go wrong. Avan Mathur shares strategies for database deployments and rollbacks as well as some patterns and best practices for reliably deploying databases as part of your CD pipeline, safely rolling back database code, ensuring data integrity, handling advanced scenarios and backend processes (such as scheduled tasks, ETL routines, replication architecture, and linked databases across distributed infrastructure), and handling legacy database and more modern data management solutions.