Posts

Team-Event für Software-Entwickler: Willkommen im Clean Code Dojo

Bild
In Corona-Zeiten sind Team-Events rar geworden und trotz Video-Konferenz eher mäßig beliebt. Sicherlich gibt es hier auch schon einige gute Konzepte - ein weiteres Event-Konzept speziell für Software-EntwicklerInnen habe ich im Urlaub entdeckt: das virtuelle Clean Code Dojo. Das Clean Code Dojo Im Buch "The Clean Coder" erklärt Onkel Bob, wie wichtig Training für Software-EntwicklerInnen ist. Teil des Trainings sind natürlich auch alle möglichen Lernkonzepte, wie z.B. Schulungen, Fachbücher, Blogs, Podcasts usw. Er stellt aber auch eine weitere Trainings-Form vor, welche aus dem Kampfsport abgeleitet ist: das "Coding Dojo". In Onkel Bobs altem Blog gibt es dazu ebenfalls einen Eintrag:  http://www.butunclebob.com/ Hier auch noch der Link zum aktuellen Clean Coder Blog:  https://blog.cleancoder.com/ Im Coding Dojo führen die trainierenden SchülerInnen Katas aus, so wie ihr es aus Karate kennt:  Wikipedia Kata . Nur sind diese Katas keine Tritt- und Schlag-Choreografi...

REST / JSON APIs in Kotlin schnell gemacht mit Spring Boot

Als JVM basierte Programmiersprache kann Kotlin problemlos das Spring Framework verwenden. In diesem überarbeiteten Artikel  kotlin-spring-api.html  zeige ich wie man mit Spring Boot schnell ein Kotlin Web-Projekt aufsetzt und mittels Spring Annotationen einen REST-Service exponiert.

OAuth2 REST-API Clients leicht gemacht mit Spring

Bild
Viele REST-APIs sind heute mit OAuth2 abgesichert. Daher bietet uns Spring eine einfache Möglichkeit das OAuth2-Protokoll  in den bekannten HTTP-Clients WebClient und RestTemplate  zu implementieren, so dass wir uns nicht mehr selbst um Access und Refresh-Tokens kümmern müssen. Wie das geht zeige ich euch in diesem Artikel. Was ist OAuth2? OAuth steht für "Open Authorization" und ist ein offenes Standard-Protokoll zur sicheren Autorisierung von APIs. OAuth2 ist die überarbeitete Version von OAuth, welche die ursprüngliche Version häufig abgelöst hat. Mit OAuth2 können Endbenutzer einer Anwendung den Zugriff auf ihre Daten, bereitgestellt durch einen anderen Dienst, erlauben. Insbesondere im Kontext von Smartphone-Apps hat sich OAuth schnell durchgesetzt. Weiterführende Informationen zu OAuth2 findet ihr hier: https://www.ionos.de/digitalguide/server/sicherheit/was-ist-oauth/ OAuth2 API konsumieren Wie man mit Spring RestTemplate und WebClient REST-APIs aufruft, habe ich bere...

Lambda-Ausdrücke und funktionale Interfaces in Java

Bild
Funktionale Programmierung ist ein sehr beliebtes Programmierparadigma, daher ist es in vielen modernen Sprachen zu finden. Seit Version 8 bietet auch Java mit Lambda-Ausdrücken und funktionalen Interfaces Möglichkeiten zur funktionalen Programmierung an. In diesem Artikel schauen wir uns das genauer an. Was ist funktionale Programmierung? In der Objektorientierten Programmierung haben Methoden bzw. Funktionen Daten als Eingabeparameter und Rückgabewerte.  Die funktionale Programmierung ermöglicht uns neben Daten zusätzlich Funktionen zu verknüpfen und sie als Eingabeparameter und Rückgabe zu definieren. Zum Beispiel können wir einem Bubblesort Sortieralgorithmus eine Funktion übergeben, mit der der Sortieralgorithmus über die Reihenfolge der zu sortierenden Daten entscheidet. Der selbe Sortieralgorithmus kann so z.B. abhängig vom übergebenen Funktions-Parameter eine Liste von Autos nach Kaufpreis absteigend oder nach Erstzulassungs-Datum aufsteigend sortieren. Weitere Infos zur fu...

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. ...