You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: pages/1_1_introduzione.md
+7-1
Original file line number
Diff line number
Diff line change
@@ -53,4 +53,10 @@ merge changes
53
53
commit id: "v5" tag: "Version 5" type: HIGHLIGHT
54
54
```
55
55
56
-
</div>
56
+
</div>
57
+
58
+
<!--
59
+
Alla pari di qualunque progetto software (C/C++, Erlang, Java, etc.) anche per le DDL/DML del database dovremmo arrivare a una situazione di versioning come quella mostrata.
60
+
61
+
Soffermarsi un attimo per spiegare il minimo indispensabile su questo diagramma.
Copy file name to clipboardexpand all lines: pages/1_2_componenti_chiave_database_versioning.md
+4-2
Original file line number
Diff line number
Diff line change
@@ -13,8 +13,10 @@ layout: default
13
13
-**Rollback**
14
14
- La capacità di annullare una migrazione, tornando a una versione precedente dello schema. Questo è utile per gestire errori o modifiche non desiderate.
15
15
-**Script di seed e fixture**
16
-
- Script utilizzati per popolare il database con dati iniziali o di esempio, necessari per testare l'applicazione.
16
+
- Script utilizzati per popolare il database con dati iniziali o di esempio, necessari per testare l'applicazione (vedi integration test).
17
17
18
18
</v-clicks>
19
19
20
-
20
+
<!--
21
+
Per la documentazione è preferibile usare l'approccio doc-as-code di cui recentemente ho fatto un post sul gruppo Ready2Learn di Viva Engage o Yammer.
Copy file name to clipboardexpand all lines: pages/1_3_benefici_database_versioning.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@ layout: default
9
9
-**Coerenza**
10
10
- Garantisce che tutti i membri del team di sviluppo lavorino con la stessa versione dello schema del database, riducendo il rischio di conflitti e incoerenze.
11
11
-**Tracciabilità**
12
-
- Ogni modifica al database è tracciata con un record chiaro di chi ha fatto cosa e quando. Questo facilita il debug e la manutenzione.
12
+
- Ogni modifica al database è tracciata con un record chiaro di chi ha fatto cosa e quando. Questo facilita il debug e la manutenzione; inoltre, è utile per scopi di audit e conformità.
13
13
-**Automazione**
14
14
- Le migrazioni possono essere automatizzate, facilitando l'implementazione delle modifiche in ambienti diversi, come sviluppo, test e produzione.
Copy file name to clipboardexpand all lines: pages/1_4_sicurezza_operazioni_deployment.md
+10-1
Original file line number
Diff line number
Diff line change
@@ -17,6 +17,15 @@ Per migliorare la sicurezza quando si utilizzano strumenti di <span v-mark.red="
17
17
18
18
</v-clicks>
19
19
20
+
<!--
21
+
Per la terza strategia "Utilizzo di un servizio intermedio", è possibile utilizzare tre possibili pattern k8s (Kubernetes) che sono:
22
+
1. Job
23
+
2. Init Container
24
+
3. Operator
25
+
26
+
Nel caso in cui la propria applicazione sia sviluppata tramite il framewrok Java Quarkus, questo, prevede OOTB dei pattern per assolvere nel modo ottimale all'esecuzione dei task di migrazione.
27
+
-->
28
+
20
29
---
21
30
level: 2
22
31
---
@@ -55,4 +64,4 @@ level: 2
55
64
56
65
Implementando queste strategie, è possibile ridurre significativamente il rischio associato alla concessione di privilegi elevati agli utenti delle applicazioni durante le migrazioni del database, mantenendo al contempo un flusso di lavoro efficiente per la gestione delle migrazioni stesse.
Per eseguire la migrazione è sufficiente eseguire il comando `flyway migrate` nella directory contenente gli script di migrazione.
34
34
35
-
</v-clicks>
35
+
</v-clicks>
36
+
37
+
<!--
38
+
Qui vedremo dei semplici script SQL (DDL) di migrazione applicando la migrazione usando Flyway da CLI, senza quindi nessuna integrazione con Quarkus, Spring Boot o altro framework di sviluppo Java.
Copy file name to clipboardexpand all lines: pages/1_7_esempio_progetto_migrazione_flyway.md
+31-7
Original file line number
Diff line number
Diff line change
@@ -6,12 +6,16 @@ layout: default
6
6
7
7
Brevemente vedremo com'è strutturato un classico progetto di migrazione del database usando **Flyway** e come gestire le migrazioni attraverso la CLI (Command Line Interface) messa a disposizione. La versione di riferimento è la OSS Edition v10.13.0
8
8
9
-
<spanv-click>Un progetto standard (standalone) in genere include: script di migrazione, configurazione di Flyway e uno script di esecuzione.</span>
9
+
<spanv-click>Un progetto standard (standalone) in genere include: script di migrazione, configurazione di Flyway e uno script di esecuzione (quest'ultimo opzionale e costruito sulla base delle proprie esigenze).</span>
10
10
11
11
<v-clicks>
12
12
13
13
```shell {lineNumbers: false}
14
-
.
14
+
# V: Indica che si tratta di una migrazione versionata. È un prefisso obbligatorio.
15
+
# <Version>: Numero di versione della migrazione. Può essere un numero intero (es. 1, 2, 3) o semantic version. Le versioni devono seguire un ordine naturale per Flyway.
16
+
# __: Doppio underscore come separatore tra il numero di versione e la descrizione. È obbligatorio.
17
+
# <Description>: Descrizione della migrazione. Deve essere una stringa descrittiva senza spazi (può usare underscore
18
+
# _ o trattini - per separare le parole). La descrizione è facoltativa ma consigliata per rendere il file di migrazione leggibile e comprensibile.
15
19
├── flyway.toml
16
20
├── migrate.sh
17
21
└── sql
@@ -23,17 +27,35 @@ Brevemente vedremo com'è strutturato un classico progetto di migrazione del dat
23
27
24
28
</v-clicks>
25
29
26
-
<br>
27
-
28
30
<v-clicks>
29
31
30
32
-**flyway.toml**: contiene le configurazioni di Flyway (comprese le informazioni di connessioni dal database)
31
33
-**migrate.sh**: script shell che esegue la migrazione
Come scritto e detto in qualche slide precedente, Flyway (https://flywaydb.org/) è uno strumento Open Source sviluppa da RedGate e fornito in tre diverse edizioni ogni delle quali con caratteristiche diverse che possono essere valutate qui https://www.red-gate.com/products/flyway/editions.
44
+
33
45
È quindi richiesto avere Flyway installato sulla propria macchina o sulla quella dedicata all'esecuzione dello script.
34
46
Puoi scaricarlo dal sito ufficiale di Flyway [qui](https://documentation.red-gate.com/fd/command-line-184127404.html).
35
47
36
-
</v-clicks>
48
+
Tipi di Migrazioni
49
+
Oltre alle migrazioni versionate, Flyway supporta anche altri tipi di migrazioni:
50
+
51
+
1. Migrazioni Ripetibili: Questi script vengono eseguiti ogni volta che cambiano. Utilizzano il prefisso R al posto di V.
52
+
2. Migrazioni Baseline: Utilizzate per baselining di un database già esistente. Utilizzano il prefisso B al posto di V.
53
+
3. Migrazioni Patch: Utilizzate per correggere i dati senza cambiare la struttura del database. Utilizzano il prefisso P al posto di V.
54
+
55
+
Il pattern dei file di migrazione può essere configurato tramite le proprietà di Flyway se desideri utilizzare un pattern diverso dal default.
56
+
57
+
Il progetto di esempio è disponibile sul mio repository GitHub e come potete vedere con l'uso dei tag è possibile gestire le varie versioni dello schema del database.
58
+
-->
37
59
38
60
---
39
61
level: 2
@@ -70,6 +92,9 @@ il formato tradizionale (legacy) conf (properties format). Per maggiori consulta
70
92
71
93
</v-clicks>
72
94
95
+
<!--
96
+
Tramite la configurazione è possibile diversificare per ambiente di deployment, questo è fondamentale quando occorre agire sui diversi ambienti, come sviluppo, validazione, pre-produzione e produzione, a maggior ragione nel caso in cui volessi sfruttare gli ambienti di CI/CD.
97
+
-->
73
98
74
99
---
75
100
level: 2
@@ -256,6 +281,5 @@ level: 2
256
281
A seguire un video che mostra l'esecuzione di una serie di migrazioni partendo da zero. Il video è accelerato 5 volte per questioni di tempo. Qui https://asciinema.org/a/660361 puoi trovare il video completo.
257
282
258
283
<divclass="centered-image">
259
-
<imgv-clickwidth="70%"height="70%"src="/images/asciinema/demo_esecuzione_prima_migrazione_full_5x.gif"alt="Esecuzione della prima migrazione del database"/>
284
+
<imgv-clickwidth="70%"height="70%"src="/images/asciinema/demo_esecuzione_prima_migrazione_full_3x.gif"alt="Esecuzione della prima migrazione del database"/>
Copy file name to clipboardexpand all lines: pages/1_9_riferimenti.md
+2
Original file line number
Diff line number
Diff line change
@@ -40,5 +40,7 @@ level: 2
40
40
3. Risorse Online - Frameworks Java
41
41
-**Quarkus: Using Flyway**: guida ufficiale su come utilizzare Flyway con Quarkus (https://quarkus.io/guides/flyway).
42
42
-**Quarkus: Using Liquibase:** guida ufficiale su come utilizzare Liquibase con Quarkus (https://quarkus.io/guides/liquibase).
43
+
-**Using Liquibase with Spring Boot**: lo scopo di questo tutorial è guidarti attraverso il processo di utilizzo di Liquibase come parte del flusso di lavoro Spring Boot (https://contribute.liquibase.com/extensions-integrations/directory/integration-docs/springboot/).
44
+
-**Intro to Database Migrations in Spring Boot 3 with Flyway**: in questo video è mostrato come integrare Flyway in un'applicazione Spring Boot 3 e utilizzarlo per gestire in modo efficace le migrazioni dei database. Concetti di base di Flyway, come la sua configurazione, la creazione ed esecuzione di script di migrazione e il controllo delle versioni del database (https://www.youtube.com/watch?v=p1V5GcKUJv0).
Copy file name to clipboardexpand all lines: slides.md
+8
Original file line number
Diff line number
Diff line change
@@ -83,6 +83,14 @@ htmlAttrs:
83
83
}
84
84
</style>
85
85
86
+
<!--
87
+
Con questa presentazione, vorrei discutere con voi un tema su cui sono abbastanza sensibile; credo che sia giunto il momento di affrontarlo in modo concreto e fare quel passo in più necessario per iniziare il processo di automazione anche per quel che riguarda le basi di dati applicative.
88
+
89
+
Per facilitare lo svolgimento di questa presentazione, vi prego di mettere da parte tutte le vostre domande che affronteremo alla fine di questa presentazione.
0 commit comments