Moderne Datenbankentwicklung - Tools & Konzepte€“ Gut sind Rollen für Reader, Editor, Admins...

Click here to load reader

  • date post

    02-May-2018
  • Category

    Documents

  • view

    220
  • download

    4

Embed Size (px)

Transcript of Moderne Datenbankentwicklung - Tools & Konzepte€“ Gut sind Rollen für Reader, Editor, Admins...

  • ModerneDatenbankentwicklung

    Thomas Koch

    Tools & Konzepte

  • Moderne Software

    Entwicklung

    Implementierung

    Deployment

    Test

    Betrieb

    Monitoring

    Dokumentation

    Coding Style Patterns Versionierung

    Test Framework Automatisierung

    Icinga / Nagios Logs

    Continuous Integration Continuous Delivery

    Infrastruktur Konfiguration Wartung

    Code Doku Wiki Doku Automatisierung

    Security Benutzer Sicherheitslcken

  • Moderne DatenbankEntwicklung

    Implementierung

    Deployment

    Test

    Betrieb

    Monitoring

    Dokumentation

    Coding Style Patterns Versionierung

    Test Framework Automatisierung

    Icinga / Nagios Logs

    Continuous Integration Continuous Delivery

    Infrastruktur Konfiguration Wartung

    Code Doku Wiki Doku Automatisierung

    Security Benutzer Sicherheitslcken

  • 5/22Vortrag: Moderne DatenbankentwicklungThomas Koch

    Bewertungskatalog berblick ber Zustand

    der Datenbank Ableiten von weiteren

    Manahmen Nachverfolgung & Bericht Unterteilung nach

    Kategorien Bewertung

    0 bis 5 Punkte jeStichpunkt einer Kategorie

    Durchschnitt je Kategorie

  • Vortrag: Moderne DatenbankentwicklungThomas Koch

    6/22

    Security Schema public und Rolle public Rollen

    Unterscheidung Entwickler, Admins und Software Gut sind Rollen fr Reader, Editor, Admins und

    Superadmins Benutzung von (NO)INHERIT Owner von Tabellen (und anderen Objekten) pg_hba.conf vermeiden von

    trust md5 (und Passwort im Code & Versionskontrolle) All (databases & IP address)

  • Vortrag: Moderne DatenbankentwicklungThomas Koch

    7/22

    Implementierung Coding Convention

    Einrckungen Gro/Kleinschreibung Namen

    DB-Schema Umgang mit Schema public Verteilung DB-Objekte je Schema Trennung nach Komponenten

    (Export, Kunden- und Produktverwaltung usw.)

    ODER / UND

    Art der Daten (Stammdaten, OLTP, OLAP, Archivdaten usw.)

    Template fr Funktionen Verwendung von NULL Datum statt BOOLEAN (manchmal)

  • Vortrag: Moderne DatenbankentwicklungThomas Koch

    8/22

    Implementierung Pattern (Konzepte)

    Audit-Spalten create_dt, change_dt,change_info

    Historisierung (Protokollierung) Konstanten (Magic Numbers/Strings)

    country_id = 12 'Deutschland'::Country::INT

    Views & Funktionen als Schnittstelle Prozesstabellen

  • Vortrag: Moderne DatenbankentwicklungThomas Koch

    9/22

    Test Auswahl eines passenden Test-Frameworks pgTAP Test von

    Struktur Existenz von Tabellen, Funktionen, Constraints Logik Arbeitsweise von Funktionen, Trigger, Views ... Performance

    Ausfhrung auf verschiedenen Umgebungen Dev (meist local) alle Tests Test alle Tests Staging Struktur und Performance Tests Live Struktur Test

    Siehe Vortrag Teste die Datenbank! (letztes Jahr)

  • Vortrag: Moderne DatenbankentwicklungThomas Koch

    10/22

    1. Verwende niemals einegemeinsame Datenbank fr dieEntwicklung im Team.

    2. Habe immer eine einzigmagebliche Quelle fr dasSchema.

    3. Versioniere immer die Datenbank.

    3 Rules for Database Work

    Quelle: http://odetocode.com/blogs/scott/archive/2008/01/30/three-rules-for-database-work.aspx http://www.heise.de/developer/artikel/Kontinuierliche-Datenbankmigration-mit-Liquibase-und-Flyway-1857773.html

  • Vortrag: Moderne DatenbankentwicklungThomas Koch

    11/22

    Datenbankversionierung

    Versionierung von smtlichen DB-Code nderungsskripte whrend der

    Implementierung Nutzen eines Deployment Tools Review durch DBA / Kollegen

    Regelmiger Export der aktuellen DB-Struktur Historie ber die nderung einzelner DB-Objekte Skript / Befehl fr den Export in kleine Dateien ?

    http://odetocode.com/blogs/scott/archive/2008/01/30/three-rules-for-database-work.aspxhttp://www.heise.de/developer/artikel/Kontinuierliche-Datenbankmigration-mit-Liquibase-und-Flyway-1857773.html

  • Vortrag: Moderne DatenbankentwicklungThomas Koch

    12/22

    DB Deployment Tools

    Liquibase Flyway Dbdeploy MigrateDB

  • Vortrag: Moderne DatenbankentwicklungThomas Koch

    13/22

    Liquibase Supports code branching and merging Supports multiple developers Supports multiple database types Supports XML, YAML, JSON and SQL formats Supports context-dependent logic Generate Database change documentation Generate Database "diffs" Run through your build process, embedded in your

    application or on demand Automatically generate SQL scripts for DBA code

    reviewQuelle: http://www.liquibase.org

  • Vortrag: Moderne DatenbankentwicklungThomas Koch

    14/22

    Deployment mit CI-Tool Entwickeln einer Deployment-Pipeline in

    Jenkins, Bamboo DB-Code auschecken Neue nderungsskripe ausfhren (Update) Automatisierte Tests ausfhren Rollback & Update

    Separat fr jede Umgebung (Test & Staging)automatisiert nach jedem Checkin

    Fr LIVE wahrscheinlich eher auf Knopfdruckbzw. einzelne Schritte manuell

    http://www.liquibase.org/

  • 15/22Vortrag: Moderne DatenbankentwicklungThomas Koch

    Monitoring - pgbadger

    Quelle: http://http://dalibo.github.io/pgbadger/samplev7.html

    Auswertung postgres.log

  • 16/22Vortrag: Moderne DatenbankentwicklungThomas Koch

    Monitoring - pgcluu

    Quelle: http://pgcluu.darold.net

    Auswertung Systemtabellen

    http://http://dalibo.github.io/pgbadger/samplev7.html

  • 17/22Vortrag: Moderne DatenbankentwicklungThomas Koch

    Monitoring - PoWa

    Quelle: http://http://dalibo.github.io/powa/

    http://pgcluu.darold.net/

  • Vortrag: Moderne DatenbankentwicklungThomas Koch

    18/22

    Monitoring Plugins fr Nagios, Icinga, Zabbix und check_postgres New Relic Application Monitoring (java, .net, php u.a.)

    Weitere unter https://wiki.postgresql.org/wiki/Monitoring Quelle: https://newrelic.com

    http://http://dalibo.github.io/powa/

  • Vortrag: Moderne DatenbankentwicklungThomas Koch

    19/22

    Betrieb Infrastruktur

    Virtualisierung CPU Platten RAM Netzwerk

    Backup / Recovery Prozess Und wie oft getestet?

    Replikation Hot Standby

    https://wiki.postgresql.org/wiki/Monitoringhttps://newrelic.com/

  • Vortrag: Moderne DatenbankentwicklungThomas Koch

    20/22

    Betrieb DB-Version / Upgrade-Strategie

    Major-Versionen Minor-Versionen

    Konfiguration Manuell ber Puppet, Chef oder Versionierung

    Cronjobs (Wartung) Konfiguration Versionierung Monitoring

  • Vortrag: Moderne DatenbankentwicklungThomas Koch

    21/22

    Dokumentation Mit welchen Tool? Zustand & Qualitt (Wie aktuell?) Inhalt

    Struktur der Dokumentation (Chaos) DB-Modell Konzepte & Ideen Grnde & Entscheidungen

  • 22/22Vortrag: Moderne DatenbankentwicklungThomas Koch

    Zusammenfassung Implementierung

    Schema Coding Convention Konzepte (audit, Konstanten

    etc.) Test

    Automatisiert mit pgTAP Deployment

    Deployment-Tool CI-Server

    Security User & Rollen

    Betrieb Infrastruktur Backup / Recovery Replikation Hot Standby

    Monitoring Log pgbadger Systemtabellen pgcluu real time PoWa

    Dokumentation DB-Modell Konzepte Grnde & Entscheidungen

  • ModerneDatenbankentwicklung

    Slide 1Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23