Este repositorio contiene todos los recursos del taller práctico enfocado en la gestión de cambios en bases de datos usando Flyway, Spring Boot, GitHub Actions y un enfoque final aplicado a arquitecturas multitenancy con Vaadin Flow.
- Dominar los fundamentos de Database Change Management (DCM) y las mejores prácticas de Flyway.
- Implementar un ciclo de vida completo de migraciones en una aplicación Spring Boot, incluyendo scripts
versionados (
V
) y repetibles (R
). - Gestionar y recuperarse de errores en migraciones, entendiendo el control de checksums y las estrategias de rollback.
- Automatizar el proceso de CI/CD con GitHub Actions para asegurar la calidad y la consistencia del código y las migraciones.
- Diseñar e implementar una arquitectura multitenancy real usando el enfoque de columna discriminadora con Hibernate y Vaadin.
- Simular y analizar entornos de despliegue complejos con Docker Compose para demostrar visualmente la importancia de desacoplar las migraciones.
main
: Proyecto base con estructura mínima (README, .gitignore, etc.).parte-2-springboot-flyway
: Configuración inicial de Spring Boot + Flyway y creación de las primeras migraciones de esquema (V
) y datos de prueba (R
).parte-3-rollbacks-validaciones
: Simulación de errores, gestión de migraciones fallidas y estrategias de rollback.parte-4-cicd-github-actions
: Creación de un pipeline de Integración Continua (CI) con GitHub Actions para compilar y validar el proyecto.parte-5-multitenancy-vaadin
: Implementación de arquitectura multitenancy (columna discriminadora) y demostración de estrategias de despliegue con Docker Compose.
🗂️ Cómo navegar entre las distintas partes del taller
Este taller está organizado en un único repositorio con varias ramas, cada una representando una etapa del aprendizaje. Puedes cambiar de rama para explorar el código de cada sección y ejecutarlo en tu entorno local.
# Ver todas las ramas disponibles
git branch -r
# Cambiar a la rama correspondiente a la Parte 2
git checkout parte-2-springboot-flyway
# Para ir a la siguiente parte, cambia de rama:
git checkout parte-3-rollbacks-validaciones
# Continúa así con:
git checkout parte-4-cicd-github-actions
git checkout parte-5-multitenancy-vaadin
💡 Asegúrate de haber guardado tus cambios antes de cambiar de rama. Cada rama contiene una versión funcional del proyecto enfocada en una etapa del taller.
# En Windows
.\mvnw.cmd spring-boot:run
# En Linux/macOS
./mvnw spring-boot:run
✅ Recomendación
Si solo quieres ver los cambios entre partes, puedes usar:
git diff parte-2-springboot-flyway parte-3-rollbacks-validaciones
- Java 21+
- Maven 3.9+
- Docker Desktop
- Git
- IDE recomendado: IntelliJ IDEA o VS Code
- Cuenta en GitHub para probar CI/CD con GitHub Actions
- Enfoques: state-based vs migration-based.
- Herramientas: Flyway vs Liquibase.
- Casos de uso y buenas prácticas.
- Configuración inicial del proyecto.
- Creación de migraciones versionadas (
V
) para el esquema. - Uso de perfiles de Spring para gestionar migraciones repetibles (
R
) con datos de prueba.
- Simulación de migraciones fallidas y análisis del comportamiento transaccional.
- Recuperación de errores con
flyway:repair
. - Control de checksums y estrategias de rollback (simulado vs.
undo
).
- Creación de un pipeline de Integración Continua.
- Automatización del build y validación del proyecto en cada
push
.
- Análisis de estrategias de multitenancy (énfasis en columna discriminadora).
- Integración con Hibernate
@TenantId
yVaadinSession
. - Simulación de despliegues con réplicas usando Docker Compose para demostrar patrones de migración seguros vs. inseguros.