Top Banner
Constantin „Kostja“ Klein | Freudenberg IT SE & Co. KG @ KostjaKlein
33

30. Treffen der - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Aug 19, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Constantin „Kostja“ Klein | Freudenberg IT SE & Co. KG

@KostjaKlein

Page 2: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Wer von Ihnen verwendet eine Versionsverwaltung

für den Anwendungscode?

C#, ASP.NET, JavaScript, VB.NET, …

Page 3: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Wer von Ihnen verwendet eine Versionsverwaltung

für den DatenbankAnwendungscode?

Page 4: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Ebenen des DB Lifecycle Managements

CD

Continuous

Integration

Versionsverwaltung

Manuell

CD = Continuous Delivery/Deployment

Page 5: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

VersionsverwaltungDie absolute Grundlage

Page 6: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Die Meinung im Internet

Source: http://programmers.stackexchange.com/questions/122150/how-can-i-convince-cowboy-programmers-to-use-source-control

Source: https://www.drupal.org/node/299067

Source: http://www.makeuseof.com/tag/git-version-control-youre-developer/

Page 7: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Und für Datenbanken?

Source: http://blog.codinghorror.com/is-your-database-under-version-control/

Page 8: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Und auch Microsoft sagt es ;-)http://msdn.microsoft.com/en-us/library/ms181368.aspx

Page 9: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Der beste Grund

Use source control because neither you nor your

team are perfect

Source: http://stackoverflow.com/questions/559332/why-should-my-team-adopt-source-control

Page 10: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

… und …

If it’s not in source control,

it doesn’t exist.

Source: http://stackoverflow.com/questions/559332/why-should-my-team-adopt-source-control

Page 11: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Im Detail

• Backup und Restore

• Synchronisation

• Kurzfristige Chance zur

Rücknahme von Änderungen

• Langfristige Chance zur

Rücknahme von Änderungen

• Change Tracking

• Ownership Tracking

• Unabhängigkeit durch

„Sandboxing“

• Grundlage für Branching und

Merging

Page 12: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Version Control – egal wie …

Page 13: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Strategien zur Datenbankversionierung

• Upgrade Scripts

• Versionierung durch Abstraction / Versionierung

von Code

• Versionierung von Schema (und Static Data)

Page 14: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Upgrade Scripts

Pros

• Audit

• Wiederholbarkeit

• Leichtgewichtiges Deployment

Cons

• Keine State-Historie

• Wiederholung von Änderungen

erforderlich

• Kein Integritätscheck

• Branching und Merging wird schwer

Page 15: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Versionierung mit Abstraction

Pros

• Datenbankänderungen werden

automatisch durch Codeänderungen

generiert

• State-Historie und Audit

• Atomic commits

• Tooling und Prozess

• Unter Umständen

plattformunabhängig

Cons

• Grenzen des Frameworks

• Zusätzliche Custom Upgrade Scripts

Page 16: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Versionierung von Schema

Pros

• State-Historie und Audit

• Leichtes Branching und Merging

• Einfaches On-Boarding durch

Erstellen neuer Umgebungen

• Gutes Tooling verfügbar

(neben SSDT z.B. SQL Source

Control)

Cons

• Custom Upgrade Scripts

Page 17: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

DEMO

Redgate SQL Source Control

Page 18: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Unit TestingNatürlich auch für Datenbanken

Page 19: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

DEMO

TDD mit SSDT

Page 20: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Database Unit Testing in SSDT

• Test Initialize/Cleanup Scripts• Vorbereitung der Umgebung für den Test

• Aufräumen danach

• Pre/Post Test Scripts• Vorbereitung des eigentlichen Tests

• ggf. Nachbereitung

• Test Script• Hier steht der Test

Page 21: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

CI / CDContinuous Integration oder Continuous Deployment

… jetzt wird automatisiert

Page 22: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Wann wird integriert / deployed?

• Immer dann wenn wir uns danach fühlen

• Täglich

• Auf Basis eines Schedules

• Bei jedem Check-In in die Quellcodeverwaltung

Page 23: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Zum Integrationszeitpunkt

• Bedeutet mehr Zeit seit der letzten Integration gleichzeitig mehr Fehler

• Mehr Fehler bedeutet mehr Zeit um diese zu lösen

• In dieser Zeit wird aber weiterentwickelt

• Und am Ende wird eventuell nie integriert

Time

Main

New Developer

Page 24: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Häufigere Integration

• Bedeutet weniger Probleme die gelöst werden müssen

• Ein Deployment kann immer stattfinden

• Der Code ist bei jedem Entwickler in einem Build-fähigen Zustand

Time

Main

New Developer

Page 25: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

DEMO

Continuous Integration / Continuous Deployment

Page 26: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Vorteile von CI

• CI verhindert das „Works on my machine“ syndrom

• Die Änderungen aller Entwickler kommen in das Deployment und keiner

wird abgehängt

• Tests können kontinuierlich laufen und so im Falle eines Fehlers früher

informieren

• Größere Sichtbarkeit des Projektes

• Das Deployment wird unabhängig von den Entwicklern

• Einfachere Bereitstellung einer Umgebung für ein neues Teammitglied

Page 27: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Nachteile Hürden von CI

• Es benötigt Zeit den CI Prozess aufzubauen

• Funktioniert besser mit Tests

• Kurze Buildzeiten helfen – daran kann/muss man arbeiten

• Verletzter Stolz

Page 28: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Fragen ???

Page 29: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Wrap up

• Versionskontrolle der Datenbank ist die existentielle

Grundlage für professionelle Datenbankentwicklung

• Tooling, Versionierungsstrategie und bevorzugte

Umgebung spielen dabei eine wichtige Rolle

• „If it’s not in source control, it doesn’t exist“

• TDD und CI sind auch für Datenbanken möglich

Page 30: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Feedback !!!

Page 31: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

Speakerinfo: Constantin Klein

Constantin arbeitet bei der Freudenberg IT SE & Co. KG. Dort

beschäftigt er sich mit der Entwicklung von Lösungen auf

Basis der Microsoft Produkte und Technologie Plattformen.

Sein besonderes Interesse gilt dabei der Gewinnung,

Verarbeitung und Nutzung von Daten und Informationen. Er

ist MCSD, MCITP Database Developer und MCPD Web +

Enterprise Application Developer. Seit 2010 wurde er jährlich

von Microsoft zum Most Valuable Professional (MVP) für SQL

Server ernannt. Er engagiert sich zusätzlich im Vorstand des Just

Community e.V. und des PASS Deutschland e.V.. Er leitet

außerdem die .NET User Group Frankfurt.

Sein Blog finden Sie unter

http://kostjaklein.wordpress.com

Page 32: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Software Engineering war nie spannender.

• Jamie Thomson: Continuous deployment of SSDT

database projects

http://tiny.cc/JamieCI

• Andrew Fenna: Introduction to SQL Server Data Tools

http://tiny.cc/AndrewSSDT

Ressourcen

Page 33: 30. Treffen der  - Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”