Software-Architektur

Pulsar Schema Registry: Einführung in Apache Pulsar – Teil 3

Wann immer zwei Systeme über ein Netzwerk Daten miteinander austauschen, ist die elementare Frage, in welchem Format dies geschehen soll – unabhängig davon, ob dieser Austausch synchron oder asynchron stattfindet. Bei Message-basierten Systemen hat diese Frage einen besonderen Stellenwert, da die teilnehmenden Systeme voneinander so wenig Kenntnis wie möglich haben sollten und die Datenmodellierung somit eine besonders hohe Priorität besitzt. Im Rahmen dieses Artikels möchten wir diskutieren, welche Möglichkeiten Apache Pulsar von Haus aus bietet, um mit Hilfe der enthaltenen Schema Registry einen performanten, zukunftssicheren und einfachen Austausch von Nachrichten zu ermöglichen.

Pulsar Schema Registry: Einführung in Apache Pulsar – Teil 3

Wann immer zwei Systeme über ein Netzwerk Daten miteinander austauschen, ist die elementare Frage, in welchem Format dies geschehen soll – unabhängig davon, ob dieser Austausch synchron oder asynchron stattfindet. Bei Message-basierten Systemen hat diese Frage einen besonderen Stellenwert, da die teilnehmenden Systeme voneinander so wenig Kenntnis wie möglich haben sollten und die Datenmodellierung somit eine besonders hohe Priorität besitzt. Im Rahmen dieses Artikels möchten wir diskutieren, welche Möglichkeiten Apache Pulsar von Haus aus bietet, um mit Hilfe der enthaltenen Schema Registry einen performanten, zukunftssicheren und einfachen Austausch von Nachrichten zu ermöglichen.

Inkrementelle Codegenerierung mit CobiGen: Brückenbauer in der Open-Source-Welt – Teil 3

Etablierte Referenzarchitekturen wie devonfw machen es möglich, ein hohes Maß an Standardisierung über verschiedene Softwareprojekte hinweg zu etablieren. Starke Vorgaben, wie beispielweise Namenskonventionen für Quellcodeartefakte, bieten darüber hinaus eine klare Sichtbarkeit der Architektur auf der Quellcodeebene. Sind solche Vorgaben für (agile) Entwickler durchzuhalten und führt Schichtenbildung nicht teilweise zu nervigem Boilerplate-Code?

Wer mit wem reden darf: Architekturpatterns in Modulithen – Teil 2

So manche Codebase macht nur auf den ersten Blick einen aufgeräumten Eindruck. Schön in Packages sortierter Code ohne Abhängigkeitsmanagement ist wie ein „aufgeräumtes“ Kinderzimmer, bei dem einem die Lawine entgegenkommt, wenn man es wagt, die Schranktür aufzumachen. Um zu verhindern, dass Abhängigkeitszyklen und wuchernde Queraufrufe den Code zu einem „Big Ball of Mud“ machen, gilt es, höllisch aufzupassen.

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.