Schedule FrOSCon 2014

Lecture: Datenbank-Release-Management mit PostgreSQL und Ruby-on-Rails

August 24, 2014
RedFrogConf (C118)
Language: de
RedFrogConf (Ruby)

Summary

Viele mit Ruby-on-Rails und PostgreSQL entwickelte Webanwendungen wie Content-Management-Systeme oder Shop-Systeme benötigen oft komplexe Datenbankmodelle mit umfangreichen Abhängigkeiten. Gleichzeitig ist häufig ein Release-Management der Datenbank erwünscht, um Inhalte und Shop-Funktionen im Voraus zu erstellen und einen Test- und Abnahmeprozess zu ermöglichen. Es wird eine Lösung vorgestellt, die der Basisfunktionalität eines Source-Control-Systems wie GIT ähnelt. Releases können – ohne die Live-Prozesse zu stören – mit dem Produktionscode als Preview angeschaut und überprüft werden. Es sind auch mehrere, gleichzeitig existierende Releases möglich, die zusammengeführt werden können.

Description

Viele mit Ruby-on-Rails und PostgreSQL entwickelte Webanwendungen wie Content-Management-Systeme oder Shop-Systeme benötigen oft komplexe Datenbankmodelle mit umfangreichen Abhängigkeiten. Gleichzeitig ist häufig ein Release-Management der Datenbank erwünscht, um Inhalte und Shop-Funktionen im Voraus zu erstellen und einen Test- und Abnahmeprozess zu ermöglichen. Gängige Lösungen versehen hierfür einzelne Datenbankmodelle z. B. mit Attributen wie Gültigkeitszeiträume oder Release-Status, oder sie verwenden komplett getrennte Systeme für Preview- und Live-Umgebungen. Die Handhabung solcher Attribute kann bei umfangreichen Datenbanken sehr komplex werden. Getrennte Systeme erhöhen den Ressourcenbedarf einer Anwendung stark und Previews werden dabei nicht auf dem eigentlichen Live-System geprüft.

Unsere Lösung ähnelt der Basisfunktionalität eines Source-Control-Systems wie GIT. So wie GIT-Benutzer mit Commits arbeiten können, kann man in unserem System mit Releases – ein Satz von Änderungen, Einfügungen und Löschungen in der Datenbank – arbeiten. Erweiterungen der Datenbank müssen das Release-Management nicht speziell berücksichtigen, da es als eigenständiges Modul implementiert ist.

Releases können – ohne die Live-Prozesse zu stören – mit dem Produktionscode als Preview angeschaut und geprüft werden. Vollständige Bestellprozesse können damit z. B. in einem Shop auf dem Live-System getestet werden. Es sind auch mehrere, gleichzeitig existierende Releases möglich, die zusammengeführt werden können. Manuelle Konfliktbehebung ist dann nur bei gleichzeitiger Änderung von Daten eines Objekts notwendig.

Teamleiter Softwareentwicklung i22 internetagentur GmbH
Concurrent Events