Cree scripts bajo control de versiones e integración continua para verificarlos
Un enfoque que funcionó para mí fue que cada desarrollador trabajara con su propio esquema, con el que pueden hacer lo que quieran. Su esquema era destructible y estaba lleno de datos de prueba tomados de un conjunto de scripts controlados por versiones a los que contribuían todos los desarrolladores.
La compilación de integración continua nocturna tomó la última versión de todos los scripts e intentó construir una base de datos de prueba coherente a partir de ellos. Luego, la aplicación realizó una serie de pruebas integrales y funcionales para verificar que el esquema actual estuviera en línea con el candidato de versión actual.
Antes de comenzar este camino, había un diseño de base de datos bastante sólido y un DBA siempre estaba atento a las cosas para evitar que los desarrolladores se volvieran locos con la desnormalización y otros horrores.
El control de versiones ayudó enormemente aquí porque los cambios en los scripts fueron inmediatamente obvios. También hicimos uso de una VERSIONtabla de base de datos para identificar el estado general de la base de datos. Esta era una secuencia entera simple y no estaba vinculada a ninguna aplicación en particular.
En general, funcionó bien y significó que los desarrolladores dejaron de temer cambiar los niveles de persistencia porque siempre podían revertir sus propios esquemas sin afectar a los demás.