Wir haben uns für eine moderne Microservice Architektur entschieden und die komplexe Fachlichkeit in 25 Domänen unterteilt. Aktuell besteht FX aus 82 Apps, die miteinander per REST und/oder Kafka Events kommunizieren. Die Services laufen in einem Kubernetes Cluster und zusätzlich sind Schnittstellen zu externen Systemen vorhanden. Fast alle der Microservices haben den gleichen Tech Stack: Java 11, Postgres, Spring Boot, ReactJS
Jede dieser Apps kann lokal gestartet werden und mit Docker Containern interagieren. Bevor Änderungen an einer App live gehen, müssen verschiedene Stages durchlaufen werden. Angefangen mit dem Build in Gitlab mit Unit Tests, Integrations Tests der App selbst mit Cucumber, sowie Integrations Tests mit anderen Apps auf Kubernetes dev Clustern. Es folgt eine manuelle Abnahme der Product Owner oder Requirements Engineers auf einer Abnahmeumgebung. Sobald die Abnahme erfolgt ist, wird auf eine produktionsnahe Umgebung deployed und dann folgt ein automatisiertes Single App Deployment zur Laufzeit auf die Produktionsumgebung.
Bei der beschriebenen Architektur und Continous Integration Umgebung bist du an manchen Tagen als DevOps Entwickler gefühlt mehr mit Ops als mit Dev. Das passiert, wenn ein kleiner Change vorliegt, in dem nur eine Zeile programmiert wird. Dieser muss über die CI Pipeline durch die vielen Stages in mehreren verschiedenen Umgebungen laufen und bestimmte Qualitätsanforderungen erfüllen. Das kann durch eine falsche Konfiguration in einer Umgebung oder an einen nicht gesetzten Toggle bei einer anderen App schon scheitern. Und dann geht die Suche los.
So lernen wir jeden Tag dazu, da in der komplexen Infrastruktur sehr viel Knowhow und Lernpotenzial stecken. Daher bleibt für uns das faszinierendste und spannendste beim Programmieren, wenn etwas einfach mal out of the box funktioniert. Lust bei uns mitzumachen? Bewirb‘ dich hier.