Blog & Artikel

Artikel

API gut, alles gut

Unternehmen streben häufig eine Modularisierung (wie durch Microservices) an, die Teams unabhängiger voneinander arbeiten lasst. Dabei ist aber ein reines Aufteilen der Applikation in verschiedene Module/Container/Bausteine nicht ausreichend. Die Abhängigkeit oder Unabhängigkeit entscheidet sich vielmehr mit der Gestaltung der Schnittstelle, genauer: Mit der Frage, ob die gewählte Schnittstelle fachliche Implementierungsdetails preisgibt oder diese versteckt.

Blog-Post

Bestehende Rich Clients erneuern

Oft gibt es Rich-Clients die als Backoffice-Applikation wichtige Funktionen erfüllen und nun Probleme machen: egal ob es um Support für mobile Geräte oder um einfaches Arbeiten von zu Hause geht oder auch nur um das Sicherstellen der Weiterentwicklung – Rich-Clients kommen mit Ihren eigenen Problemen. Ob die richtige Antwort für die Modernisierung solcher Applikationen immer die Migration zu einer Webapplikation ist, wollen wir in diesem Artikel beleuchten.

Blog-Post

Communicating organizational changes with “Team Topologies”

Artikel

Wie gemacht für Legacy-Code

In diesem Artikel geht es um Menschen, die leidenschaftlich gerne Legacy-Systeme verbessern. Sie sind motiviert, technische Schulden stetig abzubauen, damit Softwaresysteme dauerhaft erweiterbar bleiben. Vorurteile und Stereotypen unserer Branche verhindern es, das Potenzial dieser Menschen bestmöglich zu nutzen.

Artikel

Identifikation von Team-Grenzen

Im Umfeld zahlreicher Initiativen und Ideen wie zum Beispiel Microservices, Agile, Domain-driven Design oder Team Topologies geht es um die Etablierung von autonomen, cross-funktional aufgestellten Teams, die einen schnellen Arbeitsfluss aufweisen und agil auf Veränderungen reagieren können. Die Herausforderung besteht allerdings darin, passende Grenzen für die Zuständigkeitsbereiche dieser Teams zu finden. Darum dreht sich dieser Artikel.

Artikel

Compliance in hybriden Betriebsumgebungen

Eine soziotechnische Betrachtung

Blog-Post

Extending the OpenTelemetry Java Agent for Spring Auto-Instrumentation

OpenTelemetry is great. A few days ago, I was diving a bit more into the intrinsics of the OpenTelemetry standard and the Java auto-instrumentation in particular.

Artikel

Zukünftige Features des JDK

Ich weiß nicht, wie es Ihnen geht, aber seitdem mit JDK 9 der Release-Zyklus des JDK auf sechs Monate verkürzt wurde und wir mittlerweile, dank Preview und Incubator, auch Features bereits vor der vollständigen Fertigstellung ausprobieren können, wirkt das JDK lebendiger als eh und je. In diesem Artikel wollen wir deswegen einen Blick in die Zukunft werfen und uns aktuelle Preview-Features anschauen, die es vermutlich in naher Zukunft final ins JDK schaffen werden.

Blog-Post

Entwickeln mit ChatGPT

Wie KI meine Programmierarbeit revolutioniert

Artikel

Der Evolutionist

Die heutige Aus- und Weiterbildung von Softwareentwicklern und Softwareentwicklerinnen konzentriert sich stark auf die Neuentwicklung von Software. Auf Konferenzen und in Fachmagazinen gibt es eine große Bandbreite an neuen Programmiersprachen, neuen Tools, neuen Hypes, an denen man sich anscheinend nie sattsehen kann. Schnelle Ergebnisse, direktes Feedback und noch nie dagewesene Produktivität werden suggeriert. Der Drang, das Neue auch in die eigene Software einzubringen, ist geweckt – bis man wieder von der Realität eingeholt wird: dem eigenen Legacy-System.

Blog-Post

Rate Limiting with Spring Boot, Bucket4j, and Redis

Let’s implement rate-limiting protection for multiple Spring Boot server instances using bucket4j and redis to have the solution on application level.

Blog-Post

Lokale LLMs mit Ollama und Spring AI nutzen

Ein Lama im Frühling

Blog-Post

Rate Limiting with Spring Boot

Let’s implement rate-limiting protection for your Spring Boot server without the need for any additional dependencies beyond those included in the Spring Boot Starter package.

Blog-Post

Compacted State Feeds

