Ausgangslage:
- Services/APIs wurden pro Abteilung entwickelt, auch wenn diese die gleiche Aufgabe erfüllen
- 8 Server mit je 3 Tomcat-Installationen in denen diverse Web-Apps betrieben werden
- Wir brauchten viele sehr kleine Services in mehreren Abteilungen für unterschiedliche Produkte Probleme
- Deployments von Services/Applikationen erfordern Neustarts der Tomcats → Downtime für Releases und/oder Wartung → geht nur nachts
- Skaliert nicht vernünftig
- Bugs (System.exit(), Memory-Leaks) in einer Applikation reißen die anderen Applikationen im selben Tomcat mit in den Tod Anforderungen
- Interne APIs abteilungsübergreifend zur Verfügung stellen
- Möglichst wenig Downtime
- Deployments sollen zu jeder Zeit möglich sein
Lösungsansatz:
- Auf der JAX 2015 haben wir Vortäge zu Docker, Spring-Boot und Netflix-OSS (Open Source-Software) gehört
- Wir haben erkannt, dass diese Kombination unser Weg sein kann
- Docker ermöglicht den einheitlichen Betrieb von Software
- Netflix-OSS
- Service-Discovery (Eureka)
- Routing/Proxy (Zuul)
- Zentrales Konfigurationsmanagement (Archaius)
- Spring-Boot
- Spring-Boot-Starter-Web → embedded Tomcat
- Security (OAuth2)
- Monitoring (Actuator)
- Config-Server
Wir haben beschlossen das ernsthaft auszuprobieren. Wir beschreiben unseren Weg und unsere Erfahrungen auf diesem Weg.