Hinweis: Dieser Blogbeitrag stammt aus der Zeit vor dem Zusammenschluss und wurde von ARS realisiert – heute Teil von ATVANTAGE. Unsere Erfahrung bleibt – nur unser Name hat sich geändert. Hier finden Sie weitere Informationen rund um die Fusion.

Lesezeit: 10 Minuten

Die Zukunft datenbankzentrierter IT-Architekturen


Aktuelle IT-Landschaften sind nach wie vor von einer großen Anzahl datenbankzentrierter Architekturen geprägt. Dabei handelt es sich nicht nur um Legacy-Systeme aus der Zeit des Mainframes, sondern auch um viele moderne IT-Architekturen. Ist das alles noch zeitgemäß? Müssen wir etwas tun und, wenn ja, wie könnten alternative Lösungen aussehen?

Ausgangslage

Dass es so viele datenbankzentrierte Lösungen gibt, hat in erster Linie historische Gründe, da die großen Datenbankhersteller IBM (DB2) und Oracle über viele Jahre Marktführer bei den relationalen Datenbanksystemen waren. Relationale Datenbanksysteme haben den Charme, dass diese Technologie weit verbreitet ist und das Wissen und der Umgang mit diesen Datenbanksystemen zur Commodity gezählt werden kann. Sie sind performant, unterstützen Transaktionen, sind in der Lage, riesige Datenmengen zu verwalten, und haben mit SQL eine genormte Abfragesprache. In vielen Fällen ist die Infrastruktur auf diese Datenbanksysteme ausgerichtet, und diese Investitionen möchte man nicht umsonst getätigt haben.

 

Datenbankzentrierte Architektur

Wie wir alle wissen, hat diese Strategie auch die Entwicklung von riesigen, monolithischen Softwaresystemen begünstigt, mit all den damit verbundenen Vor- und Nachteilen. Das sollte und darf man aber nicht pauschal schlechtreden. Im Hinblick auf die Datenmodelle gibt es Fälle, bei denen sehr viel Know-how in das Design der Datenbank investiert wurde und man eine modulare und fachlich gut strukturierte monolithische Datenbank vorfindet. In so einem Idealfall findet man oft auch Modulithen auf der Applikationsseite, und die Systeme sind nach wie vor sehr leistungsfähig. Da zuletzt genannte Szenarien aber doch selten sind, kann der alltägliche Spruch "Never change a running system" hier seine beruhigende Wirkung nicht ausspielen.

Bei Banken, Versicherungen und in vielen Bereichen des öffentlichen Dienstes spielen Transaktionalität und die Integrität der Datenbankinhalte eine entscheidende Rolle. Beides ist mit relationalen Datenbanken sehr leicht zu erreichen, und wenn die Daten an einem Ort sind, ist es oft auch leichter, deren Konsistenz zu gewährleisten. Allerdings hat diese Vorgehensweise auch ihren Preis: Die Datenbestände wurden immer größer und die Struktur der Datenbanken immer komplexer. Viele dieser Datenbanken haben mittlerweile das Problem, die Interessen der Konsumenten der Daten mit den Ansprüchen der Produzenten in Einklang zu bringen. Müssen große Datenmengen in kurzer Zeit gespeichert werden, geht dies oft zulasten kurzer Zugriffszeiten in der lesenden Verarbeitung und umgekehrt.

Allerdings gibt es auch einige Kritikpunkte an diesem Architekturpattern.

In unserer täglichen Arbeit sehen wir oft große, relationale Datenbanksysteme, in denen die fachliche Trennung der Inhalte schlecht umgesetzt wurde. Dies führt in der Datenbank zu einer starken Kopplung der Daten, und macht den Zugriff aus der Applikation (oder den Applikationen) heraus sehr aufwendig und fehleranfällig. Sind Änderungen am Datenmodell erforderlich, kann man die Auswirkungen auf die Konsumenten sehr schlecht einschätzen, und es kann sehr viele Kompromisse erfordern, bis alle Nutzer der Datenbank wieder fehlerfrei arbeiten.

Ein zweiter Aspekt, der uns immer wieder begegnet, ist, dass oft sogar Geschäftslogik in die Datenbank verlagert wurde - Stichwort: Stored Procedures. Ja, diese Lösung ist sehr elegant, und wenn man Daten an ihrem Ursprungsort auswerten und modifizieren kann, bringt das oft große Performancegewinne. Der Preis ist allerdings sehr hoch: Fehler muss man an mehreren Stellen suchen, Anpassungen der Programmlogik in der Datenbank und in den angeschlossenen Anwendungen müssen zusammenpassen, und oft sind es auch unterschiedliche Teams, die auf die jeweilige Programmierung spezialisiert sind. Das Schlimmste allerdings ist, dass die Geschäftslogik nicht mehr an einer Stelle zu finden ist, was fachliche Modifikationen an diesen Systemen zu einem großen Risiko macht.