Event notification vs. Event-carried State Transfer vs. Delta loads. How to design good event architectures for mutable data?

Artikel

Es lebe die Bürokratie!

Soziotechnische Welten - Teil 10

Artikel

GitOps geht auch ohne Kubernetes

Im Kubernetes-Universum ist GitOps erfolgreich. Dank der Versionskontrolle mit Git lässt sich die Betriebsumgebung transparenter und zuverlässiger konfigurieren. Aber GitOps klappt auch ohne Kubernetes.

Artikel

Kombinierbare Elemente für Benutzungsoberflächen im Web

Die Art und Weise, wie wir Benutzungsoberflächen im Web entwickeln, hat sich über die letzten Jahre stark verändert. In dieser Kolumne wollen wir uns deswegen ansehen, wie ein moderner Ansatz aussieht und vor welche Herausforderungen dieser, vor allem für klassische Templateengines der Java-Welt, uns stellt.

Blog-Post

Was treibt dich an?

Wie unterschiedliche Auslöser unterschiedliche Ansätze der Softwaremodernisierung bedingen

Artikel

Automatisierte Code-Wartung mit OpenRewrite

In Teil 1 dieser Serie habe ich gezeigt, wie OpenRewrite im Rahmen von Softwareentwicklungsprojekten zur Automatisierung von Code-Wartungsaufgaben verwendet werden kann. In diesem Beitrag zeige ich nun, wie man eigene OpenRewrite-Rezepte schreibt. Das hilft Dir nicht nur dabei, Refactoring-Aufgaben auszuführen, für die es keine öffentlich zugänglichen Rezepte gibt, sondern auch dabei, zu verstehen, wie OpenRewrite unter der Haube funktioniert.

Artikel

Abhängigkeitsupdates mit Renovate automatisieren

Egal ob wir an einer Anwendung oder Bibliothek arbeiten, wir haben es immer mit Abhängigkeiten zu tun. Wir sind abhängig von der Version unserer Programmiersprache, von externen oder internen Bibliotheken und von Werkzeugen. Neben der eigentlichen Verwaltung müssen diese auch regelmäßig aktualisiert werden. Das erfordert, neben dem Update selbst, auch, dass wir mitbekommen müssen, wenn es eine neue Version gibt. In diesem Artikel schauen wir uns deswegen eine Bot-basierte Lösung an, die uns genau hierbei unterstützen kann.

Blog-Post

Rooting Out Issues: JPA and Lombok Combination Problems Demystified

Artikel

Technologien zur Integration von Services

Im Zuge einer internen Studie haben wir mehrere INNOQ Berater*innen nach ihren Erfahrungen in aktuellen oder vergangenen Entwicklungsprojekten befragt. Ein interessantes Thema war dabei die Integration von Microservices und Self-Contained Systems (SCS). Um bessere Skalierbarkeit, stärkere Resilienz und losere Kopplung zu ermöglichen, wird in verteilten Systemen häufig auf asynchrone Kommunikation gesetzt. In diesem Beitrag erfahrt ihr, welche Erkenntnisse wir in den Gesprächen erlangt haben.

Blog-Post

Die Anatomie eines erfolgreichen Teams

Die Gründe für das Scheitern von Softwareentwicklungsprojekten sind vielfältig und zum Großteil nicht technischer, sondern organisatorischer Art: Zu hohe Komplexität, unklare Anforderungen, nicht-funktionale Teams, Fokus auf den falschen Dingen oder überhandnehmende Konzernpolitik. Bereits zum Projektstart können Maßnahmen getroffen werden, um einige dieser Risiken einzudämmen und die Aussicht auf einen Projekterfolg zu erhöhen. Dieser Artikel wird den Fokus auf ein funktionierendes, erfolgreiches Entwicklungsteam legen und erörtern, welche Stellschrauben Sie drehen können – und von welchen Sie lieber die Finger lassen sollten.

Blog-Post

Schema Evolution

mit Apache Avro

Artikel

Automatisierte Code-Wartung mit OpenRewrite

Bei der großen Anzahl von Softwareentwicklungsprojekten in den meisten Unternehmen kann es herausfordernd sein, diese Projekte mit den neuesten Sicherheitspatches und Framework-Updates aktuell zu halten. OpenRewrite ist eine Bibliothek, die eine automatisierte Lösung für dieses Problem bietet. In diesem Artikel erkläre ich, wie OpenRewrite funktioniert und wie Du es für die Wartung Deiner Code-Basis einsetzen kannst.