Zum Hauptinhalt Zur Navigation Zur Suche

Problem 8: das Gateway zur Hölle

Eine der größten Herausforderungen bei verteilten Systemen ist die Gateway-Schicht – das Bindeglied zwischen Frontends und Microservices oder zwischen Diensten. Theoretisch handelt es sich um eine klare Abstraktion. In der Praxis ist sie jedoch oft ein Druckkessel für all die Komplexität, mit der wir uns an anderer Stelle nicht auseinandersetzen wollten.

Authentifizierung und Autorisierung sind dafür gute Beispiele. Beides klingt einfach, bis man mehrere Identitätsanbieter, fein abgestufte Berechtigungen und mandantenübergreifende Zugriffsbereiche kombinieren muss – und das alles bei gleichbleibender Sicherheit und Geschwindigkeit.

Viele Teams unterschätzen, wie ressourcenintensiv diese Vorgänge sind. Und was noch schlimmer ist: Sie überlasten ihre Gateways damit. Plötzlich wird aus einer ursprünglich als schlank konzipierten Routing-Schicht ein CPU-gebundener Monolith, der bei jeder Anfrage Krypto-Operationen und Zugriffsprüfungen durchführt.

Und dann gibt es da noch Thread-Pools und I/O-Verhalten. Gateways sind in der Regel der erste und letzte Schritt in einer Anforderungskette. Wer nicht weiß, ob seine nachgelagerten Dienste CPU- oder I/O-gebunden sind, wird Pools und Timeouts falsch konfigurieren.

Extrem häufig bedienen Gateways mit Standard-Thread-Zahlen, die von einem Spring-Boot-Starter oder einer Node.js-Vorlage übernommen wurden, Hunderte Verbindungen gleichzeitig. Das Ergebnis sind Latenzspitzen, Thread Starvation und kaskadierende Ausfälle, die sich über die gesamte Flotte ausbreiten.

Um zuverlässige Gateways zu entwickeln, braucht es mehr als YAML und gute Absichten. Man muss sich mit Backpressure, Circuit Breakers und dem Verhalten der Laufzeitumgebung unter Last auskennen. Den meisten Teams wird erst bewusst, wie anfällig ihre Konfiguration ist, wenn ein einziger falsch konfigurierter Pool die gesamte Produktionsumgebung lahmlegt.

Problem 9: technologischer Wildwuchs

Alle Unternehmen beteuern, dass sie "technische Autonomie" schätzen. Aber nur wenige wissen, was das bedeutet. Wenn man Entwicklern nur genug Zeit und Freiheit lässt, greifen sie auf jedes erdenkliche Framework, jede Laufzeitumgebung und jede Bibliothek zurück, die man sich vorstellen kann.

Hier Kotlin-Coroutinen, dort Vert.x oder Go-Services, die neben einer Rust-API laufen und die nur noch eine einzige Person versteht. Es ist, als besuche man einen Ideen-Freizeitpark – was so lange Spaß macht, bis etwas kaputtgeht und niemand mehr weiß, wie man die Attraktion neu startet.

Dieser technologische Wildwuchs entsteht nicht aus Nachlässigkeit der Entwickler, sondern weil die Führungsebene sie unter dem Deckmantel der Innovation zulässt – oder sogar fördert! Innovation ohne Verantwortlichkeit führt jedoch zu Entropie.

Jeder neue Stack bedeutet eine neue Betriebsoberfläche, einen neuen Sicherheitsvektor, neue Einführungs- und Einarbeitungskosten. Und wenn Umstrukturierungen stattfinden – Spoiler: Das tun sie immer! – werden diese "Snowflake"-Systeme zu Landminen.

Und was, wenn dann die einzige Person, die diese Probleme lösen könnte, das Unternehmen gerade verlassen hat? Dann wird das Fluktuationsrisiko vom Personal- zum Systemproblem. Mit jeder "einzigartigen" Technologie-Entscheidung wird eine Abhängigkeit zu einer einzelnen Person geschaffen. Ist die Person weg, geht auch das Systemwissen verloren.

Immerhin verbessert sich die Lage in diesem Bereich. KI-gestützte Tools zum Codeverständnis, Architektur-Reviews und interne Tech-Radare helfen Teams dabei, wieder den Überblick zu gewinnen. Sie beseitigen den Wildwuchs nicht, machen ihn aber leichter zu durchschauen. Die Unordnung zu erkennen, ist oft der erste Schritt dazu, sie zu beseitigen.


Relevante Themen