Constantin „Kostja“ Klein | Freudenberg IT SE & Co. KG
@KostjaKlein
Software Engineering war nie spannender.
Wer von Ihnen verwendet eine Versionsverwaltung
für den Anwendungscode?
C#, ASP.N...
Software Engineering war nie spannender.
Wer von Ihnen verwendet eine Versionsverwaltung
für den DatenbankAnwendungscode?
Software Engineering war nie spannender.
Ebenen des DB Lifecycle Managements
CD
Continuous
Integration
Versionsverwaltung
...
Software Engineering war nie spannender.
Versionsverwaltung
Die absolute Grundlage
Software Engineering war nie spannender.
Die Meinung im Internet
Source: http://programmers.stackexchange.com/questions/12...
Software Engineering war nie spannender.
Und für Datenbanken?
Source: http://blog.codinghorror.com/is-your-database-under-...
Software Engineering war nie spannender.
Und auch Microsoft sagt es ;-)
http://msdn.microsoft.com/en-us/library/ms181368.a...
Software Engineering war nie spannender.
Der beste Grund
Use source control because neither you nor your
team are perfect
...
Software Engineering war nie spannender.
… und …
If it’s not in source control,
it doesn’t exist.
Source: http://stackover...
Software Engineering war nie spannender.
Im Detail
• Backup und Restore
• Synchronisation
• Kurzfristige Chance zur
Rückna...
Software Engineering war nie spannender.
Version Control – egal wie …
Software Engineering war nie spannender.
Strategien zur Datenbankversionierung
• Upgrade Scripts
• Versionierung durch Abs...
Software Engineering war nie spannender.
Upgrade Scripts
Pros
• Audit
• Wiederholbarkeit
• Leichtgewichtiges Deployment
Co...
Software Engineering war nie spannender.
Versionierung mit Abstraction
Pros
• Datenbankänderungen werden
automatisch durch...
Software Engineering war nie spannender.
Versionierung von Schema
Pros
• State-Historie und Audit
• Leichtes Branching und...
Software Engineering war nie spannender.
DEMO
Redgate SQL Source Control
Software Engineering war nie spannender.
Unit Testing
Natürlich auch für Datenbanken
Software Engineering war nie spannender.
DEMO
TDD mit SSDT
Software Engineering war nie spannender.
Database Unit Testing in SSDT
• Test Initialize/Cleanup Scripts
• Vorbereitung de...
Software Engineering war nie spannender.
CI / CD
Continuous Integration oder Continuous Deployment
… jetzt wird automatisi...
Software Engineering war nie spannender.
Wann wird integriert / deployed?
• Immer dann wenn wir uns danach fühlen
• Täglic...
Software Engineering war nie spannender.
Zum Integrationszeitpunkt
• Bedeutet mehr Zeit seit der letzten Integration gleic...
Software Engineering war nie spannender.
Häufigere Integration
• Bedeutet weniger Probleme die gelöst werden müssen
• Ein ...
Software Engineering war nie spannender.
DEMO
Continuous Integration / Continuous Deployment
Software Engineering war nie spannender.
Vorteile von CI
• CI verhindert das „Works on my machine“ syndrom
• Die Änderunge...
Software Engineering war nie spannender.
Nachteile Hürden von CI
• Es benötigt Zeit den CI Prozess aufzubauen
• Funktionie...
Software Engineering war nie spannender.
Fragen ???
Software Engineering war nie spannender.
Wrap up
• Versionskontrolle der Datenbank ist die existentielle
Grundlage für pro...
Software Engineering war nie spannender.
Feedback !!!
Software Engineering war nie spannender.
Speakerinfo: Constantin Klein
Constantin arbeitet bei der Freudenberg IT SE & Co....
Software Engineering war nie spannender.
• Jamie Thomson: Continuous deployment of SSDT
database projects
http://tiny.cc/J...
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”
Nächste SlideShare
Wird geladen in …5
×

30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

393 Aufrufe

Veröffentlicht am

„Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

Ein Großteil des existierenden .NET Codes steht unter Quellcodeverwaltung und bereits heute verwenden viele Anwendungsentwickler irgendeine Form von Continuous Integration. Die Datenbankentwickler hängen an dieser Stelle leider ein wenig hinterher. Dabei sind gerade die Daten das Herzstück einer Anwendung und Änderungen an Datenbankstrukturen daher besonders komplex. Der erste Schritt um eine Verbesserung herbeizuführen ist es, die Datenbank ebenfalls unter Quellcodeverwaltung zu stellen. Das erleichtert nicht nur die Zusammenarbeit mit anderen Teammitgliedern und ermöglicht ein einfacheres Deployment, sondern es bildet auch die Grundlage für Continuous Integration, sowie automatisiertes Testing.

Dieser User-Group Abend zeigt:
* wie man seine SQL Datenbank genauso einfach in die Quellcodeverwaltung bringt wie .NET Code
* wie man seine Datenbank direkt aus der Quellcodeverwaltung heraus deployen kann und
* wie man einen ersten Schritt in Richtung Continous Integration machen kann

Veröffentlicht in: Technologie
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
393
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
120
Aktionen
Geteilt
0
Downloads
2
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen Sie Ihre SQL Datenbank unter Kontrolle”

  1. 1. Constantin „Kostja“ Klein | Freudenberg IT SE & Co. KG @KostjaKlein
  2. 2. Software Engineering war nie spannender. Wer von Ihnen verwendet eine Versionsverwaltung für den Anwendungscode? C#, ASP.NET, JavaScript, VB.NET, …
  3. 3. Software Engineering war nie spannender. Wer von Ihnen verwendet eine Versionsverwaltung für den DatenbankAnwendungscode?
  4. 4. Software Engineering war nie spannender. Ebenen des DB Lifecycle Managements CD Continuous Integration Versionsverwaltung Manuell CD = Continuous Delivery/Deployment
  5. 5. Software Engineering war nie spannender. Versionsverwaltung Die absolute Grundlage
  6. 6. 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/
  7. 7. Software Engineering war nie spannender. Und für Datenbanken? Source: http://blog.codinghorror.com/is-your-database-under-version-control/
  8. 8. Software Engineering war nie spannender. Und auch Microsoft sagt es ;-) http://msdn.microsoft.com/en-us/library/ms181368.aspx
  9. 9. 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
  10. 10. 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
  11. 11. 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
  12. 12. Software Engineering war nie spannender. Version Control – egal wie …
  13. 13. Software Engineering war nie spannender. Strategien zur Datenbankversionierung • Upgrade Scripts • Versionierung durch Abstraction / Versionierung von Code • Versionierung von Schema (und Static Data)
  14. 14. 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
  15. 15. 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
  16. 16. 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
  17. 17. Software Engineering war nie spannender. DEMO Redgate SQL Source Control
  18. 18. Software Engineering war nie spannender. Unit Testing Natürlich auch für Datenbanken
  19. 19. Software Engineering war nie spannender. DEMO TDD mit SSDT
  20. 20. 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
  21. 21. Software Engineering war nie spannender. CI / CD Continuous Integration oder Continuous Deployment … jetzt wird automatisiert
  22. 22. 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
  23. 23. 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
  24. 24. 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
  25. 25. Software Engineering war nie spannender. DEMO Continuous Integration / Continuous Deployment
  26. 26. 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
  27. 27. 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
  28. 28. Software Engineering war nie spannender. Fragen ???
  29. 29. 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
  30. 30. Software Engineering war nie spannender. Feedback !!!
  31. 31. 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
  32. 32. 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

×