Hacken mit Spring Boot und den Netflix-Bibliotheken

Microservices sind derzeit ein beliebter Ansatz für den Entwurf von Server-Anwendungen. Wer sich in einer Java-/Spring-Umgebung bewegt, sollte sich dazu mit den Netflix-Bibliotheken Ribbon, Eureka und Hystrix beschäftigen.

Bis vor kurzem war der Monolith das vorherrschende Muster beim Aufsetzen einer neuen serverseitigen Anwendung. Warum auch nicht? Solange sich die Funktionalität von einem überschaubaren Team umsetzen lässt und die Anforderungen an die Skalierbarkeit gering sind, hat der Alles-in-einem-Ansatz viele Vorteile.

Aktuell geht der Trend jedoch in Richtung Microservices. Weiter lesen…

Spring Boot und das Application-Server-Dilemma

Spring Boot erscheint als eine natürliche Weiterentwicklung des Spring-Frameworks. Das Spring-Ökosystem hat seit jeher das Ziel, die Entwicklung von serverseitigen Anwendungen zu vereinfachen und immer mächtigere Funktionalität zur Verfügung zu stellen.

Das Spring-Framework ist für mich deswegen unentbehrlich. Spring Boot verwende ich trotzdem ungerne. Weiter lesen…

Datenstrukturen ändern, aber bitte ohne Ausfallzeiten!

Bei einem anstehenden Release mit Änderungen an den Datenstrukturen hatte man es früher einfach: Server herunterfahren, Migrationsskripte laufen lassen, Server wieder hochfahren, fertig. In Zeiten von Server-Clustern und 24/7-Verfügbarkeit sind Änderungen an der Datenstruktur heute nicht mehr ganz so einfach.

Strukturänderungen im laufenden Betrieb müssen gut geplant und schrittweise umgesetzt werden. Ansonsten läuft man schnell in Gefahr, inkonsistente Daten oder Fehler in der Anwendung zu erhalten. Weiter lesen…

Thrift-API mit Spring: Wie integriert man beides?

Wenn man eine Server-Schnittstelle plant, denkt man heutzutage als Erstes an eine REST-API. Für öffentliche Schnittstellen ist REST oft auch eine gute Wahl. Für nicht-öffentliche Schnittstellen lohnt sich jedoch auch ein Blick auf Apache Thrift. Möchte man Thrift dann zusammen mit dem Spring-Framework verwenden, stellt man fest, dass die Integration etwas sperrig ist.

Öffentliche Schnittstellen sollten möglichst technologie- und plattformneutral und für Client-Anwendungen einfach zu nutzen sein. REST erfüllt diese Anforderungen, daher sind REST-basierte APIs weit verbreitet. Die Kehrseite der Technologieneutralität ist jedoch, dass REST keine Hilfe bei der Implementierung einer Anbindung bietet. Weiter lesen…

Wie die Jungfrau zum Kinde: Android als Java-EE-Entwickler

Wenn man als Java-Entwickler sonst immer komplexe Geschäftsanwendungen für den Server entwirft, bietet ein Android-Projekt willkommene Abwechslung. Spannend ist die Frage, ob sich liebgewonnene Architekturstile auf Android-Apps übertragen lassen. Und siehe da! Es klappt sogar erstaunlich gut.

Das Android-Ökosystem ist zwar umfangreich, aber es ist gut dokumentiert und man findet viele Bücher, gerade für den Einstieg. Als erfahrener Java-Entwickler reichen ein paar Tage aus, um die ersten eigenen Apps zu schreiben. Weiter lesen…

Wer braucht eine Dokumenten-Datenbank? (Und wer nicht?)

Je mehr sich der Hype um NoSQL-Datenbanken legt, desto interessanter wird die Frage, wann sich der Einsatz einer solchen Datenbank wirklich lohnt. Werfen wir einen Blick auf die Dokumenten-Datenbanken wie MongoDB und CouchDB.

