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?

communication_thumb

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…

Priorisieren nach Zielen

priorisieren-thumb

Für eine belastbare Projektplanung ist es wichtig, alle Anforderungen eindeutig zu priorisieren. Und was tut man, wenn 80% aller Anforderungen Prio 1 haben?

Nur wenige Anforderungen an ein Projekt sind kontextfrei. Die meisten Anforderungen entstehen, um mit dem Projekt bestimmte Ziele zu erreichen. Daher erhalten so viele Anforderungen auch Prio 1 – sie sind wichtig für das jeweilige Ziel. Weiter lesen…

15 Jahre als Freiberufler in der IT – eine Zwischenbilanz

Afrika-2638-klein

Meine 5 Gründe dafür, in der IT als Freiberufler zu arbeiten, sind auf viel Resonanz gestoßen. Mehrere Leser haben mich gefragt, wie man sich die Arbeit als Freiberufler vorstellen kann. Insbesondere: Wie findet man Projekte?

Da seit meinem ersten Projekt 15 Jahre vergangen sind, nehme ich das zum Anlass, eine persönliche Zwischenbilanz zu ziehen und auf diese Fragen einzugehen. Weiter lesen…

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

android

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…

Wie bleibt die Anwendung schnell? Performance-Regressionstests mit Hibernate!

MÉCHANISME

In einer typischen Java-Enterprise-Anwendung steht und fällt die Performance mit den Datenbankzugriffen. Im Java-Code kommt es darauf an, sowohl die Anzahl der Datenbank-Roundtrips als auch die Größe der Ergebnismengen klein zu halten. Dies zu erreichen ist mit JPA, Hibernate & Co. schwierig – eine optimierte Anwendung langfristig schnell zu halten, aber noch schwieriger.

Die typische Java-Enterprise-Anwendung, die hier gemeint ist, hat einen mehrschichtigen Aufbau einschließlich einer Datenzugriffsschicht, die per JPA/Hibernate/EclipseLink auf eine relationale Datenbank zugreift. Für eine hohe Performance ist natürlich auch das Datenschema sehr wichtig. Gut gesetzte Indexe und eine optimierte Datenbankkonfiguration sind eine wichtige Basis für schnelle Zugriffe und einen hohen Durchsatz. Weiter lesen…

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

dokumente-thumb

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…

Finde die perfekten Möbel mit Hilfe von Einrichtungsideen und einem Magazin

woont-logo

Vor einer Weile hatte ich über den Relaunch von woont.com berichtet, einer Seite für alle, die sich gerne schön einrichten. Seit dem hat sich viel getan, sodass sich ein zweiter Blick lohnt.

Um dem Anspruch zu genügen, jedem Besucher das perfekte Möbel oder Accessoire zu vermitteln, hat woont zwei große neue Bereiche hinzu bekommen: ein Magazin mit Beiträgen über Wohnen und Leben sowie eine Community. Weiter lesen…

Gut gedacht – zu viel gemacht: wenn User Stories Spielraum lassen

spielraum-titel

Auch in gut laufenden agilen Projekten ist am Ende eines Sprints nicht immer das entstanden, was am Wichtigsten gewesen wäre. Dafür lassen User Stories zu viel Spielraum.

In einem Projekt sind alle User-Stories gut durchdacht, die Prioritäten klar verteilt und die Entwickler arbeiten die Stories streng nach Priorität ab. Trotzdem ist der Kunde am Ende der Sprints nicht zufrieden: Wichtiges wurde nicht geschafft, Unwichtiges hingegen getan. Wie kann das passieren? Weiter lesen…

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

USA-1328

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…