A medida que desarrollamos una aplicación suele ser inevitable en algún punto hacer refactoring del código. A su vez también es necesario poder compartir esos cambios con otras personas, versionarlos, poder resolver conflictos entre distintas versiones, etc.
Para todo esto contamos con muchas herramientas que simplifican estas tareas y nos permiten concentrarnos en el desarrollo.
Pero que pasa con la base de datos? Muchas veces esos cambios impactan en la estructura de la base de datos, por ejemplo al agregar o quitar atributos a persistir. Estas modificaciones a la base de datos tienen que estar a su vez asociadas a una versión específica del código para que la aplicación funcione. Y ademas suele haber varias instancias de la base de datos (en distintos ambientes como desarrollo, test, producción, etc), en las cuales es necesario impactar los cambios al deployar una nueva versión del código.
Todo esto implica mucho trabajo manual de generar scripts con cambios incrementales, secuenciarlos, versionarlos y, al deployar la aplicación en un nuevo ambiente, analizar que versión de la base de datos esta instalada y cuales son los cambios que deberían impactarse en la misma.
Para simplificar esta problemática tenemos Liquibase.
(more…)


