Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition...

39
Auch SQL ist Source-Code Continuous Database Integration mit Flyway Sandra Parsick [email protected] @SandraParsick

Transcript of Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition...

Page 1: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Auch SQL ist Source-CodeContinuous Database Integration mit Flyway

Sandra [email protected]

@SandraParsick

Page 2: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Zur meiner Person

● Freiberufliche Softwareentwickler und Consultant im Java-Umfeld

● Schwerpunkte:

– Java Enterprise Anwendungen

– Agile Methoden

– Software Craftmanship

– Automatisierung von Entwicklungsprozessen

Page 3: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Agenda

● Continuous Database Integration (CDBI)

● Flyway

● Flyway Demo

● Fallstricke

Page 4: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Continuous Database Integration

● Definition

● Motivation

● Aufbau

Page 5: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Definition

„Continuous Database Integration (CDBI) is the process of rebuilding your database and test data any time a change is

applied to a project's version control repository“

(aus Continuous Integration by Paul M. Duvall, Steve Matyas und Andrew Glover)

Page 6: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Motivation

● Alle Entwickler teilen sich eine Testdatenbank.

● Keiner weiß, welche Datenbankskripte auf welchen Datenbankinstanzen ausgeführt worden.

● Testdatenbank unterscheidet sich von der Produktionsdatenbank.

● Datenbankmigrationsskripte verteilen sich auf Emails, Release Notes, Ticketsysteme, etc.

Page 7: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Aufbau

● Behandle den Datenbank-Code wie einen ganz normalen Source-Code

➔ Alle Datenbank Artefakte (DDL, DML, Konfigurationen, Testdaten, Stored Procedures, Functions etc) gehören ins VCS.

➔ Jede Änderung an den DB Artefakten wird getestet.

● Jeder Entwickler hat seine eigene Datenbank / Testdatenbanken ähneln den Produktionsdatenbanken.

➔ Automatisiertes Aufsetzen der Datenbank.

● Änderungen an der Datenbank sind nachvollziehbar.➔ Historie der Änderungen

Page 8: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Flyway

● Was ist Flyway?

● Wie funktioniert Flyway?

● Wie werden Migrationsskripte für Flyway geschrieben?

● Was kann Flyway nicht?

● Wie kann Flyway benutzt werden?

Page 9: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Was ist Flyway?

● Migration Framework für Relationale Datenbanken basierend auf Java

● Erstellt eine Datenbank „from scratch“

● Verwaltet den Stand der Datenbank

● Zwei Migrationsmodi:● SQL Migration● Java Migration

● Aktuelle Version: 3.2.1

● Homepage: http://flywaydb.org/

● Twitter: @flywaydb

Page 10: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Wie funktioniert Flyway?

Re

fere

nce

: fly

wa

ydb

.org

Page 11: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Wie funktioniert Flyway?

Re

fere

nce

: fly

wa

ydb

.org

migrate

Page 12: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Wie funktioniert Flyway?

Re

fere

nce

: fly

wa

ydb

.org

baseline

Page 13: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Migrationsskripte

● Zwei Möglichkeiten– SQL

– Java

Page 14: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

SQL Migration

● Typische Anwendungsfälle

– DDL Änderungen (CREATE/ALTER/DROP für TABLES,VIEWS,TRIGGERS,SEQUENCES,...)

– Einfache Datenänderungen

● Benamung der Skripte

Page 15: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

SQL Migration

● Syntax

– Statement kann über mehrere Zeile gehen

– Platzhaltersupport

– Kommentare: Single (–) oder Multi-Line (/* */)

– Datenbank-spezifische SQL Syntax

● Beispiel

Page 16: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Unterstützte Datenbanken

Re

fere

nce

: fly

wa

ydb

.org

Page 17: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Java Migration

● Typische Anwendungsfälle

– BLOB & CLOB Änderungen

– Fortgeschrittene Änderungen an Massendaten (Neuberechnungen, fortgeschrittene Formatsänderungen, …)

● Benamung der Java Klassen

Page 18: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Java Migration

Beispiel

Page 19: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Java Migration

Beispiel Spring Support

Page 20: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Migration für Fortgeschrittene - Callbacks

● Typische Anwendungsfälle

– Stored Procedure Kompilierung

– Materialized View Update

● Flyway Lifecycle

Page 21: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Weitere Flyway Befehleinfo

Re

fere

nce

: fly

wa

ydb

.org

Page 22: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Weitere Flyway Befehleclean

Re

fere

nce

: fly

wa

ydb

.org

Page 23: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Weitere Flyway Befehlevalidate

Re

fere

nce

: fly

wa

ydb

.org

Page 24: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Weitere Flyway Befehlerepair

Re

fere

nce

: fly

wa

ydb

.org

Page 25: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Was kann Flyway nicht?

● Rollback Skripte aufrufen

● „Write once, run on many database vendors“

Page 26: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Wie kann Flyway benutzt werden?

● Flyway Clients:● Java API● Maven Plugin● Command-line Tool● Gradle Plugin● SBT Plugin● Ant task

Page 27: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Demo

Den Source-Code der Demo-Anwendung finden Sie unter: https://github.com/sparsick/flyway-talk/tree/flyway-talk-

herbstcampus-15

Page 28: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Aufbau CDBI

● Behandle den Datenbank-Code wie einen ganz normalen Source-Code

➔ Alle Datenbank Artefakte (DDL, DML, Konfigurationen, Testdaten, Stored Procedures, Functions etc) gehören ins VCS.

➔ Jede Änderung an den DB Artefakten wird getestet.

● Jeder Entwickler hat seine eigene Datenbank / Testdatenbanken ähneln den Produktionsdatenbanken.

➔ Automatisiertes Aufsetzen der Datenbank.

● Änderungen an der Datenbank sind nachvollziehbar.➔ Historie der Änderungen

Page 29: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Fallstricke

Page 30: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Keine Instanz-spezifischen Daten

Beispiel

Page 31: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Keine Instanz-spezifischen Daten

● Zugriffskontrolle über eine Firewalls (iptable)

Möglicher Lösungsansatz:

Page 32: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Keine Instanz-spezifischen Daten

Möglicher Lösungsansatz:

Page 33: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Datenbank wird von mehreren Applikationen benutzt

Ausgangslage :

Page 34: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Datenbank wird von mehreren Applikationen benutzt

Lösungsansatz :

Page 35: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Datenbank wird von mehreren Applikationen benutzt

Lösungsansatz :

Page 36: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Datenbank wird von mehreren Applikationen benutzt

Page 37: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Weitere Fallstricke (Auszug)

● Datenänderung dauern zu lange● Datenlöschung● Faktor Mensch● ...

Page 38: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Weitere Informationen

● Continuous Integration von Paul M. Duvall, Steve Matyas und Andrew Glover

● Refactoring Databases: Evolutionary Database Design von Scott J. Ambler und Pramodkumar J. Sadalage

● Flyway Documentation http://flywaydb.org/documentation/migration/http://flywaydb.org/getstarted/

Page 39: Auch SQL ist Source-Code · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI) is the process

Fragen?