Kontinuierliche Integration

1,007 views
936 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,007
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Kontinuierliche Integration

  1. 1. Kontinuierliche Integration Web Services Johannes Weber
  2. 2. Warum kontinuierlich integrieren? <ul><li>Frühzeitige erkennung von Fehlern </li></ul><ul><li>Minimierung manueller Arbeitsschritte </li></ul><ul><li>Lauffähige Softwareversionen zu jeder Zeit </li></ul><ul><li>Transparenz des Entwicklungsprozesses </li></ul><ul><li>Zufriedenheit mit dem eigenen Produkt </li></ul>
  3. 3. Agenda <ul><li>Klassische Integration </li></ul><ul><li>Grundlagen für Kontinuierliche Integration </li></ul><ul><li>Kontinuierliche Integration </li></ul><ul><li>Prozesse und Techniken im Detail </li></ul><ul><li>Continuous Deployment </li></ul>
  4. 4. Klassische Integration
  5. 5. Klassische Integration <ul><li>Dieser Ansatz scheitert spätestends: </li></ul><ul><ul><li>Mit größer werdenden Teams </li></ul></ul>
  6. 6. Klassische Integration <ul><li>Dieser Ansatz scheitert spätestens: </li></ul><ul><ul><li>Mit größer werdenden Teams </li></ul></ul><ul><ul><li>Mit komplexeren Projekten </li></ul></ul>
  7. 7. Agenda <ul><li>Klassische Integration </li></ul><ul><li>Grundlagen für Kontinuierliche Integration </li></ul><ul><li>Kontinuierliche Integration </li></ul><ul><li>Prozesse und Techniken im Detail </li></ul><ul><li>Continuous Deployment </li></ul>
  8. 8. Zurück zum Ausgangspunkt
  9. 9. Grundvoraussetzungen <ul><li>Versionsmanagement ( https://artigo.pl:8080/trac/cms/ login ) </li></ul>
  10. 10. Grundvoraussetzungen <ul><li>Versionsmanagement </li></ul><ul><li>Automatisierte Tests </li></ul>
  11. 11. Grundvoraussetzungen <ul><li>Versionsmanagement </li></ul><ul><li>Automatisierte Tests </li></ul><ul><li>Buildmanagement </li></ul>
  12. 12. Zwischenfazit <ul><li>25% - Frühzeitige erkennung von Fehlern </li></ul><ul><ul><li>Automatisierte Tests </li></ul></ul><ul><li>50% - Minimierung manueller Arbeitsschritte </li></ul><ul><ul><li>Buildautomatisierung </li></ul></ul><ul><li>25% - Lauffähige Softwareversionen zu jeder Zeit </li></ul><ul><ul><li>Versionsverwaltung </li></ul></ul><ul><li>25% - Transparenz des Entwicklungsprozesses </li></ul><ul><ul><li>Commithistory </li></ul></ul><ul><li>31% - Zufriedenheit mit dem eigenen Produkt </li></ul>
  13. 13. Agenda <ul><li>Klassische Integration </li></ul><ul><li>Grundlagen für Kontinuierliche Integration </li></ul><ul><li>Kontinuierliche Integration </li></ul><ul><li>Prozesse und Techniken im Detail </li></ul><ul><li>Continuous Deployment </li></ul>
  14. 14. Kontinuierliche Integration ist… <ul><li>... Nicht nur ein Werkzeug, sondern hat Einfluss auf den gesamten Entwicklungsprozess </li></ul><ul><ul><li>Jede Änderung wird zeitnahe eingecheckt </li></ul></ul><ul><ul><li>Die Versionsverwaltung ist kein Zwischenspeicher für fehlerhaften Quelltext </li></ul></ul><ul><ul><li>Fehlgeschlagene Builds werden umgehend gefixt, denn oberstes Ziel ist eine lauffähige Software </li></ul></ul><ul><ul><li>Mittels Buildscript führe jeder Entwickler vor einem Commit eine lokale Integration durch </li></ul></ul>
  15. 15. Etappenziel erreicht
  16. 16. Zwischenfazit <ul><li>50% - Frühzeitige erkennung von Fehlern </li></ul><ul><ul><li>Automatisierte Tests, Testlauf nach jedem Commit </li></ul></ul><ul><li>50% - Minimierung manueller Arbeitsschritte </li></ul><ul><ul><li>Buildautomatisierung </li></ul></ul><ul><li>50% - Lauffähige Softwareversionen zu jeder Zeit </li></ul><ul><ul><li>Versionsverwaltung, CI-Version </li></ul></ul><ul><li>25% - Transparenz des Entwicklungsprozesses </li></ul><ul><ul><li>Commithistory, CI-Feedback </li></ul></ul><ul><li>50% - Zufriedenheit mit dem eigenen Produkt </li></ul>
  17. 17. Agenda <ul><li>Klassische Integration </li></ul><ul><li>Grundlagen für Kontinuierliche Integration </li></ul><ul><li>Kontinuierliche Integration </li></ul><ul><li>Prozesse und Techniken im Detail </li></ul><ul><li>Continuous Deployment </li></ul>
  18. 18. Versionsmanagement <ul><li>Artefakt die versioniert werden sollten </li></ul><ul><ul><li>Quellcode jeglicher Art </li></ul></ul><ul><ul><li>Konfigurationsdateien </li></ul></ul><ul><li>Branches zur Trennung von Produktlinien </li></ul><ul><ul><li>Releases und Features kommen in einem Branch </li></ul></ul><ul><li>Tags </li></ul><ul><ul><li>Releases und erfolgreiche Builds werden mit einem Tag versehen </li></ul></ul>
  19. 19. Tagging und Branching
  20. 20. Komponenten bilden <ul><li>svn:externals </li></ul><ul><li>Git submodule </li></ul><ul><li>PEAR Paket </li></ul>
  21. 21. Vorteile der Komponentenbildung <ul><li>Komponenten sind getrennt voneinender Testbar </li></ul><ul><li>Kürzere Zeitspanne zum Feedback </li></ul><ul><li>Es existieren immer stabile Versionen von Komponenten und der gesamten Software </li></ul><ul><li>Definierte und gut sichtbare Abhängigkeiten </li></ul>
  22. 22. Testverfahren <ul><li>Software und Akzeptanztests mit </li></ul><ul><ul><li>PHPUnit, Selenium, Fitnesse </li></ul></ul><ul><li>Statische Tests </li></ul><ul><ul><li>Lint, PHPCPD, PHP_CodeSniffer, PHPMD </li></ul></ul><ul><li>Last und Performance Tests </li></ul><ul><ul><li>JMeter </li></ul></ul>
  23. 23. Statische Tests <ul><li>Gerade bei modernen, browserbasierten Anwendungen ist ist syntaktische Korrektheit </li></ul><ul><ul><li>Die einfachste Form der statischen Codeanalyse ist das lintern: </li></ul></ul><ul><ul><ul><li>php –l </li></ul></ul></ul><ul><ul><ul><li>W3C CSS Validator </li></ul></ul></ul><ul><ul><ul><li>xmllint –html –noout http://www.example.com </li></ul></ul></ul><ul><ul><ul><li>Douglas Corckfords JSLint </li></ul></ul></ul>
  24. 24. Programmierkonventionen <ul><li>Ein häufig unterschätzter Qualitätsaspekt </li></ul><ul><li>Wo hinterlässt man eher Unrat? </li></ul><ul><ul><li>Im keimfreien Operationssaal </li></ul></ul><ul><ul><li>Neben einer überquellenden Mülltonne </li></ul></ul><ul><li>Reduziert die Einarbeitungszeit in Quelltext </li></ul><ul><li>PHP_CodeSniffer ist hier der Defacto-Standard </li></ul>
  25. 25. Softwaremetriken <ul><li>Eine Softwaremetrik ist eine Maßzahl für Qualitätsmerkmale von Software </li></ul><ul><li>Mathematische Funktion zur Ermittlung von Kennzahlen </li></ul><ul><li>Softwaremetriken ermöglichen die Kontrolle der qualidativen Entwicklung von Software </li></ul><ul><li>LOC (Lines of Code) </li></ul><ul><li>CCN (Cyclomatic Complexity Number) </li></ul><ul><li>Etc. </li></ul>
  26. 26. Softwaremetriken
  27. 27. Buildmanagement <ul><li>Datenbanken </li></ul><ul><ul><li>Anlegen/Löschen von Schemate und Testdaten </li></ul></ul><ul><ul><li>Automatisierung von Schemate-Migrationen </li></ul></ul><ul><ul><li>Für jede Änderung existiert der passende Rollback </li></ul></ul><ul><ul><ul><li>Doctrine Migrate, DbDeploy </li></ul></ul></ul><ul><li>Automatisierung aller Schritte zur Erzeugung einer frei wählbaren Softwarekonfiguration </li></ul><ul><ul><li>One Click Install </li></ul></ul>
  28. 28. Zwischenfazit <ul><li>75% - Frühzeitige erkennung von Fehlern </li></ul><ul><ul><li>Automatisierte Tests, Testlauf nach jedem Commit </li></ul></ul><ul><li>75% - Minimierung manueller Arbeitsschritte </li></ul><ul><ul><li>Buildautomatisierung, One Click Install </li></ul></ul><ul><li>75% - Lauffähige Softwareversionen zu jeder Zeit </li></ul><ul><ul><li>Versionsverwaltung, CI-Version, Tags </li></ul></ul><ul><li>75% - Transparenz des Entwicklungsprozesses </li></ul><ul><ul><li>Commithistory, CI-Feedback </li></ul></ul><ul><li>75% - Zufriedenheit mit dem eigenen Produkt </li></ul>
  29. 29. Agenda <ul><li>Klassische Integration </li></ul><ul><li>Grundlagen für Kontinuierliche Integration </li></ul><ul><li>Kontinuierliche Integration </li></ul><ul><li>Prozesse und Techniken im Detail </li></ul><ul><li>Continuous Deployment </li></ul>
  30. 30. Continuous Deployment <ul><li>Was ist zu beachten? </li></ul><ul><ul><li>CI-, Stage- und Live-System ident </li></ul></ul><ul><ul><li>Abgrenzung zw. Tagesgeschäft und Neuentwicklungen </li></ul></ul><ul><ul><li>Deployments erfolgen nur aus abgenommenen Bereich </li></ul></ul><ul><ul><li>Deployed wird immer auf die Stage Umgebung – letzte Abnahme </li></ul></ul>
  31. 31. Continuous Deployment
  32. 32. Fazit
  33. 33. Danke! ?

×