Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Kontinuierliche Integration Web Services Johannes Weber
Warum kontinuierlich integrieren? <ul><li>Frühzeitige erkennung von Fehlern </li></ul><ul><li>Minimierung manueller Arbeit...
Agenda <ul><li>Klassische Integration </li></ul><ul><li>Grundlagen für Kontinuierliche Integration </li></ul><ul><li>Konti...
Klassische Integration
Klassische Integration <ul><li>Dieser Ansatz scheitert spätestends: </li></ul><ul><ul><li>Mit größer werdenden Teams </li>...
Klassische Integration <ul><li>Dieser Ansatz scheitert spätestens: </li></ul><ul><ul><li>Mit größer werdenden Teams </li><...
Agenda <ul><li>Klassische Integration </li></ul><ul><li>Grundlagen für Kontinuierliche Integration </li></ul><ul><li>Konti...
Zurück zum Ausgangspunkt
Grundvoraussetzungen <ul><li>Versionsmanagement ( https://artigo.pl:8080/trac/cms/ login ) </li></ul>
Grundvoraussetzungen <ul><li>Versionsmanagement </li></ul><ul><li>Automatisierte Tests </li></ul>
Grundvoraussetzungen <ul><li>Versionsmanagement </li></ul><ul><li>Automatisierte Tests </li></ul><ul><li>Buildmanagement <...
Zwischenfazit <ul><li>25% - Frühzeitige erkennung von Fehlern </li></ul><ul><ul><li>Automatisierte Tests </li></ul></ul><u...
Agenda <ul><li>Klassische Integration </li></ul><ul><li>Grundlagen für Kontinuierliche Integration </li></ul><ul><li>Konti...
Kontinuierliche Integration ist… <ul><li>... Nicht nur ein Werkzeug, sondern hat Einfluss auf den gesamten Entwicklungspro...
Etappenziel erreicht
Zwischenfazit <ul><li>50% - Frühzeitige erkennung von Fehlern </li></ul><ul><ul><li>Automatisierte Tests, Testlauf nach je...
Agenda <ul><li>Klassische Integration </li></ul><ul><li>Grundlagen für Kontinuierliche Integration </li></ul><ul><li>Konti...
Versionsmanagement <ul><li>Artefakt die versioniert werden sollten </li></ul><ul><ul><li>Quellcode jeglicher Art </li></ul...
Tagging und Branching
Komponenten bilden <ul><li>svn:externals </li></ul><ul><li>Git submodule </li></ul><ul><li>PEAR Paket </li></ul>
Vorteile der Komponentenbildung <ul><li>Komponenten sind getrennt voneinender Testbar </li></ul><ul><li>Kürzere Zeitspanne...
Testverfahren <ul><li>Software und Akzeptanztests mit </li></ul><ul><ul><li>PHPUnit, Selenium, Fitnesse </li></ul></ul><ul...
Statische Tests <ul><li>Gerade bei modernen, browserbasierten Anwendungen ist ist syntaktische Korrektheit  </li></ul><ul>...
Programmierkonventionen <ul><li>Ein häufig unterschätzter Qualitätsaspekt </li></ul><ul><li>Wo hinterlässt man eher Unrat?...
Softwaremetriken <ul><li>Eine Softwaremetrik ist eine Maßzahl für Qualitätsmerkmale von Software </li></ul><ul><li>Mathema...
Softwaremetriken
Buildmanagement <ul><li>Datenbanken </li></ul><ul><ul><li>Anlegen/Löschen von Schemate und Testdaten </li></ul></ul><ul><u...
Zwischenfazit <ul><li>75% - Frühzeitige erkennung von Fehlern </li></ul><ul><ul><li>Automatisierte Tests, Testlauf nach je...
Agenda <ul><li>Klassische Integration </li></ul><ul><li>Grundlagen für Kontinuierliche Integration </li></ul><ul><li>Konti...
Continuous Deployment <ul><li>Was ist zu beachten? </li></ul><ul><ul><li>CI-, Stage- und Live-System ident </li></ul></ul>...
Continuous Deployment
Fazit
Danke! ?
Nächste SlideShare
Wird geladen in …5
×

Kontinuierliche Integration

1.253 Aufrufe

Veröffentlicht am

  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

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

×