Inhaltsverzeichnis | 5 |
1 Vorwort | 11 |
1.1 Überblick über Microservices | 12 |
1.2 Warum Microservices? | 13 |
Teil I Motivation und Grundlagen | 17 |
2 Einleitung | 19 |
2.1 Überblick über das Buch | 19 |
2.2 Für wen ist das Buch? | 19 |
2.3 Übersicht über die Kapitel | 20 |
2.4 Essays | 22 |
2.5 Pfade durch das Buch | 22 |
2.6 Danksagung | 23 |
2.7 Änderungen in der 2. Auflage | 24 |
2.8 Links & Literatur | 24 |
3 Microservice-Szenarien | 25 |
3.1 Eine E-Commerce-Legacy-Anwendung modernisieren | 25 |
3.2 Ein neues Signalsystem entwickeln | 33 |
3.3 Fazit | 36 |
Microservices: Was, warum und warum vielleicht nicht? | 39 |
Teil II | 39 |
4 Was sind Microservices? | 41 |
4.1 Größe eines Microservice | 41 |
4.2 Das Gesetz von Conway | 49 |
4.3 Domain-Driven Design und Bounded Context | 54 |
4.4 Self-contained Systems | 64 |
4.5 Fazit | 65 |
4.6 Links & Literatur | 67 |
5 Gründe für Microservices | 69 |
5.1 Technische Vorteile | 69 |
5.2 Organisatorische Vorteile | 77 |
5.3 Vorteile aus Geschäftssicht | 79 |
5.4 Fazit | 81 |
5.5 Links & Literatur | 82 |
6 Herausforderungen bei Microservices | 83 |
6.1 Technische Herausforderungen | 83 |
6.2 Architektur | 87 |
6.3 Infrastruktur und Betrieb | 90 |
6.4 Fazit | 91 |
6.5 Links & Literatur | 92 |
7 Microservices und SOA | 93 |
7.1 Was ist SOA? | 93 |
7.2 Unterschiede zwischen SOA und Microservices | 99 |
7.3 Fazit | 104 |
7.4 Links & Literatur | 106 |
Teil III Microservices umsetzen | 107 |
8 Architektur von Microservice-Systemen | 111 |
8.1 Fachliche Architektur | 111 |
8.2 Architekturmanagement | 116 |
8.3 Techniken zum Anpassen der Architektur | 121 |
8.4 Microservice-Systeme weiterentwickeln | 130 |
8.5 Microservice und Legacy-Anwendung | 137 |
8.6 Event-driven Architecture | 147 |
8.7 Technische Architektur | 148 |
8.8 Konfiguration und Koordination | 151 |
8.9 Service Discovery | 153 |
8.10 Load Balancing | 156 |
8.11 Skalierbarkeit | 160 |
8.12 Sicherheit | 163 |
8.13 Dokumentation und Metadaten | 171 |
8.14 Fazit | 173 |
8.15 Links & Literatur | 175 |
9 Integration und Kommunikation | 177 |
9.1 Web und UI | 177 |
9.2 REST | 189 |
9.3 SOAP und RPC | 192 |
9.4 Messaging | 193 |
9.5 Datenreplikation | 197 |
9.6 Schnittstellen: intern und extern | 200 |
9.7 Fazit | 203 |
9.8 Links & Literatur | 206 |
10 Architektur eines Microservice | 207 |
10.1 Fachliche Architektur | 207 |
10.2 CQRS | 209 |
10.3 Event Sourcing | 211 |
10.4 Hexagonale Architekturen | 213 |
10.5 Resilience und Stabilität | 217 |
10.6 Technische Architektur | 222 |
10.7 Fazit | 225 |
10.8 Links & Literatur | 226 |
11 Testen von Microservices und Microservice-Systemen | 227 |
11.1 Warum testen? | 227 |
11.2 Wie testen? | 229 |
11.3 Risiken beim Deployment minimieren | 234 |
11.4 Tests des Gesamtsystems | 235 |
11.5 Legacy-Anwendungen mit Microservices testen | 238 |
11.6 Tests einzelner Microservices | 241 |
11.7 Consumer-Driven Contract Test | 243 |
11.8 Technische Standards testen | 247 |
11.9 Fazit | 249 |
11.10 Links & Literatur | 250 |
12 Betrieb und Continuous Delivery von Microservices | 251 |
12.1 Herausforderungen beim Betrieb von Microservices | 251 |
12.2 Logging | 254 |
12.3 Monitoring | 260 |
12.4 Deployment | 266 |
12.5 Steuerung | 272 |
12.6 Infrastrukturen | 273 |
12.7 Fazit | 279 |
12.8 Links & Literatur | 281 |
13 Organisatorische Auswirkungen der Architektur | 283 |
13.1 Organisatorische Vorteile von Microservices | 283 |
13.2 Alternativer Umgang mit dem Gesetz von Conway | 287 |
13.3 Spielräume schaffen: Mikro- und Makro-Architektur | 291 |
13.4 Technische Führung | 297 |
13.5 DevOps | 298 |
13.6 Schnittstelle zu den Fachbereichen | 303 |
13.7 Wiederverwendbarer Code | 305 |
13.8 Microservices ohne Organisationsänderung? | 309 |
13.9 Fazit | 311 |
13.10 Links & Literatur | 313 |
Teil IV Technologien | 315 |
14 Beispiel-Implementierung von Microservices | 317 |
14.1 Fachliche Architektur | 318 |
14.2 Basistechnologien | 320 |
14.3 Build | 324 |
14.4 Deployment mit Docker | 326 |
14.5 Docker Machine | 327 |
14.6 Docker Compose | 329 |
14.7 Service Discovery | 332 |
14.8 Routing | 335 |
14.9 Resilience | 337 |
14.10 Load Balancing | 341 |
14.11 Integration anderer Technologien | 342 |
14.12 Tests | 342 |
14.13 Weitere Beispiele | 348 |
14.14 Fazit | 349 |
14.15 Links & Literatur | 351 |
15 Technologien für Nanoservices | 353 |
15.1 Warum Nanoservices? | 354 |
15.2 Definition Nanoservice | 356 |
15.3 Amazon Lambda | 357 |
15.4 OSGi | 360 |
15.5 Java EE | 363 |
15.6 Vert.x | 366 |
15.7 Erlang | 368 |
15.8 Seneca | 372 |
15.9 Fazit | 374 |
15.10 Links & Literatur | 376 |
16 Wie mit Microservices loslegen? | 377 |
16.1 Warum Microservices? | 377 |
16.2 Wege zu Microservices | 378 |
16.3 Microservice: Hype oder Realität? | 379 |
16.4 Fazit | 380 |
Index | 381 |