| Inhaltsverzeichnis | 5 |
---|
| 1 Einleitung | 11 |
---|
| 1.1 Überblick über Continuous Delivery und das Buch | 11 |
| 1.2 Warum überhaupt Continuous Delivery? | 12 |
| 1.3 Für wen ist das Buch? | 15 |
| 1.4 Neu in der 2. Auflage | 15 |
| 1.5 Übersicht über die Kapitel | 17 |
| 1.6 Pfade durch das Buch | 18 |
| 1.7 Danksagung | 20 |
| 2 Continuous Delivery: Was und wie? | 23 |
---|
| 2.1 Was ist Continuous Delivery? | 23 |
| 2.2 Warum Software-Releases so kompliziert sind | 23 |
| 2.3 Werte von Continuous Delivery | 24 |
| 2.4 Vorteile von Continuous Delivery | 27 |
| 2.4.1 Continuous Delivery für Time-to-Market | 27 |
| 2.4.2 Continuous Delivery zur Risikominimierung | 30 |
| 2.4.3 Schnelleres Feedback und Lean | 33 |
| 2.5 Aufbau und Struktur einer Continuous-Delivery- Pipeline | 34 |
| 2.6 Links | 34 |
| 38 | 34 |
---|
| 3 Infrastruktur bereitstellen | 39 |
---|
| 3.1 Einleitung | 39 |
| 3.2 Installationsskripte | 41 |
| 3.3 Chef | 44 |
| 3.3.1 Technische Grundlagen | 47 |
| 3.3.2 Chef Solo | 54 |
| 3.3.3 Chef Solo: Fazit | 56 |
| 3.3.4 Knife und Chef Server | 56 |
| 3.3.5 Chef Server: Fazit | 61 |
| 3.4 Vagrant | 61 |
| 3.4.1 Ein Beispiel mit Chef und Vagrant | 63 |
| 3.4.2 Vagrant: Fazit | 65 |
| 3.5 Docker | 65 |
| 3.5.1 Dockers Lösung | 66 |
| 3.5.2 Docker-Container erstellen | 69 |
| 3.5.3 Beispielanwendung mit Docker betreiben | 71 |
| 3.5.4 Docker und Vagrant | 73 |
| 3.5.5 Docker Machine | 76 |
| 3.5.6 Komplexe Konfigurationen mit Docker | 78 |
| 3.5.7 Docker Compose | 80 |
| 3.6 Immutable Server | 83 |
| 3.7 Infrastructure as Code | 84 |
| 3.8 Platform as a Service (PaaS) | 87 |
| 3.9 Umgang mit Daten und Datenbanken | 89 |
| 3.10 Fazit | 92 |
| 3.11 Links | 92 |
| 93 | 92 |
---|
| 4 Build-Automatisierung und Continuous Integration | 97 |
---|
| 4.1 Überblick | 97 |
| 4.2 Build-Automatisierung und Build-Tools | 98 |
| 4.2.1 Ant | 100 |
| 4.2.2 Maven | 100 |
| 4.2.3 Gradle | 105 |
| 4.2.4 Weitere Build-Tools | 108 |
| 4.2.5 Das geeignete Tool auswählen | 109 |
| 4.2.6 Links und Literatur | 110 |
| 4.2.7 Experimente und selber ausprobieren | 110 |
| 4.3 Unit-Tests | 111 |
| 4.3.1 »Gute« Unit-Tests schreiben | 113 |
| 4.3.2 TDD – Test-driven Development | 115 |
| 4.3.3 Clean Code und Software Craftsmanship | 116 |
| 4.3.4 Links und Literatur | 116 |
| 4.3.5 Experimente und selber ausprobieren | 117 |
| 4.4 Continuous Integration | 117 |
| 4.4.1 Jenkins | 118 |
| 4.4.2 Continuous-Integration-Infrastruktur | 124 |
| 4.4.3 Fazit | 125 |
| 4.4.4 Links und Literatur | 126 |
| 4.4.5 Experimente und selber ausprobieren | 126 |
| 4.5 Codequalität messen | 128 |
| 4.5.1 SonarQube | 130 |
| 4.5.2 Links und Literatur | 132 |
| 4.5.3 Experimente und selber ausprobieren | 132 |
| 4.6 Artefakte managen | 133 |
| 4.6.1 Integration in den Build | 135 |
| 4.6.2 Weiterreichende Funktionen von Repositories | 137 |
| 4.6.3 Links und Literatur | 137 |
| 4.6.4 Experimente und selber ausprobieren | 137 |
| 4.7 Fazit | 138 |
| 5 Akzeptanztests | 141 |
---|
| 5.1 Einführung | 141 |
| 5.2 Die Test-Pyramide | 141 |
| 5.3 Was sind Akzeptanztests? | 145 |
| 5.4 GUI-basierte Akzeptanztests | 149 |
| 5.5 Alternative Werkzeuge für GUI-Tests | 155 |
| 5.6 Textuelle Akzeptanztests | 157 |
| 5.7 Alternative Frameworks | 160 |
| 5.8 Strategien für Akzeptanztests | 162 |
| 5.9 Fazit | 164 |
| 5.10 Links | 164 |
| 165 | 164 |
---|
| 6 Kapazitätstests | 167 |
---|
| 6.1 Einführung | 167 |
| 6.2 Kapazitätstests – wie? | 168 |
| 6.3 Kapazitätstests implementieren | 173 |
| 6.4 Kapazitätstests mit Gatling | 174 |
| 6.5 Alternativen zu Gatling | 179 |
| 6.6 Fazit | 181 |
| 6.7 Links | 181 |
| 182 | 181 |
---|
| 7 Exploratives Testen | 183 |
---|
| 7.1 Einleitung | 183 |
| 7
|