Was können 4 Threads, was 600 nicht können?
Abstract
Thu 15:35 - 16:20 Uhr | 2022
Als Teil der Microservice-Landschaft eines in der Entwicklung befindlichen E-Commerce-Systems für Millionen Kunden haben wir einen zentralen Java-Spring-Service schrittweise von einer synchronen WebMVC- in eine reaktive Webflux-Anwendung überführt. Während vorher je ein Thread pro Request für die Verarbeitung benötigt wurde, teilen sich nun alle Anfragen einen kleinen Pool von Worker Threads und nutzen die vorhandenen Ressourcen so deutlich effizienter. Dank Webflux blockieren ausgehende HTTP-Requests keine Threads mehr, sondern setzen die Ausführung zu späterem Zeitpunkt bei Erhalt der Antwort vom Server fort. Damit ändert sich auch das zugrundeliegende Programmierparadigma fundamental: Mithilfe von Reactor, unserer Reactive Streams-Implementierung der Wahl, werden Operationen auf funktionale Weise verkettet, um Fachlogik abzubilden. Der Code drückt aus, welche Berechnungsschritte in welcher Reihenfolge notwendig sind, wobei die Logik vom tatsächlichen Zeitpunkt der Ausführung entkoppelt bleibt. In diesem Vortrag möchten wir unsere Erfahrungen im Team im Umgang mit dem reaktiven Technologiestack teilen und eine Einführung geben, wie mithilfe von reaktiven Java-Anwendungen Performance-Bottlenecks vermieden werden können. Am Beispiel eines kleinen fiktiven Microservices stellen wir die nötigen Codeanpassungen vor und werten Leistungsmetriken im Rahmen eines kurzen Lasttests aus. Den Zuhörenden werden die nötigen Hintergründe vermittelt, um zu entscheiden, ob sich in ihren Projekten ein Umstieg auf den reaktiven Stack lohnt, sowie Grundlagen für einen schnellen Start in die Welt hochperformanter, reaktiver Webservices an die Hand gegeben.
Vortragsimpressionen
Jonas Nagy-Kuhlen unterstützt als agiler Softwareentwickler führende Unternehmen aktiv bei der Neu- und Weiterentwicklung von komplexen Systemlandschaften basierend auf dem Java-Spring-Stack. Nach seinem Einstieg in die .NET-Entwicklung vor acht Jahren konnte er insbesondere Erfahrung mit performancekritischen, nebenläufigen Systemen sammeln und erfolgreich in verschiedenen Kundenprojekten einbringen. Dabei legt er großen Wert auf agile Methoden und sauberen, getesteten Code.