Web-Stack – das Software-Gerüst zur Webentwicklung
Ein Web-Stack oder auch Web-Application-Stack ist eine Sammlung von Software zur Realisierung von Websites und Webanwendungen. Der Begriff „Stack“ (dt. Stapel) rührt daher, dass die einzelnen Komponenten aufeinander aufbauen. Die minimale Architektur solcher Web-Stacks setzt sich aus einem Betriebssystem, einem Webserver, einer Datenbank und einem Skript-Interpreter zusammen. Mithilfe der entsprechenden Server-Hardware sorgen diese Bündel dafür, dass die notwendigen Informationen über das jeweilige Webprojekt an den anfragenden Client, standardmäßig den Internetbrowser, weitergeleitet werden. Dieser verarbeitet die HTML-, CSS- und JavaScript-Codes und stellt das Webangebot schließlich für den Endnutzer dar. Da die einzelnen Software-Komponenten eines Web-Stacks sehr individuell kombiniert werden können, existieren zahlreiche Variationen, die sich für ganz unterschiedliche Einsatzszenarien eignen. Die bekannteste Software-Kombination ist das Open-Source-Bundle LAMP, das sich aus Linux, Apache, MySQL und PHP zusammensetzt.
Die Komponenten eines gewöhnlichen Web-Stacks
Der traditionelle Web-Stack als Infrastruktur für Websites und Webanwendungen setzt sich wie eingangs erwähnt mindestens aus den vier Software-Bausteinen Betriebssystem, Webserver, Datenbank und Skript-Interpreter zusammen. Zusätzlich können die Stacks durch Frameworks, weitere Programmiersprachen, Proxy-Server oder diverse Analyseprogramme ergänzt werden. Die Grundkomponenten kurz erläutert:
Betriebssystem
Das Betriebssystem ist die zentrale Schnittstelle zwischen der zugrundeliegenden Server-Hardware (Prozessor, Arbeitsspeicher, Webspace) und den anderen eingesetzten Software-Komponenten. Genauer gesagt greift das Betriebssystem auf die Hardware-Ressourcen zurück, um die Funktionalität der einzelnen Anwendungen, vor allem des Webservers, zu gewährleisten. Mögliche Systeme, auf denen ein Web-Stack aufbauen kann, sind diverse Linux-, Windows-, Unix- und Mac-OS-Distributionen.
Webserver
Der Webserver ist eine auf dem Betriebssystem installierte Software, die Dokumente an den anfragenden Client ausliefert. Mithilfe des HTTP-Übertragungsprotokolls wird dem Webserver die Anfrage des Clients übermittelt. Handelt es sich bei den angeforderten Dokumenten um statische Inhalte wie HTML-Dateien oder Bilder, verarbeitet der Webserver diese Anfrage direkt, indem er dem Client die entsprechenden Daten ausliefert. Dynamischen Content kann er hingegen nur mithilfe von Datenbanken und Skript-Modulen wiedergeben. Zu den am häufigsten genutzten Webserver-Lösungen zählen Apache, Microsoft IIS und nginx.
Datenbank
In Datenbanksystemen, die vereinfacht auch als Datenbanken bezeichnet werden, sind die für das Webprojekt relevanten Datenmengen effizient und dauerhaft gespeichert, sodass der Webserver im entscheidenden Moment darauf zugreifen kann. Dazu stellt er mithilfe von Servererweiterungen Anfragen, die von der Datenbank verarbeitet und wieder an die Erweiterungen zurückgegeben werden. Diese generieren aus dem Ergebnis der Anfrage ein geeignetes Ausgabeformat wie HTML und leiten es an den Webserver weiter. Die Wahl der Datenbank ist eng an Webserver-Software und verwendete Skript- und Internet-Programmiersprachen geknüpft. Häufig zum Einsatz kommen u. a. Oracle, MySQL und MongoDB.
Skript-Interpreter
Ohne Skriptsprachen ist die Webserver-Software nicht dazu in der Lage, dynamische Websites und Webanwendungen zu realisieren. Zum einen sind Skript-Interpreter daher clientseitig, d. h. im anfragenden Browser im Einsatz, zum anderen finden bestimmte Kalkulationsprozesse zur Darstellung der Seiten auch bereits durch serverseitiges Skripting statt. Der typische Web-Stack-Skript-Interpreter ist PHP, es gibt aber auch einige weniger verbreitete Alternativen wie ASP.NET, Java, Ruby, Perl oder Python.
Das sind die beliebtesten Web-Stack-Lösungen
Eine ganze Reihe von Software-Stacks hat sich für den Einsatz bei der Webentwicklung bewährt. Die steigenden Anforderungen an die Nutzerfreundlichkeit, Stabilität, Erweiterbarkeit und Skalierbarkeit der immer komplexer werdenden Webanwendungen hat dabei in den vergangenen Jahren dazu geführt, dass das klassische Web-Stack-Modell immer seltener als Grundlage dient. JavaScript spielt mittlerweile auch serverseitig eine große Rolle: So versprechen beispielsweise auf der JavaScript-Plattform Node.js basierende Web-Application-Stacks eine einfache Programmierung performanter Webprojekte – sie sind daher längst keine Rarität mehr. Drei besonders beliebte Stacks und deren Einsatzmöglichkeiten:
LAMP – der Klassiker
LAMP ist wie schon erwähnt der bekannteste Web-Stack. Als einer der ersten Stacks überhaupt stellte er lange Zeit das optimale Paket für Webprojekte dar. Mit
- Linux als Betriebssystem,
- Apache als Webserver,
- einer MySQL-Datenbank
- und dem Skript-Interpreter PHP
sind alle eingesetzten Komponenten Open-Source-Software mit freier Lizenz und damit nicht nur beliebig veränderbar, sondern auch kostenlos verfügbar. Dennoch konnte LAMP von Beginn an mit vergleichbaren proprietären Lösungen mithalten und kam beispielsweise zur Entwicklung von MediaWiki, der Wikipedia-Software, zum Einsatz. Das LAMP-Paket eignet sich hervorragend zur Umsetzung mehrseitiger dynamischer Websites. Als Nutzer profitieren Sie dabei vor allem von der großen Community, ausführlichen Tutorials und der Möglichkeit, PHP sowie leistungsstarke Tools wie phpMyAdmin einzusetzen.
Aufgrund des stetigen technischen Fortschritts und der Entwicklung neuer freier Software gibt es diverse Variationen des LAMP-Stacks, in denen die herkömmlichen Komponenten teilweise ersetzt wurden. Einige der bekanntesten sind:
- WAMP (Windows als Betriebssystem)
- MAMP (Mac OS X als Betriebssystem)
- XAMPP (Beliebiges Betriebssystem, Perl und PHP als Skript-Interpreter; dazu ein plattformunabhängiger FTP-Server)
- LAPP (PostgreSQL als Datenbank für Enterprise-Projekte)
Seit der Veröffentlichung der MySQL-Abspaltung MariaDB kann das M auch für dieses performantere Datenbanksystem stehen. Ausführliche Informationen über den LAMP-Stack und dessen Installation erhalten Sie im vertiefenden Artikel „LAMP-Server: eine preiswerte Lösung für dynamische Websites“.
WISA – der Microsoft-Stack
Anders als beim LAMP-Stack, dessen einzelne Komponenten prinzipiell nicht entwickelt wurden, um zusammenzuarbeiten, programmierte Microsoft die Bestandteile des WISA-Stacks eben zu diesem Zweck, was die optimale Funktionsweise des Software-Pakets garantiert. Die eingesetzte Software ist dabei logischerweise proprietär, weshalb entsprechende Lizenzen zur Nutzung erworben werden müssen. Gleichzeitig können sich Nutzer aber auch auf die umfassenden Supportleistungen des Software-Giganten verlassen. Der Web-Stack aus dem Hause Microsoft setzt sich aus
- dem Betriebssystem Windows Server,
- der Webserver-Software Internet Information Services (IIS),
- dem relationalen Datenbankmanagementsystem SQL Server
- sowie der Programmiersprachen-Bibliothek ASP.NET
zusammen. Dank der ASP.NET-Bibliothek können Webprojekte auf Basis von Visual C# oder Visual Basic.NET programmiert werden, die sich mithilfe eines Compilers direkt vom System ausführen lassen. WISA setzt also nicht den Einsatz eines Skript-Interpreters voraus und hat daher deutliche Performance-Vorteile gegenüber derartigen Web-Stacks. Das macht den Microsoft-Stack zu einer guten Lösung für anspruchsvolle, komplexe Webprojekte, die sich außerdem durch hohe Besucher- und Zugriffszahlen auszeichnen.
MEAN – die moderne Architektur für Einzelseiten-Webanwendungen
Einen etwas anderen Ansatz als der klassische Web-Stack verfolgt der sogenannte MEAN-Stack. Aufgrund seiner Komponenten ist die standardmäßige Notwendigkeit verschiedener Programmiersprachen für Server (PHP etc.) und Client (JavaScript) hinfällig, da alle Elemente dieses modernen Software-Pakets JavaScript unterstützen. Ferner werden Betriebssystem und Webserver-Software zur Nebensache. Die MEAN-Bausteine sind
- die NoSQL-Datenbank MongoDB,
- das serverseitige Webapplikations-Framework Express.js,
- das clientseitige Frontend-Framework AngularJS
- und die auf der JavaScript-Laufzeitumgebung aufbauende Plattform Node.js.
Die Vorteile dieses Web-Application-Stacks sind ein extrem vereinfachter und beschleunigter Entwicklungsprozess und eine gute Skalierbarkeit des jeweiligen Projekts. Insbesondere clientorientierte Einzelseiten-Webanwendungen und mobile Apps können dank der dokumentenbasierten Übertragung der Daten im JSON-Format exzellent umgesetzt werden. Auch für den MEAN-Web-Stack gibt es einige Variationen wie MEEN (Ember.js als Frontend-Framework) oder MERN (React.js als Frontend-Framework). Eine komplett zusammengestellte und erweiterte Ausführung eines MEAN-Stacks ist die JavaScript-Plattform Meteor.
Wie Sie den geeigneten Web-Stack finden
Welches Software-Paket die beste Entwicklungs- und Laufzeitumgebung für Ihr Webprojekt darstellt, hängt von verschiedenen Faktoren ab. Während sich JavaScript-orientierte Stacks in erster Linie für die Realisierung von Einzelseiten-Anwendungen eignen, haben klassische Web-Stacks, die auf PHP, Python oder Perl basieren, klare Vorteile bei der Gestaltung von mehrseitigen Projekten. Die Programmiersprachen spielen auch generell eine große Rolle bei der Entscheidungsfindung: Sie werden in der Regel bessere Ergebnisse mit einem Web-Stack erzielen, der auf Skript- und Auszeichnungssprachen basiert, die Sie gut beherrschen.
Natürlich gilt es, bereits im Vorhinein technische Unterschiede wie Performance und Stabilität der Software-Umgebung in die Wahl miteinfließen zu lassen. Dabei sollten Sie auch die Nutzung bisher unerwähnt gebliebener Alternativ-Komponenten in Erwägung ziehen, z. B. nginx als Webserver-Software für Webprojekte mit sehr hohen Zugriffszahlen. Denn die hohe Anzahl an Web-Stack-Variationen macht deutlich: Die eine universelle Lösung gibt es nicht.