Posts

MongoDB im Turbomodus mit Spring Webflux und Spring Data reactive

Bild
Um den Turbo in der Kommunikation mit der Datenbank zu zünden, gibt es  Spring Data auch als reaktive Bibliothek.  Damit hilft uns das reaktive Paradigma die Interaktion mit unserer Datenbank zu beschleunigen.  In diesem Artikel zeige ich euch, wie man Spring Data Reactive Repositories für MongoDB benutzt. Einführung Spring Reactive Zur reaktiven Programmierung mit Spring habe ich bereits 2 andere Artikel geschrieben, in denen ich hauptsächlich die Interaktion zwischen Client und Server beschreibe. Dort findet ihr auch Erklärungen warum reaktive Programmierung als skalierbare, resiliente, responsive und Event-basierte Alternative zum klassischen Ansatz meist deutlich performanter ist: Spring's reaktiver WebClient Spring Webflux für reaktive Webservices Spring Data und MongoDB Auch zu Spring Data und MongoDB habe ich bereits einen Artikel geschrieben, dort geht es aber um die klassische Programmierung: Spring Data und MongoDB Der Nachteil dieses Ansatzes ist, dass die...

Parallele Datenverarbeitung mit Threads / CompletableFuture in der Praxis

Bild
Lang laufende Rechenoperationen oder Datentransformationen können durch parallele Ausführung erheblich beschleunigt werden. In diesem Artikel zeige ich, wie ich den Code für eine Datenbank Schemata Migration mit Hilfe von CompletableFuture und Paging von circa 15 Stunden Laufzeit auf 45 Minuten beschleunigt habe. 15 Stunden Laufzeit - warum nicht? Wenn es keinen stört, sind 15 Stunden Laufzeit für eine Datentransformation kein Problem. Unsere Datenbank Schemata Migration wurde aber bei einen produktiven System benötigt, das von Telekom Kunden genutzt wird. Leider mussten wir das produktive System während der Migration anhalten, so dass wir vor Kunde eine Downtime hatten - in diesem Fall wären 15 Stunden verständlicherweise inakzeptabel gewesen. Ich gebe zu, dass wir im Vorfeld schon Design-Fehler gemacht. Diese Fehler haben uns in die Situation gebracht, dass eine Datenbank Schemata Migration überhaupt notwendig war - das künftig zu verhindern soll hier aber nicht mein Thema sein. ...

Planning Poker in Scrum oder SAFe Meetings

Bild
Texas Holdem, Omaha Hi-Low - echte Coder spielen Planning Poker 😎 In diesem Artikel stelle ich vor, wie wir im Rahmen unserer Scrum Zeremonien pokern und gebe euch so einen Einblick in unsere SAFe Refinement Runden. Einführung Ich arbeite in einem Scrum-Team, das Teil eines größeren Bereiches ist, in dem es noch viele weitere Scrum-Teams gibt. Mein Bereich Magenta Business organisiert sich nach dem Scaled Agile Framework (SAFe). Scrum und SAFe Scrum ist ein Vorgehensmodell zur agilen Softwareentwicklung. Die zu entwickelnde Software wird dabei in Form von User Stories beschrieben. Weitere Infos zu Scrum findet ihr z.B. hier: https://de.wikipedia.org/wiki/Scrum SAFe ist ein Framework, das die Zusammenarbeit mehrerer Scrum-Teams organisiert. Dabei macht es Vorgaben, die in Teilen die Freiheitsgrade eines einzelnen Scrum-Teams einschränken. Weitere Infos zu SAFe gibt es hier: https://www.scaledagileframework.com Planning Poker Eine beliebte und gängige Methode zum Schätzen der Umsetzungs...

Clean Code in JUnit 5 und Spring Boot Tests

Bild
Clean Code ist auch im Unit-Test Pflicht. Hier schreibe ich eine saubere JUnit 5 Testklasse und übersetze sie anschließend in einen Spring Boot Test. Außerdem zeige ich ein paar JUnit 5 Features zum Parametrisieren von Tests und zum Testen von Exceptions. (JUnit 5 Logo 😮) Clean Code im JUnit Test Das Schreiben von möglichst einfachem und gut wartbaren Code (Clean Code) ist für viele Entwickler selbstverständlich. Die Unit-Tests zu diesem Code haben leider häufig eine schlechtere Code-Qualität. Dabei sollte es eigentlich bekannt sein, dass auch Unit-Tests leicht verständlichen und gut wartbaren Code benötigen, insbesondere wenn sie regelmäßig und automatisiert ausgeführt werden. In einem der bekanntesten Bücher zum Thema Clean Code von Robert Martin , gibt es deshalb ein eigenes Kapitel zu JUnit. Ich zeige euch nun einen JUnit Test und erkläre dann, welche Clean Code Prinzipien ich dabei angewendet habe. Getestet wird der InMemoryItemStore , den ich in einem früheren Blog-Post kernkonz...