In der Welt der Webentwicklung entsteht ein Trend, der gar nicht so neu ist: die Composable Web Architecture. Dieses Konzept, stark beeinflusst durch Plattformen wie Netlify, repräsentiert eine neue alte Denkweise in der Gestaltung von Web-Systemen. Auch JAMStack (Javascript-API-Markup) und MACH (Microservices, API, Cloud-native, Headless) verwenden ähnliche Prinzipien wie die Composable Web Architecture und schon das Reactive Manifesto beschrieb Eigenschaften eines Systems, die dem Composable Web zugrunde liegen.
Obwohl der Begriff neu erscheinen mag, sind die Prinzipien der Composable Web Architecture nicht neu. Sie basieren auf Konzepten, die bis in die 70er Jahre zurückreichen. Dazu gehören Prinzipien, wie das Aktoren-Modell und Coroutines, SOA (Service-orientierte Architektur) und Microservices. Und Amazon hat bereits 1998 ein Manifest für verteilte, service-basierte Systeme veröffentlicht, welches den Ansatz des Composable Web Architecture unterstreicht.
Composable Web Architecture bedeutet, dass bei der Webentwicklung verschiedene unabhängige, modulare Webanwendungen miteinander kombiniert werden. Die einzelnen Teile wie Services, APIs und Microservices werden also separat entwickelt und dann zusammengesetzt. So können komplexe Anwendungen gebildet werden. Die Composable Web Architecture ermöglicht eine schnelle Anpassung, Skalierung und Wartung der Webanwendungen, da Änderungen an einem Modul nicht das gesamte System beeinflussen. Dadurch wird eine hohe Flexibilität und Effizienz bei der Entwicklung und dem Betrieb von Webanwendungen erreicht.
Das Kernmerkmal der Composable Web Architecture ist ihre Flexibilität. Systeme, die nach diesem Prinzip gebaut werden, sind leicht anpassbar und erweiterbar. Dies wird durch die Unterteilung in modulare, isolierte und kleinere Teilsysteme erreicht. Eine ideale Herangehensweise für solche Strukturen bietet das Domain-Driven-Design. Beim Domain-Driven Design konzentriert man sich darauf, die fachlichen Anforderungen herauszuschälen und man fokussiert sich auf die Regeln und Abläufe des Business Prozesses. Entwickler und Fachexperten arbeiten im Domain-Driven-Design Ansatz eng zusammen und ihr gemeinsames Ziel ist es, Software zu entwickeln, die genau zu diesen Besonderheiten passt.
Effizienz bedeutet schlussendlich nichts anderes als Ressourcen sinnvoll zu nutzen. Im Kontext von Sourcecode beinhaltet dies den Einsatz effizienter Algorithmen. Auf Serverebene bedeutet dies, nur die wirklich benötigten Kapazitäten zu nutzen, was oft durch Serverless/”Function-as-a-Service”-Technologien erreicht wird. Im Bereich des Netzwerks liegt der Fokus auf kürzeren Wegen zum Endbenutzer, wofür oft CDNs und Edge Computing zum Einsatz kommen. CDN steht für Content Delivery Networks. Das sind Netzwerke von Servern, die überall auf der Welt verteilt sind und dazu dienen, Inhalte wie Webseiten, Bilder, Videos schneller an Nutzer zu liefern. Wenn jemand eine Webseite besucht, sorgt das CDN dafür, dass die Daten von einem Server in der Nähe des Nutzers kommen, was die Ladezeiten deutlich verkürzt. Edge Computing bezieht sich darauf, Computerprozesse näher an den Ort zu verlagern, wo sie gebraucht werden. Statt alle Daten und Berechnungen in einem zentralen Rechenzentrum zu machen, werden sie an den “Rand” des Netzwerks verschoben, also näher an die Geräte der Nutzer. Auch dies erhöht die Geschwindigkeit und Effizienz.
Nachhaltigkeit in der Composable Web Architecture resultiert aus der Kombination von Flexibilität und Effizienz. Nachhaltige Systeme folgen einem ganzheitlichen Ansatz, der alle Phasen von der Konzeption bis zum Betrieb umfasst. In der Konzeptionsphase bedeutet dies, nur Funktionen mit echtem Mehrwert zu planen. In der Entwicklungsphase wird durch die enge Zusammenarbeit über verschiedene Disziplinen hinweg und durch qualitative Code-Strukturen und Tests die beste Lösung erarbeitet. Im Betrieb ermöglicht die vollständige Automatisierung des Entwicklungsprozesses eine schnelle Anpassung und Validierung des Mehrwerts eines Systems. Dazu gehören auch der Einsatz von CO2-freundlichen Infrastrukturen und das dynamische Skalieren verteilter Teilsysteme.
Bei Comvation verfolgen wir das Ziel, flexible, effiziente und nachhaltige Systeme zu schaffen. Es ist ein kontinuierlicher Prozess, der ständige Anpassungen und Verbesserungen erfordert. Wir sind uns bewusst, dass die Perfektion ein Ziel ist, das möglicherweise nie vollständig erreicht wird, aber unser Streben danach führt zu immer besseren Lösungen in der Welt des Web. Einige Beispiele, wie die Composable Web Architecture bei fertigen Projekten aussieht, finden Sie hier:
Pic Credit: Ramotion