Softwarearchitektur für komplexe Webanwendungen: Wie sollte diese aussehen?

Heutzutage baut man Webanwendungen nicht mehr unbedingt für wenige Nutzer in einer Stadt. Der Trend geht hin zur Software, welche von Tausenden gleichzeitig über unterschiedlichste Regionen der Welt genutzt werden.

Hierfür braucht man eine Architektur, welche diesen grossen Nutzerzahlen standhält und gleichzeitig eine grossartige Performance (Stichwort: schnelle Ladezeiten) bietet.

Im Beitrag werden sowohl Startup-Lösungen, mittelgrosse Software, als auch Unternehmensapplikationen (Enterprise Solutions) angesprochen.

Hier ein paar Informationen wie eine solche Softwarearchitektur aussehen sollte.

Tipp: Immer klein anfangen

Es gibt eine bekannte Aussage von einem Autor namens John Gall.

Er sagt:

“A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work. You have to start over, beginning with a working simple system.”

Übersetzt heisst das eigentlich nur, das sein komplexes System, immer aus einem einfachen System heraus entstanden ist. Andersherum: Systeme die von Anfang an komplex sind, werden nicht funktionieren.

Ein System das später eine höhere Komplexität erreichen soll, sollte man daher sehr schlicht halten.

Für eine Webanwendung könnte das in der Praxis bedeuten: Man startet mit der PHP als Backendentwicklungs-Werkzeug und MySQL als Datenbank. Für das Frontend nutzt man HTML, CSS und JavaScript.

Um die Entwicklung zu vereinfachen könnte man ein Framework wie Bootstrap für das Frontend nutzen und für das Backend ein PHP Framework wie Laravel.

Wie kann es weiter gehen?

Sollte man nach einiger Zeit merken, dass die Performance nicht mehr stimmt, dann kann man immer noch umsteigen.

Eine Möglichkeit wäre es dann, auf andere Technologien wie Python, Java, ASP.NET, Angular.JS, etc. umzusteigen.

Das wäre ein Weg, eine komplexere Umsetzung vorzunehmen.

Der andere wäre es ein eigenes Framework zu schreiben, dass die individuellen Anforderungen erfüllt. Ein gutes Beispiel ist hier Facebook, welches mit PHP gestartet ist und um die Performance sicherzustellen, ein eigenes PHP Framework erstellt hat.

Der MEAN Ansatz

Ein weiterer Ansatz, welcher sicherlich für Startups interessant ist, ist die Nutzung des MEAN Stacks. Es ist die Abkürzung für MongoDB, Express.JS, Angular.JS und Node.JS.

Damit lassen sich hochperformante Webanwendungen auf Basis von JavaScript (im Backend und im Frontend) erstellen.

Da sich alle diese Technologien jedoch ständig im Wandel befinden, sollte man dementsprechend Entwicklungs-Power (sprich: ein Vollzeit Entwicklungsteam) haben, dass jederzeit daran arbeiten kann.

Wenn man nur einen Entwickler hat, welcher sich um die Anwendung zum Start kümmert, dann ist sicherlich der Weg über PHP der Richtige.

Einsatzbeispiel von MEAN: Der Plan ist es eine Anwendung zu bauen, die im Endausbau von Hunderttausenden von Nutzern Online angesteuert wird. Hierfür ist das JavaScript Stack ideal. Es ist darauf augerichtet modern Webapplikationen zu entwickeln.

Wann PHP? Wenn man weiss, dass die Software nur von einigen Hundert bis Tausend Nutzern gleichzeitig verwendet wird, dann kann man ohne Bedenken auf PHP setzen. Standards wie HTML, CSS, JavaScript, MySQL werden auch in Zukunft eine stabile Basis bieten.

Grosse Unternehmenslösungen?

Was ist wenn man eine grosse Lösung für ein Unternehmen bauen möchte? Dann wird höchstwahrscheinlich die Verwendung von Java, C++ oder Python angebracht sein.

Gleichzeitig gibt es hier Softwarearchitekten, welche die Anwendung durchplanen können.

Solche Webanwendungen werden meistens von Teams mit mehreren dutzend Mitgliedern (Entwickler, Designer, UI/ UX Experten, Datenbankspezialisten, Frontend Entwicklern, Backend Entwicklern, etc.) umgesetzt.

