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.