Ein dritter und für uns entscheidender Aspekt ist, dass die großen, traditionellen relationalen Datenbanken nicht wirklich cloudfähig sind. Klar kann man DB2 oder Oracle in einen Container stecken, das geht aber nur mit "kleinen" Datenbanken, und die Stärken dieser Systeme sind in dieser Welt nicht verfügbar und passen nicht zum Cloud-Native-Paradigma.

Viel schlimmer ist schließlich noch, dass ein zentrales Datenbanksystem einen Single Point of Failure darstellt. Das gilt nicht nur für den Worst-Case, dass die Datenbank komplett ausfällt oder nicht erreichbar ist, sondern auch für die Skalierbarkeit. Optimierungen von lesenden Zugriffen stehen generell in Konkurrenz zu den schreibenden, und damit gibt es immer Gewinner und Verlierer bei den Anwendungen, die eine gemeinsame Datenbank verwenden. Ist die Anwendungslandschaft heterogener, so kämpft man ganz schnell mit DB-Locks und Racing-Conditions, die oft sehr schwer zu finden und zu beheben sind. So etwas möchte man in modernen, servicebasierten Architekturen nicht mehr haben.

Was können wir also tun, um von der Datenbank als Zentrum der Datenverarbeitung wegzukommen, ohne auf die genannten Vorteile verzichten zu müssen?

Lösungsstrategie

Die Vorteile von servicebasierten Architekturen liegen auf der Hand. Die Geschäftslogik ist in fachliche Domänen untergliedert, in denen sogenannte Bounded Contexts einen Serviceschnitt definieren. Zugegeben, die Vorarbeit, zu einer solchen Struktur zu kommen, ist selten trivial. Aber der Aufwand lohnt sich, erlangt man doch Autonomie in den fachlichen Domänen und kann diese - in der Regel kleinen - Datenbestände viel besser strukturieren und verarbeiten. Ein weiterer Vorteil ist die Wahl eines geeigneten Datenbanksystems. Es ist nicht zwingend notwendig, für jede Domäne die gleiche Datenbanktechnologie zu verwenden. In vielen Fällen sind NoSQL-Lösungen eine gute Wahl und bringen signifikante Verbesserungen für die Datenmodellierung und für die Verarbeitungsgeschwindigkeit. Natürlich stehen auch hier relationale Datenbanken zur Verfügung, diese können aber viel kleiner ausgelegt werden, und man spart durch die Vielzahl an Anbietern unter Umständen einiges an Lizenzkosten.

Dadurch, dass jetzt die Geschäftsdaten auf die Domänen und Unterdomänen verteilt sind, sinkt das Risiko, dass bei einem Ausfall der Datenbank nichts mehr geht. Die fachliche Integrität der einzelnen Datendomänen lässt sich viel leichter gewährleisten, und wenn man das Konzept der Datenprodukte beherzigt, können wertvolle und leistungsfähige Schnittstellen die Verarbeitung und den Austausch der Daten zwischen den Domänen erleichtern und absichern. Die Autonomie in der Datenhaltung hat für mich den gleichen Stellenwert wie die Autonomie der Entwicklungsteams in den Domänen.

 

Servicebasierte Architektur

Man darf allerdings nicht glauben, dass der Schritt zu einer servicebasierten Architektur mit verteilter Datenhaltung ein einfacher ist. Die Aufteilung der Datensouveränität geht mit einer wachsenden Komplexität einher. In einer monolithischen Welt mit einer zentralen Datenbank wurden viele Abkürzungen genommen, und der Big Ball of Mud (Modules) ging oft mit einem Big Ball of Data einher. Viele Unternehmen scheitern gerade daran, ihre Daten zu strukturieren, weil sie die Komplexität schlicht nicht mehr verstehen und damit die Angst besteht, Daten oder besser Datenbeziehungen zu verlieren und darunter die Geschäftsprozesse leiden.