Aber auch hier lässt sich John Gall’s Leitsatz anwenden. Diese Projekt sind oftmals zum scheitern verurteilt, da sie von Anfang an viel zu komplex sind, als dass hier jemand den Überblick behalten könnte.

Laut dem viel zitierten Chaos Report scheitern zwischen 40 bis 60 Prozent aller IT Projekte. Davon entfallen wiederum ein grosser Teil auf sehr aufwendige und grosse Software-Systeme.

Der heutzutage beste Weg ist sicherlich noch der Umweg über ein ERP System wie SAP, welches man nutzen kann, um die Standard Prozesse im Unternehmen abzubilden. Spezialisierte SAP Partner liefern zudem Add-Ons, welche auch spezifische Unternehmensprozesse abbilden können.

Die Komplexität von Grossprojekten kann dadurch verringert werden. (SAP und andere Systeme sind aus sehr simplen Software-Lösungen heraus entstanden und haben sich über die Jahre weiterentwickelt)

Spezial-Webanwendungen (Individualprogrammierungen), welche von den Fachabteilungen eingesetzt werden, könnten dann wiederum autark und ohne Anbindung an die Hauptsysteme laufen (um die Komplexität zu verringern).

Die Cloud

Ein weiterer Weg, Komplexität in der Unternehmens-Anwendungs-Landschaft zu verringern, ist es sogenannte Cloud Lösungen zu verwenden. Fast alle kleinen und grossen Software-Anbieter bieten hierfür entsprechende Lösungen, welche man über das Internet beziehen kann an.

Die Updates geschehen hier auf den Servern des Cloud-Anbieters. Das ist eine grosse Erleichterung, denn für sogenannte On-Premise Software (Software die in den Unternehmen selbst lokal installiert ist) können Updates Monate und Jahre dauern. In der Cloud (Englisch für Wolke) passieren diese Updates jedoch fast schon unbemerkt.

Fertiges System vs Individualprogrammierungen

Möchte man heute einen Onlineshop oder ein Portal umsetzen, dann kommen Shoplösungen wie Shopware oder Content Management Systeme wie TYPO3 in Frage.

Auch hiermit lassen sich IT Projekte vereinfachen. Viele Punkte, welche in fast jedem dieser Lösungen vorkommen, sind durch Standardentwicklungen abgedeckt.

Die Individualprogrammierung (d.h. die Entwicklung von Grund auf neu) ist meistens sehr aufwendig.

Dennoch: Möchte man ein Alleinstellungsmerkmal aufbauen, dann macht eine solche Webentwicklung Sinn. Amazon wäre ein sehr bekanntes Beispiel für eine Webentwicklung, welche von Grund auf neu geschehen ist. Es gibt jedoch auch sehr viel andere kleinere e-Commerce Lösungen welche diesen Weg gegangen sind.

Besonders wenn die Weblösung der Hauptgeschäftspunkt des Unternehmens ist, sollte man auf eine Individualprogrammierung setzen. Hier ist dann wiederum die richtige Gestaltung der Web-Architektur wichtig.

Fazit

Dieser Beitrag ging eher auf den generellen Weg ein, wie man eine Web-gestützte Plattform aufbauen kann.

Wichtig ist eigentlich nur zu verstehen, dass, wenn man versucht von Anfang an etwas sehr komplexes zu bauen, eigentlich nicht erfolgreich sein kann.

Man muss mit einem kleinen funktionierenden System anfangen. Wenn dieses implementiert ist und gut läuft, kann man anfangen weitere Module dafür zu programmieren.

Mit der Zeit wird man dann merken: “Jetzt haben wir tatsächlich ein grosses System gebaut”. Das ist jedoch meistens ein Prozess der mehrere Jahre dauert. Besonders Webprojekte profitieren von so einem Ansatz.

Welche Erfahrungen habt Ihr gemacht? Welche Dinge gibt es bei einer passenden Webarchitektur zu beachten?

Interessante Links:
mindtwo schreibt wie man komplexe Webanwendungen erstellt
Heise beschreibt Anwendungen mit Vue.JS

Bilder: Canva


Der Autor: Sascha Thattil arbeitet bei YUHIRO und hilft Unternehmern und Unternehmen beim einfachen Aufbau von Programmier-Teams in Indien. YUHIRO ist ein deutsch-indisches Unternehmen welches IT Firmen, Agenturen und IT Abteilungen Softwareentwickler bereitstellt.

Schreibe einen Kommentar