awareness of problem and solutions DB perceived as special • “Core to business” • “Not like Java applications” But often less change control than for applications
The same benefits applies to the DB! The problems we are trying to solve • Inconsistent environments • Slow and error prone production deployments • State not known and not visualized • Long feedback loops • Long lead times
3. Version everything 4. If something is painful, do it more often 5. Done = released 6. Build quality in 7. Everybody is responsible 8. Continuously improve
deployment scripts, metadata, configuration, etc. VCS is the only entry point to the delivery pipeline • Traceability • Reliable basis for release notes
is responsible Nobody can hide in their dungeon Empower teams • Production responsibility • Focus on end-to-end delivery Development team => Delivery team
not • Applying same changes in test and prod is not enough, also need same order • Branching patterns tried: • Develop, Master & Fast Track (Release from Master or FT) • Master, Feature, Release Development process will be impacted
All changes are version controlled • Scriptable and integrate with other tools • Changes must propagate with minimal intervention • Easy to realign map & reality • Parallelization of development possible • Minimal impact on dev tools and process • Support for all types of DB objects used
Checksum & status per change • Knows what’s been applied • Makes prod refresh to test environment simple Metadata to annotate deploy order & type of script A. File/folder naming conventions B. Change log file
Great, but community dead Sqitch - Great, if you’re OK with patching in Perl FlyWay - Great, but PL/SQL need #128 Datical - Maybe. Enterprise software… DB Maestro - Maybe. Enterprise software…
Global vars in conjunction with connection pools • Need to restart app servers at DB deploy Oracle cluster does not propagate changes • Shut down all nodes but one at deploy time