Software-Architektur

Das Persistenzmodell von Pulsar: Einführung in Apache Pulsar – Teil 2

Egal, ob es sich um ein Event-getriebenes System oder um die Verteilung von Massendaten handelt: Robuste, performante und skalierfähige Datenhaltung ist für eine hochperformante Messaging-Lösung von elementarer Bedeutung. Im zweiten Teil unserer Artikelreihe zum Thema Apache Pulsar möchten wir daher unser Augenmerk auf das Persistenzmodell legen, das Pulsar mit Hilfe von Apache BookKeeper zur Verfügung stellt, und die grundlegenden Konzepte sowie einige mögliche Anwendungsfälle und Beispiele vorstellen.

Enterprise Tales: Mehr Backend wagen – im Frontend!

Das Frontend ist seit jeher ein wichtiger Bestandteil der meisten Anwendungen. Mit dem Aufschwung von Single Page Applications (SPA) hat sich die Komplexität jedoch im Gegensatz zu Ansätzen, bei denen das gesamte HTML im Backend erzeugt wird, enorm erhöht. Sofern die Wahl auf eine SPA als Frontend-Lösung fällt, steht natürlich sofort eine wichtige Frage im Raum: Wie kann man als Entwickler die neue Komplexität im Frontend bändigen?

Event Storming aus der Sicht eines Testers

Event Storming ist im Domain-driven Design eine gute Methode, ein gemeinschaftliches Verständnis aller Projektbeteiligter bezüglich der Anwendungsdomäne zu erlangen und dabei ein Prozessmodell zu erstellen. Oft wird dabei aber außer Acht gelassen, dass die dabei entwickelten Informationen nur mit wenig Aufwand direkt in automatisierbare Testfälle transformiert werden können. Daher soll hier die Frage beantwortet werden, wie die verschiedenen Modellierungspattern des Event Stormings in sinnhafte Behavior-driven-Design-Testfälle umgesetzt werden können.

Hearts ist Trumpf! Entwurf einer funktionalen Softwarearchitektur

Der Entwurf von nachhaltigen Softwarearchitekturen ist eine Herausforderung: Mit der Größe steigt in vielen klassisch objektorientierten Softwareprojekten die Komplexität überproportional an. Durch viel Disziplin und regelmäßige Refaktorisierungen lässt sich das Problem eine Weile in Schach halten, aber die wechselseitigen Abhängigkeiten und komplexen Abläufe von Zustandsveränderungen nehmen mit der Zeit trotzdem zu. Die funktionale Softwarearchitektur geht an die Strukturierung großer Systeme anders heran als objektorientierte Ansätze und vermeidet so viele Quellen von Komplexität und Wechselwirkungen im System.

Von der Entstehung eines Monolithen und dem Versuch, ihn zu zerlegen

Bei der Entwicklung von Softwaresystemen und -architekturen gibt es verschiedene Ansätze und Paradigmen, die jeweils kontextabhängige Vor- und Nachteile haben. Zu gerne folgen wir bei der Beurteilung von Architekturen entweder unseren persönlichen Vorlieben oder wir verurteilen Lösungen, die nicht mehr State of the Art oder zu komplex sind, um sie mit überschaubarem Aufwand zu überblicken. Eine objektive Beurteilung einer gewachsenen Architektur kann aber nur auf einer strukturierten und sachlichen Analyse basieren.

Ubiquitous Language: Warum ist Sprache so wichtig?

Ein Element, das in der gesamten Domain-driven-Design-Literatur querschnittlich präsent ist, ist die Ubiquitous Language, die allgegenwärtige Sprache. Allgegenwärtig bezieht sich darauf, dass es sich hierbei um eine Sprache handelt, die von Softwareentwickler*innen und Fachexpert*innen gemeinsam gesprochen wird. Diese Sprache soll dann auch die Basis für die Entwicklung des Softwaremodells sein. Im Rahmen dieses Artikels gehen wir erst auf die Motivation für die Etablierung einer Ubiquitous Language ein, bevor schließlich das Potenzial und die Möglichkeiten für die Arbeit mit einer solchen Sprache vorgestellt werden. Weiterhin werden noch kurz die Vorgehensweisen zur Herleitung einer Ubiquitous Language erläutert.

JavaScript, eine Buchrezension und Softwarearchitektur – Unsere Top-Themen der Woche

Die vergangene Woche haben wir wieder eine Fülle an Interviews zum Thema „25 Jahre Java“ veröffentlicht. Begleitet wurden sie von einer Buchrezension zu „Java Performance“ und spannenden Artikeln zu Softwarearchitektur. Aber auch JavaScript hat bei uns seinen Platz bekommen und wartete mit einem Tutorial für Einsteiger auf. Unsere Top-Themen der Woche.

Revolution oder Evolution in der IT: Warum manchmal eine Modernisierung reicht

Heute ist oft von digitaler Transformation oder der vierten industriellen Revolution die Rede. Doch sind revolutionäre Umbrüche der richtige Weg zu einer zeitgemäßen IT? Sollte man gut funktionierende Legacy-Systeme einfach über Bord werfen? Dieser Artikel stellt die Modernisierung bestehender Systeme als pragmatische, risikoarme und günstige Alternative vor.

Algorithmen in der Java-Praxis: Sortier- und Suchalgorithmen

Sortier- und Suchalgorithmen gehören zu den Basisalgorithmen und sind in vielen Klassenbibliotheken implementiert. Muss man sehr umfassende Datenbestände sortieren oder in diesen suchen, spielt die Vorgehensweise aus Gründen der Performance eine wichtige Rolle. Parallel Computing kann das Sortieren beschleunigen. Auch diese Verfahren basieren auf den Basisverfahren. Es gibt also genügend Gründe, diesen auf den Grund zu gehen.

Algorithmen als Kernelemente des Programms – Definition und Klassen

Am Anfang der Ausbildung oder des Studiums hat man sich intensiv mit Algorithmen beschäftigt. Man hat etwas über formale Anforderungen gehört und die Verfahren in Lösungsklassen eingeteilt. Danach rücken die Fragen rund um Algorithmen meist in den Hintergrund, obwohl deren Anwendung und Entwicklung der Kern einer jeden Software sind. Zeit, die Grundlagen und neuere Entwicklungen auf den aktuellen Stand zu bringen.

Infrastrukturen und Organisation

Im ersten Teil dieser Serie haben wir ein Projekt vorgestellt, das ein Antragsverfahren für Bürger beinhaltet, und die Gründe für die Architekturentscheidungen für Microservices und Workflow-Engine beschrieben. Diesmal stellen wir die im Rahmen des Projekts verwendete bzw. entstandene Infrastruktur vor und beleuchten organisatorische Aspekte.

  • 1
  • 2