Aus unserer Erfahrung kann man nur eindringlich dazu raten, die Methoden des Domain-Driven Designs zu nutzen! Man muss nicht gleich die ganze Welt retten und die ganze Datenbank- und Applikationslandschaft in einem Schritt modernisieren. Nehmen Sie sich etwas Zeit und identifizieren Sie Ihre Kerndomänen, erschließen Sie diese mittels Event Storming oder Domain Story Telling. Wenn Sie dies getan haben, ist der erste Schritt für eine Extraktion der relevanten Domänendaten erfolgt, und man kann sich die geeignete Datenbanktechnologie aussuchen und die Schnittstellen für den Datenaustausch mit anderen Diensten und Domänen überlegen. Das geht immer, sowohl bei dialogorientierten Anwendungen als auch bei der Stapelverarbeitung.

Es gibt aber noch einen weiteren Vorteil, wenn man diesen Weg geht. Data Science und Künstliche Intelligenz werden für die Unternehmen immer wichtiger und damit auch die Auswertung der Geschäftsdaten. Hat man seine Geschäftsdaten in Domänen unterteilt und diese ordentlich modelliert, so kann man dieses Wissen nutzen, um ein Data Warehouse oder einen Data Lake mit konsistenten, strukturierten und vor allem gut verstandenen und vertrauenswürdigen Daten zu bestücken. In diesem Zusammenhang zeichnen sich Datenprodukte dadurch aus, dass sie kuratierte Metadaten enthalten, die man für Data-Science-Algorithmen und Modelle der Künstlichen Intelligenz viel besser verwenden kann.

Zusammenfassung

Datenbankzentrierte Architekturen haben so langsam ihre Daseinsberechtigung verloren. Alle Daten liegen in einer riesigen, oft schlecht strukturierten und dokumentierten relationalen Datenbank, die als zentraler Synchronisationspunkt dient. Sie ist historisch gewachsen und wird oft auch als Data-Warehouse genutzt. Dieses Architekturpattern birgt viele Risiken und bei einem Ausfall der Datenbank ist oft die gesamte Anwendungslandschaft betroffen.

Es führt daher kein Weg daran vorbei, sich von diesem Datengrab zu trennen und sich die Mühe zu machen, seine Daten besser zu verstehen und flexibler zu nutzen. Das ist gar nicht so schwer, denn mit Domain Driven Design (DDD) steht einem eine flexible und bewährte Methode zu Verfügung. Mit DDD ist es möglich, schrittweise und mit überschaubarem Risiko seine Geschäftsdaten auf Domänen zu verteilen, sie besser zu verstehen und in Form von Datenprodukten universell nutzbar zu machen. Moderne Softwarearchitekturen können genutzt werden und wohl definierte Serviceschnittstellen lösen den Wildwuchs bei komplexen Datenbankzugriffen ab.

Fazit: Die Datenhoheit gehört in die Domänen und deren Services und nicht in eine globale Datenbankinstanz.

Blogautor

Peter Diefenthäler
Senior Softwarearchitekt ARS Computer und Consulting GmbH

Ihr Erfolg ist unser Ziel

Stehen Sie vor komplexen IT-Projekten? Mit unserer Expertise bieten wir Ihnen maßgeschneiderte Lösungen. Erfahren Sie mehr.

Werde Teil unseres Teams

Wir suchen ständig nach neuen Talenten. Für dich haben wir genau die richtige Stelle. Schau dir unsere offenen Positionen an.

Noch Fragen? Wir helfen Ihnen gerne!

Blog

Der Cloud vorgelagert: Edge Computing für Datenanalysen

Sicherheitsbedenken und Performance-Engpässe gestalten die Verarbeitung und Analyse von Daten in der Cloud zunehmend schwierig. So spricht einiges für eine Zwischenschicht: den Edge.

Blog 01.08.24

Migration von HOST-Anwendungen zu AWS: Modernisierung

Lernen Sie, wie moderne AWS-Services nahtlos in bestehende Host-Landschaften integriert werden und profitieren Sie von den Vorteilen von Serverless-Technologien.

Branche

Digitaler Wandel in der Öffentliche Verwaltung

Die digitale Transformation wird die Arbeitswelt gerade in der öffentlichen Verwaltung massiv verändern. Wir unterstützen die Behörden von Bund, Ländern und Kommunen bei der strategischen und technischen Umsetzung ihrer Projekte in der Verwaltungsmodernisierung.

Schild als Symbol für innere und äußere Sicherheit
Branche

Innere und äußere Sicherheit

Verteidigungskräfte und Polizei müssen Bürger*innen und den Staat vor immer neuen Bedrohungen schützen. Moderne IT- & Softwarelösungen unterstützen dabei.

