Control Continuous Integration Continuous Delivery How about databases? Database Source Control Database Continuous Integration Database Continuous Delivery
development ▪ Need of synchronization between development and DBA teams; ▪ No traceability of database changes (changes history) ▪ What changed? Who? When? When? ▪ Manual database processes prevent the CI and CD in their full extent ▪ Your process has the strength of your weakest step ▪ Time consuming and error prone ▪ Bugs in production environment ▪ Manual tests or inexistent tests Road to database automation 11 | 17.11.17 |
Database deployment pipeline • Keep history of each change • Traceability • Your best comunication system • Share code (Sql Scripts) • Enforce standards • Eliminate/reduce conflicts Road to database automation 12 | 17.11.17 |
aproaches • Migrations-based • Script represents a migration • Migration represents the next database version • State-based • Script represents the current database state Road to database automation 13 | 17.11.17 |
| • Flyway (http://flywaydb.org/) • Open source database migration tool • My two reasons for adopting (Flyway Command-line): • Simplicity • Number of dependencies
| • Challenges: 1. Manager multiple branches ▪ Manage merge/interests conflicts 2. Script expiration date ▪ Sometimes, in the next day the migration script makes no sense anymore 3. Transition period (deprecation period) ▪ Both schemas, original and new, are supported 4. Migration scripts stack ▪ Dependencies between different databases ▪ Dependencies between applications/components 5. Developer sandbox ▪ How to supply a disposable development environment where the database is included?