Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Kontinuierliche Integration

1,269 views

Published on

  • Be the first to comment

  • Be the first to like this

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! ?

×