Blog 26.04.24

Team Topology: Ein Wegweiser für effektive DevOps-Kultur

Erfahren Sie, wie Team Topology und effektive Kommunikationsmodi die DevOps-Kultur fördern und die Softwareentwicklung revolutionieren. Ein Wegweiser für erfolgreiches Teammanagement.

Blog 12.01.24

Infrastructure as Code (IaC)

Infrastructure as Code (IaC) und die neuesten Entwicklungen in der Cloud-Infrastrukturverwaltung mit Tools wie Terraform und Crossplane. Ein Blick auf die Zukunft des Infrastrukturmanagements.

Blog 02.02.24

So kommt Ordnung in den Infrastructure as Code-Werkzeugkaste

Ordnung im IaC-Dschungel: Welches Tool passt? Dieser Artikel gibt Überblick über die wichtigsten Werkzeuge für Infrastructure as Code.

Blog 18.07.24

Ticket-Schneiden: Best Practices und Agile Methoden

Erfahren Sie, wie Sie effektive Tickets für die Softwareentwicklung schreiben und schneiden, um Probleme zu vermeiden. Mehr über die Bedeutung von User Stories und deren korrekte Umsetzung.

Blog 27.10.22

Architekturarbeit im Zeitalter Cloud-nativer Architekturen 1

Die beschleunigte Digitalisierung und ihr Einfluss auf Softwarearchitekturen und IT-Teams beschreibt der Autor. Sind Cloud-native-Strategien sinnvoll?

Blog 10.11.22

Architekturarbeit im Zeitalter Cloud-nativer Architekturen 2

Aufgaben von Softwarearchitekten im Cloud-native-Umfeld, benötigte Skills und ihr Arbeitsalltag zwischen Kundenanforderungen, Zieldefinition und Deadlines.

Blog 08.12.22

Teil 4: Eigenschaften einer Cloud-native Architektur

Beitrag zu Cloud-native Architekturen, ihre Möglichkeiten und Zielsetzungen sowie die Philosophie und Arbeitsweise, die daraus folgt.

Branche 31.07.25

Versicherungen fit für die Zukunft

Wir modernisieren Bestandssysteme, integrieren digitale Kanäle und schaffen nachhaltige Architekturen für automatisierte, sichere und kundenzentrierte Versicherungsprozesse.

Blog 24.11.22

Architekturarbeit im Zeitalter Cloud-nativer Architekturen 3

Gedanken zu Möglichkeiten von Cloud-native-Architekturen und Kriterien zur Auswahl der Technologie: Standard nehmen oder sich dem Cloud-Anbieter ergeben?

Blog 24.10.24

DevOps und APIOps in der Praxis: Best Practices

Wie lassen sich DevOps und APIOps erfolgreich kombinieren? In diesem Artikel erfahren Sie, welche Best Practices und Erfolgsfaktoren moderne Softwareentwicklung schneller und skalierbarer machen.

Blog 05.09.24

Effiziente DevOps-Teams: Teamschnitte und Kommunikation

Durch gezielte Teamschnitte und optimale Kommunikationsmodi wird die kognitive Last in DevOps-Teams reduziert. Für effizientere Zusammenarbeit und kontinuierlichen Fortschritt.

Blog 10.10.24

DevOps? Warum APIOps der nächste logische Schritt ist

APIOps erweitert DevOps-Praktiken auf APIs, um deren Entwicklung zu automatisieren und zu optimieren. Dieser Ansatz verbessert Qualität, Sicherheit und Geschwindigkeit im API-Management.

Blog 23.08.24

"DevOps, quo vadis?" – Team Topologien

Erfahren Sie, wie Team-Topologien in DevOps Silos aufbrechen und erfolgreiche Zusammenarbeit fördern. Entdecken Sie die vier fundamentalen Teamarten.

Referenz

Digitale Transformation: HUK ersetzt Papier durch Cloud

ARS unterstützte HUK-COBURG dabei, Papierprozesse durch moderne Cloud-Microsites zu ersetzen, um fehlende Versicherungsdaten effizient zu erfassen.

Branche 11.08.25

Zukunftssichere IT für Financial Services

Wir verbinden KI, moderne Architekturen und regulatorische Sicherheit – für resiliente Strategien und Wettbewerbsvorteile im Finanzsektor.

Blog 28.08.23

Demokratisierung von Softwaretests

Besser und schneller Software testen: Welche Testmethoden beziehen nicht-technische Abteilungen ein? Über Tools wie Cypress und Cucumber lesen Sie hier.