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

Kontinuierliche Integration

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