Was können Dokumentendatenbanken? (Und was nicht?)

Dokumentendatenbanken können, im Gegensatz zu relationalen Datenbanken, besonders gut hierarchische Daten speichern. Das heißt: Auch verschachtelt strukturierte Daten können einfach geladen und gespeichert werden. Somit entfallen aufwändige Tabellen-Konstruktionen, um die Daten zu speichern und komplexe Join-Operationen, um die Daten wieder zu laden. Wenn als Analogie eine relationale Datenbank einer Sammlung von CSV-Dokumenten entspricht, dann entspricht eine Dokumentendatenbank einer Sammlung von XML-Dokumenten. Weiter lesen…

Spring 3, Hibernate 4 und Wicket 6: ein starkes Gespann

Ohne Vorkenntnisse ist es gar nicht so einfach, eine Web-Anwendung mit Spring, Hibernate und Wicket aufzusetzen. Dabei reichen dafür nur wenige Zeilen Java-Code.

Im Laufe des Jahre sind im Spring-Framework verschiedene Varianten entstanden, wie man eine Web-Anwendung aufsetzt. Inzwischen ist es möglich, auf externe XML-Konfigurationsdateien vollständig zu verzichten. Wie man konkret vorgeht, eine Spring-Anwendung mit Hibernate und Wicket aufzusetzen, zeigt dieser Artikel. Weiter lesen…

Migration zu Apache Wicket 6: Was ist zu tun?

Apache Wicket hat viele Stärken. API-Kompatibilität zwischen den großen Versionsnummern gehört leider nicht dazu! Was muss man wissen, wenn man ein bestehendes Projekt zu Wicket 6 migrieren möchte?

Der Versionssprung von Wicket 1.4 zu Wicket 1.5 hatte schon für viel Arbeit gesorgt. Die Entwickler hatten nicht nur neue Funktionen hinzugefügt, sondern die API teilweise erheblich verändert haben. Der Wechsel von Wicket 1.5 zu Wicket 6 ist etwas leichter, doch es gibt erneut viel zu tun. Weiter lesen…

JEE 6 und die Applikationsserver – ein Blick aus zwei Winkeln

JEE 6 ist eine ausgereifte, jedoch sehr komplexe Technologie. Vor allem der Betrieb eines Applikationsservers bringt eine erhebliche Komplexität mit sich. Was bedeutet der Einsatz eines JEE 6-Applikationsservers, vor allem im Zusammspiel von Architekten und Administratoren?

In einem früheren Beitrag habe ich argumentiert, dass ein Applikationsserver wie z.B. Glassfish zwar hilft, ein Projekt schnell zu starten. Langfristig jedoch erschweren JEE-Applikationsserver die Wartung und Weiterentwicklung eines Systems, vor allem, wenn sie aktualisiert werden – und mit ihnen die ganze technologische Basis eines Systems.

Meine Argumente möchte ich nun etwas vertiefen und einen weiteren Blickwinkel hinzufügen. Weiter lesen…

NoSQL – hoch-skalierbar, extrem schnell und viel Auswahl

NoSQL-Datenbanken sind nicht nur ein spannendes Thema, sie lösen auch schwierige Probleme. Für welches Einsatzgebiet jedoch welche Art NoSQL-Datenbank passt, ist anfangs nicht offensichtlich.

Aus diesem Grund habe ich eine Einführung in die verschiedenen Arten von NoSQL-Datenbanken geschrieben. Dazu habe ich die Pattern-Form gewählt. Das heißt: Für jede Art NoSQL-Datenbank identifiziert ein Pattern das Einsatzgebiet, für den diese Art NoSQL-Datenbank eine geeignete Lösung darstellt. Zusätzlich wird erläutert, warum das jeweilige Problem schwer ist und mit welchen Konsequenzen man rechnen muss, wenn man eine NoSQL-Datenbank dieser Art einsetzen will. Weiter lesen…