Clemens Schäfer, it factum GmbH
Eine ausgereifte Softwarearchitektur trägt wesentlich zur erfolgreichen Umsetzung von digitalen Services bei. In diesem Artikel gehen wir der Frage nach, worin der Nutzen einer solchen Architektur besteht. Wir beleuchten, wo aktuelle Ansätze oft zu kurz greifen und wie digitale Services von einer solchen Referenzarchitektur profitieren können.
Nach klassischem Verständnis sorgt eine gute Softwarearchitektur dafür, dass Softwaresysteme sicher, performant, wartungsfreundlich sowie gut anpass- und erweiterbar sind.
Sicher und performant bedeutet, dass ein System im Betrieb den gestellten Anforderungen gewachsen ist und nicht etwa in Produktion unter der Last von Anfragen zusammenbricht. Wartungsfreundlich bedeutet, dass das System sich über die Zeit gut betreiben und technisch aktuell halten lässt. Ist ein System gut anpass- und erweiterbar, sind zukünftige Erweiterungen des Systems – aber auch Austausch von Teilsystemen – gut möglich. Das ist eine wichtige Voraussetzung für einen späteren Ausbau der Anwendung, zum Beispiel beim Übergang von einem Minimum Viable Product (MVP) zu einem vollausgebauten Produkt im Rahmen einer agilen Vorgehensweise.
Neben diesen auf die technische Qualität des Softwaresystems zielenden Aspekten gibt es auch eine ökonomische Perspektive: eine gute Architektur gibt den Entwicklern in einem Projekt Orientierung und schafft Klarheit in technologische Fragestellungen, so dass die Umsetzung von Fachlichkeit nicht durch technologische Hürden gebremst wird.
Die Erfahrung zeigt, dass diese theoretischen Nutzenversprechen in der Praxis nicht immer erfüllt werden. Typische Anzeichen dafür sind:
Grund dafür ist oft, dass im Rahmen eines agilen Vorgehens gerne eine so genannte evolutionäre Architektur gewählt wird. Fragestellungen zur Architektur werden dabei nicht vor der Implementierung des Systems vertiefend betrachtet, sondern während der laufenden Entwicklung im Team zu den Zeitpunkten entschieden, an denen sie auftreten. Im Rahmen von laufenden Refactorings wird dann sichergestellt, dass die Architektur qualitativ hochwertig bleibt, also mit dem Projekt mitwächst. Dadurch möchte man langwierige Phasen der Architekturfindung vermeiden und zugleich die entstehenden Architekturen schlank halten.
Die Praxis zeigt jedoch, dass so entstehende Architekturen stark von den im Entwicklungsteam verfügbaren Erfahrungen geprägt sind. Ein über mehrere Projekte hinweg einheitliches Architekturdesign ist mitunter schwer zu erreichen, denn unterschiedliche Entwickler bedeuten tendenziell immer auch unterschiedliche architekturelle Ausrichtungen.
Durch die evolutionäre Architektur besteht zudem latent die Gefahr, dass sich ein Entwicklungsteam zu sehr an kurzfristigen Zielen ausrichtet, dass die architekturelle Qualität dem Ziel einer schnellen Lieferung untergeordnet wird. Bei späteren Erweiterungen des Funktionsumfangs der Anwendung drohen dann nicht unerhebliche Refactorings, die den Projektfortschritt – oft unvermittelt – bremsen.
Die Motivation für eine evolutionäre Herangehensweise an das Thema Architektur ist gut nachvollziehbar, verspricht man sich dadurch schlanke Systeme, schnelle Projektergebnisse und eine kurze Time-to-Market. Diese schnellen Ergebnisse sind aber auch mit einer detailliert vordefinierten Architektur möglich. Fokussiert man sich nämlich auf eine Gruppe von Anwendungen und deren typischen Anforderungen, so kann eine Referenzarchitektur erstellt werden, die die architekturellen Fragestellungen für alle typischen relevanten Anwendungsfälle in dieser Gruppe vorab klärt, so dass dieses Wissen in Projekten in unmittelbar umsetzbarer Form zur Verfügung steht.
Für featurewerk hat it factum eine solche Referenzarchitektur für die Realisierung von digitalen Services geschaffen.
Die featurewerk-Referenzarchitektur ist eine technologieunabhängige, vendor-neutrale Soll-Beschreibung der Architektur für digitale Services. Sie umfasst alle Komponenten in abstrakter Form, die zur Realisierung auch sehr umfangreicher und technologisch komplexer Service-Applikationen notwendig sind. Die featurewerk-Referenzarchitektur berücksichtigt dabei alle Aspekte und Querschnittsfunktionen, die bei der Erstellung von derartigen Anwendungen typischerweise auftreten, so beispielsweise Suche, Authentifizierung oder langlaufende Transaktionen.
Die Referenzarchitektur ordnet alle Funktionen zur Realisierung auf Komponenten in den verschiedenen Layern Backend, Service, Delivery und Frontend zu und macht explizit, wie diese Elemente ineinandergreifen (zum Beispiel wie Komponenten zur Suche in Frontend und Backend miteinander kompatibel zu realisieren sind).
Neben dieser strukturellen Beschreibung umfasst die Referenzarchitektur auch die wesentlichen Anforderungen an das Anwendungsdesign, wie zum Beispiel zu Sicherheits- oder Last-Aspekten (Stichwort: Security by Design).
Die Referenzarchitektur dient als Basis für die Erstellung der Application Blueprints, die dann als konkrete Anwendungsrahmen in den featurewerk-Projekten zum Einsatz kommen.
Die technologieneutrale Referenzarchitektur von featurewerk bietet bei der Realisierung von digitalen Services folgende Vorteile:
- Die Referenzarchitektur berücksichtigt die Anbindung an eine Enterprise-IT und (externe) Ökosysteme und stellt so die für digitale Geschäftsmodelle notwendige Konnektivität sicher.
- Die Referenzarchitektur erlaubt moderne cloud-basierte Betriebskonzepte für digitale Services mit größtmöglicher Flexibilität.
- Die Referenzarchitektur unterstützt Realisierungen von digitalen Services in unterschiedlichen Ausbaustufen. Sie ist bei Pilotprojekten kein verkomplizierender Ballast, kann aber auch unternehmensweite, voll ausgebaute Anwendungen stemmen.
- Die Referenzarchitektur sorgt durch ihre Plattformunabhängigkeit für ein langlebiges Design und vermeidet durch ihre Neutralität die Vorwegnahme von Entscheidungen für bestimmte Technologieanbieter.
- Die Referenzarchitektur sorgt für vielseitige und wiederverwendbare Anwendungsdesigns und kann daher auch eine große Zahl von Digitalisierungsinitiativen auf der Unternehmens-Roadmap einheitlich unterstützen.