Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden...

39
XP Days Germany 2015 Continuous Database Integration mit Flyway Sandra Parsick [email protected] @SandraParsick

Transcript of Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden...

Page 1: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

XP Days Germany 2015

Continuous Database Integration mit Flyway

Sandra [email protected]

@SandraParsick

Page 2: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Zur meiner Person

● Freiberufliche Softwareentwickler und Consultant im Java-Umfeld

● Schwerpunkte:

– Java Enterprise Anwendungen

– Agile Methoden

– Software Craftmanship

– Automatisierung von Entwicklungsprozessen

● Softwerkskammer Dortmund

Page 3: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Agenda

● Continuous Database Integration (CDBI)

● Flyway

● Flyway Demo

● Fallstricke

Page 4: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Continuous Database Integration

● Definition

● Motivation

● Aufbau

Page 5: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

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: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

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: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

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: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

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: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

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: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Wie funktioniert Flyway?

Re

fere

nce

: fly

wa

ydb

.org

Page 11: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Wie funktioniert Flyway?

Re

fere

nce

: fly

wa

ydb

.org

migrate

Page 12: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Wie funktioniert Flyway?

Re

fere

nce

: fly

wa

ydb

.org

baseline

Page 13: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Migrationsskripte

● Zwei Möglichkeiten– SQL

– Java

Page 14: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

SQL Migration

● Typische Anwendungsfälle

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

– Einfache Datenänderungen

● Benamung der Skripte

Page 15: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

SQL Migration

● Syntax

– Statement kann über mehrere Zeile gehen

– Platzhaltersupport

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

– Datenbank-spezifische SQL Syntax

● Beispiel

Page 16: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Unterstützte Datenbanken

Re

fere

nce

: fly

wa

ydb

.org

Page 17: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Java Migration

● Typische Anwendungsfälle

– BLOB & CLOB Änderungen

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

● Benamung der Java Klassen

Page 18: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Java Migration

Beispiel

Page 19: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Java Migration

Beispiel Spring Support

Page 20: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Migration für Fortgeschrittene - Callbacks

● Typische Anwendungsfälle

– Stored Procedure Kompilierung

– Materialized View Update

● Flyway Lifecycle

Page 21: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Weitere Flyway Befehleinfo

Re

fere

nce

: fly

wa

ydb

.org

Page 22: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Weitere Flyway Befehleclean

Re

fere

nce

: fly

wa

ydb

.org

Page 23: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Weitere Flyway Befehlevalidate

Re

fere

nce

: fly

wa

ydb

.org

Page 24: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Weitere Flyway Befehlerepair

Re

fere

nce

: fly

wa

ydb

.org

Page 25: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Was kann Flyway nicht?

● Rollback Skripte aufrufen

● „Write once, run on many database vendors“

Page 26: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Wie kann Flyway benutzt werden?

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

Page 27: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Demo

Page 28: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

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: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Fallstricke

Page 30: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Keine Instanz-spezifischen Daten

Beispiel

Page 31: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Keine Instanz-spezifischen Daten

● Zugriffskontrolle über eine Firewalls (iptable)

Möglicher Lösungsansatz:

Page 32: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Keine Instanz-spezifischen Daten

Möglicher Lösungsansatz:

Page 33: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Datenbank wird von mehreren Applikationen benutzt

Ausgangslage :

Page 34: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Datenbank wird von mehreren Applikationen benutzt

Lösungsansatz :

Page 35: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Datenbank wird von mehreren Applikationen benutzt

Lösungsansatz :

Page 36: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Datenbank wird von mehreren Applikationen benutzt

Page 37: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Weitere Fallstricke (Auszug)

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

Page 38: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

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: Continuous Database Integration mit Flyway · – Java Enterprise Anwendungen – Agile Methoden ... Definition Motivation Aufbau. Definition „Continuous Database Integration (CDBI)

Fragen?

[email protected]@SandraParsick