Continuos Delivery Database
Diego Mauricio Lagos
ROME 24-25 MARCH 2017
Hello!
I AM Diego Mauricio Lagos
Sono un : Devops e Sviluppatore e Tester,
Release Manager
Lavoro per : Proxima Informatica
Collaboro con: Code Garden (ex JUG)
Sono nato in : Colombia
Agenda
◦ Come siamo messi (AsIs)
◦ Mondi contrapposti
◦ DevOps
◦ Continuos Delivery
◦ Continuos Delivery Database
◦ Liquibase & Flyway Demo
◦ Considerazioni finali
Come siamo
messi
Perché siamo qui….
Dev Integrazione
QA
(Collaudo)
Performance Prod
2.0 1.9 1.8 1.6 1.4
X.? Y.? Z.? Boh-1? Boh?
Question time?
Il rapporto con il database…
Il db come l’ultima
roccaforte prima
della fine
DBA
Noi (i Dev)
Mondi contrapposti
LE DIFFICOLTA’ NELLA GESTIONE ED AUTOMATIZZAZIONE DEL DB
◦Utilizza un linguaggio (SQL) ostico ai dev
◦Mito del DB come codice (ciclo di vita del dato)
◦Mantenimento dell’integrità dei dati e del valore
business
◦Diversi attori coinvolti
DevOps
DEVOPS IN TIPS
1. Visione Olistica del sistema
2. Eliminazione dei silos
3. Rapidità nei feedback e nei rilasci
4. Automazione prima di tutto
5. Utilizzo di tecniche agili e Lean
6. Continuos X
“
Continuous delivery (CD) is a software
engineering approach in which teams
produce software in short cycles, ensuring
that the software can be reliably released at
any time. It aims at building, testing, and
releasing software faster and more
frequently. The approach helps reduce the
cost, time, and risk of delivering changes by
allowing for more incremental updates to
applications in production
Wikipedia
Continuos Delivery
Database
CDD (Continuos Delivery Database)
#rilasci frequenti
#automazione (bilanciata)
#versionamento del codice
CDD (Continuos Delivery Database)
#responsabilizzazione del team
#review del codice
#creazione di contratti
COSA NON FARE
1. Automazione inesistente o sbilanciata
2. Il DBA non esegue la review del codice
3. Rompere i contratti
4. I team sono inibiti dal fare cambiamenti
5. Disallineamento delle modifiche tra gli ambienti
“
Fai cose,
vedi gente,
direttamente in produzione
Stefano Lavori
Liquibase
LIQUIBASE FEATURES (1/2)
1. JVM based (non serve altro)
2. Utilizzo tramite riga di comando, maven, ant,
oppure integrato all’interno dell’applicazione
3. Ampio supporto ai maggiori DBMS
4. Utilizzo di svariati descrittori (xml,json,sql,…)
LIQUIBASE FEATURES (2/2)
1. Idempotenza delle operazioni
2. Rollback delle operazioni
3. Estrazione delle operazioni in SQL
4. Possibilità di eseguire la diff tra due istanze
Flyway
FLYWAY FEATURES
1. JVM based (non serve altro)
2. Utilizzo tramite riga di comando, maven, ant, sbt,
gradle oppure integrato all’interno dell’applicazione
3. Ampio supporto ai maggiori DBMS
4. Utilizzi di solo SQL per me migrazioni
5. Convention Over Configuration
6. Idempotenza delle operazioni
Note sui tool
NOTE SUI TOOL
1. Nessun tool è perfetto
2. I Workaround saranno sempre con te
3. Automazione ≠ no bugs
4. Preferire la strategia ROLL-FORWARD a quella di
Rollback
5. Versionare anche i dati di configurazione (ma non
quelli sull’utente)
6. I DBA sono i «signor Wolf» della situazione
Considerazioni
finali
La risposta non la devi cercare
fuori, la risposta è dentro di te. E
però è sbagliata!
Corrado Guzzanti
Grazie
mille ;)
RISORSE
1. https://www.simple-talk.com/sql/database-
administration/continuous-delivery-and-the-
database/
2. https://vimeo.com/111623115
3. https://vimeo.com/131637362
◦ Esempio liquibase:
https://github.com/diegoitaliait/liquibase-showcase
◦Esempio Flyway:
https://github.com/diegoitaliait/flyway-showcase
https://www.linkedin.com/in/diego-
mauricio-lagos-morales-6768158

Continuous Delivery Database - Diego Mauricio Lagos Morales - Codemotion Rome 2017