
Die Entwicklung der Softwarearchitektur und DevOps: Ein kurzer historischer Überblick
Die technologische Entwicklung geht Hand in Hand mit der wachsenden Nachfrage nach robusteren, einfacher wartbaren Produkten mit fortschrittlichen Sicherheitsmerkmalen – ein Aspekt, der in der heutigen Welt von zentraler Bedeutung ist. Darüber hinaus streben Unternehmen nach einer schnelleren Markteinführung, einem weiteren entscheidenden Faktor im heutigen Wettbewerbsumfeld.
Wir haben eine Artikelreihe gestartet, die sich der Entwicklung von Softwarearchitektur und DevOps widmet. Dabei werfen wir einen Blick auf die historische Perspektive, beleuchten zentrale Etappen der Architekturentwicklung und analysieren Trends, die die Zukunft der Tech-Welt mitgestalten. In diesem Beitrag gehen wir auf die wichtigsten Entwicklungsstufen der Softwarearchitektur ein und analysieren den aktuellen Stand der Softwarearchitektur im Kontext von DevOps.
Historische Perspektive
Die ersten Anwendungen mit einer monolithischen Architektur entstanden etwa in den 1950er Jahren und blieben bis in die 1990er Jahre weit verbreitet. Diese Architektur gewann in der Softwareentwicklergemeinschaft an Beliebtheit, da die damalige Hardware, Entwicklungspraktiken und Bereitstellungsmodelle stark eingeschränkt waren. Auch wenn es eine Herausforderung darstellte, alle Komponenten in einem einzigen Codebestand zusammenzufassen, war die monolithische Architektur dennoch einfach und ermöglichte eine zentrale Kontrolle über die Lösung.
Die Client-Server-Architektur (1980er–2000er) stellte den nächsten Entwicklungsschritt in der Softwarearchitektur dar. Da sich Personal Computer (PCs) und lokale Netzwerke (LANs) immer stärker durchsetzten, ließ sich die Einführung der Client-Server-Architektur kaum vermeiden. Anwendungen wurden in clientseitige und serverseitige Komponenten aufgeteilt. Die Clients waren für die Benutzeroberflächen zuständig, während die Server Daten und Geschäftslogik verarbeiteten.
In den 1990er Jahren etablierte sich die Drei-Schichten-Architektur, die auch heute noch weit verbreitet ist. Sie führte eine zusätzliche Ebene zwischen Clients und Servern ein – die sogenannte Middleware- oder Applikationsserver-Schicht. Anwendungen wurden nun in Präsentations-, Anwendungs- und Datenschicht aufgeteilt, was eine modularere und skalierbarere Gestaltung ermöglichte.
Die serviceorientierte Architektur (SOA), die in den 2000er Jahren eingeführt wurde, ist ebenfalls heute noch weit verbreitet. Sie basiert auf dem Konzept lose gekoppelter, wiederverwendbarer Dienste, die über standardisierte Protokolle wie SOAP (Simple Object Access Protocol) und REST (Representational State Transfer) kommunizieren. Die einzelnen Services sind für spezifische Aufgaben konzipiert und können miteinander kombiniert und orchestriert werden, um komplexe Anwendungen zu erstellen. SOAP fördert Interoperabilität, Flexibilität und Wiederverwendbarkeit, erfordert jedoch eine sorgfältige Steuerung und Verwaltung der Lebenszyklen der Dienste.
Die neuesten Ansätze in der Softwarearchitektur sind die Microservices-Architektur und die Serverless-Architektur. Beide wurden in den 2010er-Jahren eingeführt und gehören auch heute noch zu den führenden Architekturstilen.
Die Microservices-Architektur ermöglicht es, Anwendungen in kleinere, unabhängig bereitstellbare Dienste aufzuteilen, die über HTTP-Protokolle und Messaging-Queues miteinander kommunizieren. Jeder Dienst ist für einen bestimmten Teil der Lösung verantwortlich und kann unabhängig entwickelt, bereitgestellt und skaliert werden.
Ein Beispiel für eine erfolgreiche Umsetzung der Microservices-Architektur ist eine Lösung für einen unserer Kunden. Zu Beginn unserer Zusammenarbeit war dessen Plattform ein Monolith. Die Entscheidung fiel, auf eine Microservices-Architektur umzustellen. Dieser Schritt half unserem Kunden, sich schnell an mögliche technologische oder gesetzliche Änderungen anzupassen und künftig Zeit und Kosten bei Entwicklung und Wartung zu sparen.
Die Umstellung auf Microservices ermöglichte eine schnelle Integration eines Abrechnungssystems für die Distributoren des Kunden: Die erstellten Bestellungen wurden sowohl im System des Kunden als auch im Abrechnungssystem synchronisiert. Dies vereinfacht das Dokumentenmanagement und ermöglicht die Erstellung von Zahlungsberichten.
Die Serverless-Architektur wird oft als Function-as-a-Service (FaaS) bezeichnet, da sie Entwicklern erlaubt, sich von der Verwaltung der Infrastruktur zu lösen und sich stattdessen auf das Schreiben von Code in Form von Funktionen zu konzentrieren. Diese Funktionen werden durch verschiedene Ereignisse ausgelöst und in Containern ausgeführt. Der Cloud-Anbieter übernimmt automatisch die Einrichtung und Skalierung der Infrastruktur. Serverless bietet Vorteile wie weniger Wartungsaufwand, nutzungsabhängige Abrechnung und schnelle Skalierbarkeit. Allerdings kann es zu einer Anbieterbindung kommen und die Ausführungsgeschwindigkeit des Codes beeinflussen.
Eines unserer Projekte sollte ursprünglich auf einer serverlosen Architektur basieren. Doch je tiefer wir in das Projekt einstiegen, desto deutlicher zeichnete sich ein anderes Bild ab.
Ein Hauptvorteil des serverlosen Computings ist dessen Skalierbarkeit. Die Verantwortung für die Bereitstellung und Verwaltung der Server liegt beim Cloud-Anbieter, was es Unternehmen ermöglicht, sich auf die Entwicklung zu konzentrieren. Für diesen Kunden jedoch war ein Arbeitsaufwand mit Millionen von Funktionsausführungen pro Monat absehbar. Zwar skaliert eine serverlose Architektur automatisch, doch die Kosten bei solch einem hohen Aufkommen wurden zu einem ernsthaften Problem – hier geht es um Millionen von Funktionsaufrufen monatlich.
Neben den Kosten stellt auch die Verwaltung eines weit verzweigten Netzwerks individueller Funktionen innerhalb einer serverlosen Struktur eine Herausforderung dar. Das Debugging, die Leistungsüberwachung sowie die konsistente Bereitstellung von Code über all diese Funktionen hinweg können sehr zeitaufwendig sein und erfordern erhebliche Ressourcen.
Was kommt als Nächstes?
Was die Zukunft der Softwarearchitektur betrifft, sind sich Expertinnen und Experten einig: Künstliche Intelligenz, Maschinelles Lernen, Quantencomputing und Edge Computing werden zunehmend an Bedeutung gewinnen. In unseren nächsten Artikeln werden wir diese neuen Trends ausführlich besprechen – folgen Sie also unserem Blog, um mehr zu erfahren.