Ein Web-Stack oder auch Web-Ap­pli­ca­ti­on-Stack ist eine Sammlung von Software zur Rea­li­sie­rung von Websites und Web­an­wen­dun­gen. Der Begriff „Stack“ (dt. Stapel) rührt daher, dass die einzelnen Kom­po­nen­ten auf­ein­an­der aufbauen. Die minimale Ar­chi­tek­tur solcher Web-Stacks setzt sich aus einem Be­triebs­sys­tem, einem Webserver, einer Datenbank und einem Skript-In­ter­pre­ter zusammen. Mithilfe der ent­spre­chen­den Server-Hardware sorgen diese Bündel dafür, dass die not­wen­di­gen In­for­ma­tio­nen über das jeweilige Web­pro­jekt an den an­fra­gen­den Client, stan­dard­mä­ßig den In­ter­net­brow­ser, wei­ter­ge­lei­tet werden. Dieser ver­ar­bei­tet die HTML-, CSS- und Ja­va­Script-Codes und stellt das Web­an­ge­bot schließ­lich für den Endnutzer dar. Da die einzelnen Software-Kom­po­nen­ten eines Web-Stacks sehr in­di­vi­du­ell kom­bi­niert werden können, exis­tie­ren zahl­rei­che Va­ria­tio­nen, die sich für ganz un­ter­schied­li­che Ein­satz­sze­na­ri­en eignen. Die be­kann­tes­te Software-Kom­bi­na­ti­on ist das Open-Source-Bundle LAMP, das sich aus Linux, Apache, MySQL und PHP zu­sam­men­setzt.

Die Kom­po­nen­ten eines ge­wöhn­li­chen Web-Stacks

Der tra­di­tio­nel­le Web-Stack als In­fra­struk­tur für Websites und Web­an­wen­dun­gen setzt sich wie eingangs erwähnt min­des­tens aus den vier Software-Bau­stei­nen Be­triebs­sys­tem, Webserver, Datenbank und Skript-In­ter­pre­ter zusammen. Zu­sätz­lich können die Stacks durch Frame­works, weitere Pro­gram­mier­spra­chen, Proxy-Server oder diverse Ana­ly­se­pro­gram­me ergänzt werden. Die Grund­kom­po­nen­ten kurz erläutert:

Be­triebs­sys­tem

Das Be­triebs­sys­tem ist die zentrale Schnitt­stel­le zwischen der zu­grun­de­lie­gen­den Server-Hardware (Prozessor, Ar­beits­spei­cher, Webspace) und den anderen ein­ge­setz­ten Software-Kom­po­nen­ten. Genauer gesagt greift das Be­triebs­sys­tem auf die Hardware-Res­sour­cen zurück, um die Funk­tio­na­li­tät der einzelnen An­wen­dun­gen, vor allem des Web­ser­vers, zu ge­währ­leis­ten. Mögliche Systeme, auf denen ein Web-Stack aufbauen kann, sind diverse Linux-, Windows-, Unix- und Mac-OS-Dis­tri­bu­tio­nen.

Webserver

Der Webserver ist eine auf dem Be­triebs­sys­tem in­stal­lier­te Software, die Dokumente an den an­fra­gen­den Client aus­lie­fert. Mithilfe des HTTP-Über­tra­gungs­pro­to­kolls wird dem Webserver die Anfrage des Clients über­mit­telt. Handelt es sich bei den an­ge­for­der­ten Do­ku­men­ten um statische Inhalte wie HTML-Dateien oder Bilder, ver­ar­bei­tet der Webserver diese Anfrage direkt, indem er dem Client die ent­spre­chen­den Daten aus­lie­fert. Dy­na­mi­schen Content kann er hingegen nur mithilfe von Da­ten­ban­ken und Skript-Modulen wie­der­ge­ben. Zu den am häu­figs­ten genutzten Webserver-Lösungen zählen Apache, Microsoft IIS und nginx.

Datenbank

In Da­ten­bank­sys­te­men, die ver­ein­facht auch als Da­ten­ban­ken be­zeich­net werden, sind die für das Web­pro­jekt re­le­van­ten Da­ten­men­gen effizient und dauerhaft ge­spei­chert, sodass der Webserver im ent­schei­den­den Moment darauf zugreifen kann. Dazu stellt er mithilfe von Ser­ver­er­wei­te­run­gen Anfragen, die von der Datenbank ver­ar­bei­tet und wieder an die Er­wei­te­run­gen zu­rück­ge­ge­ben werden. Diese ge­ne­rie­ren aus dem Ergebnis der Anfrage ein ge­eig­ne­tes Aus­ga­be­for­mat wie HTML und leiten es an den Webserver weiter. Die Wahl der Datenbank ist eng an Webserver-Software und ver­wen­de­te Skript- und Internet-Pro­gram­mier­spra­chen geknüpft. Häufig zum Einsatz kommen u. a. Oracle, MySQL und MongoDB.

Skript-In­ter­pre­ter

Ohne Skript­spra­chen ist die Webserver-Software nicht dazu in der Lage, dy­na­mi­sche Websites und Web­an­wen­dun­gen zu rea­li­sie­ren. Zum einen sind Skript-In­ter­pre­ter daher cli­ent­sei­tig, d. h. im an­fra­gen­den Browser im Einsatz, zum anderen finden bestimmte Kal­ku­la­ti­ons­pro­zes­se zur Dar­stel­lung der Seiten auch bereits durch ser­ver­sei­ti­ges Skripting statt. Der typische Web-Stack-Skript-In­ter­pre­ter ist PHP, es gibt aber auch einige weniger ver­brei­te­te Al­ter­na­ti­ven wie ASP.NET, Java, Ruby, Perl oder Python.

Das sind die be­lieb­tes­ten Web-Stack-Lösungen

Eine ganze Reihe von Software-Stacks hat sich für den Einsatz bei der Web­ent­wick­lung bewährt. Die stei­gen­den An­for­de­run­gen an die Nut­zer­freund­lich­keit, Sta­bi­li­tät, Er­wei­ter­bar­keit und Ska­lier­bar­keit der immer komplexer werdenden Web­an­wen­dun­gen hat dabei in den ver­gan­ge­nen Jahren dazu geführt, dass das klas­si­sche Web-Stack-Modell immer seltener als Grundlage dient. Ja­va­Script spielt mitt­ler­wei­le auch ser­ver­sei­tig eine große Rolle: So ver­spre­chen bei­spiels­wei­se auf der Ja­va­Script-Plattform Node.js ba­sie­ren­de Web-Ap­pli­ca­ti­on-Stacks eine einfache Pro­gram­mie­rung per­for­man­ter Web­pro­jek­te – sie sind daher längst keine Rarität mehr. Drei besonders beliebte Stacks und deren Ein­satz­mög­lich­kei­ten:

LAMP – der Klassiker

LAMP ist wie schon erwähnt der be­kann­tes­te Web-Stack. Als einer der ersten Stacks überhaupt stellte er lange Zeit das optimale Paket für Web­pro­jek­te dar. Mit

  • Linux als Be­triebs­sys­tem,
  • Apache als Webserver,
  • einer MySQL-Datenbank
  • und dem Skript-In­ter­pre­ter PHP

sind alle ein­ge­setz­ten Kom­po­nen­ten Open-Source-Software mit freier Lizenz und damit nicht nur beliebig ver­än­der­bar, sondern auch kostenlos verfügbar. Dennoch konnte LAMP von Beginn an mit ver­gleich­ba­ren pro­prie­tä­ren Lösungen mithalten und kam bei­spiels­wei­se zur Ent­wick­lung von MediaWiki, der Wikipedia-Software, zum Einsatz. Das LAMP-Paket eignet sich her­vor­ra­gend zur Umsetzung mehr­sei­ti­ger dy­na­mi­scher Websites. Als Nutzer pro­fi­tie­ren Sie dabei vor allem von der großen Community, aus­führ­li­chen Tutorials und der Mög­lich­keit, PHP sowie leis­tungs­star­ke Tools wie phpMy­Ad­min ein­zu­set­zen.

Aufgrund des stetigen tech­ni­schen Fort­schritts und der Ent­wick­lung neuer freier Software gibt es diverse Va­ria­tio­nen des LAMP-Stacks, in denen die her­kömm­li­chen Kom­po­nen­ten teilweise ersetzt wurden. Einige der be­kann­tes­ten sind:

  • WAMP (Windows als Be­triebs­sys­tem)
  • MAMP (Mac OS X als Be­triebs­sys­tem)
  • XAMPP (Be­lie­bi­ges Be­triebs­sys­tem, Perl und PHP als Skript-In­ter­pre­ter; dazu ein platt­form­un­ab­hän­gi­ger FTP-Server)
  • LAPP (Post­greS­QL als Datenbank für En­ter­pri­se-Projekte)

Seit der Ver­öf­fent­li­chung der MySQL-Ab­spal­tung MariaDB kann das M auch für dieses per­for­man­te­re Da­ten­bank­sys­tem stehen. Aus­führ­li­che In­for­ma­tio­nen über den LAMP-Stack und dessen In­stal­la­ti­on erhalten Sie im ver­tie­fen­den Artikel „LAMP-Server: eine preis­wer­te Lösung für dy­na­mi­sche Websites“.

WISA – der Microsoft-Stack

Anders als beim LAMP-Stack, dessen einzelne Kom­po­nen­ten prin­zi­pi­ell nicht ent­wi­ckelt wurden, um zu­sam­men­zu­ar­bei­ten, pro­gram­mier­te Microsoft die Be­stand­tei­le des WISA-Stacks eben zu diesem Zweck, was die optimale Funk­ti­ons­wei­se des Software-Pakets ga­ran­tiert. Die ein­ge­setz­te Software ist dabei lo­gi­scher­wei­se pro­prie­tär, weshalb ent­spre­chen­de Lizenzen zur Nutzung erworben werden müssen. Gleich­zei­tig können sich Nutzer aber auch auf die um­fas­sen­den Sup­port­leis­tun­gen des Software-Giganten verlassen. Der Web-Stack aus dem Hause Microsoft setzt sich aus

  • dem Be­triebs­sys­tem Windows Server,
  • der Webserver-Software Internet In­for­ma­ti­on Services (IIS),
  • dem re­la­tio­na­len Da­ten­bank­ma­nage­ment­sys­tem SQL Server
  • sowie der Pro­gram­mier­spra­chen-Bi­blio­thek ASP.NET

zusammen. Dank der ASP.NET-Bi­blio­thek können Web­pro­jek­te auf Basis von Visual C# oder Visual Basic.NET pro­gram­miert werden, die sich mithilfe eines Compilers direkt vom System ausführen lassen. WISA setzt also nicht den Einsatz eines Skript-In­ter­pre­ters voraus und hat daher deutliche Per­for­mance-Vorteile gegenüber der­ar­ti­gen Web-Stacks. Das macht den Microsoft-Stack zu einer guten Lösung für an­spruchs­vol­le, komplexe Web­pro­jek­te, die sich außerdem durch hohe Besucher- und Zu­griffs­zah­len aus­zeich­nen.

MEAN – die moderne Ar­chi­tek­tur für Ein­zel­sei­ten-Web­an­wen­dun­gen

Einen etwas anderen Ansatz als der klas­si­sche Web-Stack verfolgt der so­ge­nann­te MEAN-Stack. Aufgrund seiner Kom­po­nen­ten ist die stan­dard­mä­ßi­ge Not­wen­dig­keit ver­schie­de­ner Pro­gram­mier­spra­chen für Server (PHP etc.) und Client (Ja­va­Script) hinfällig, da alle Elemente dieses modernen Software-Pakets Ja­va­Script un­ter­stüt­zen. Ferner werden Be­triebs­sys­tem und Webserver-Software zur Ne­ben­sa­che. Die MEAN-Bausteine sind

  • die NoSQL-Datenbank MongoDB,
  • das ser­ver­sei­ti­ge Web­ap­pli­ka­ti­ons-Framework Express.js,
  • das cli­ent­sei­ti­ge Frontend-Framework AngularJS
  • und die auf der Ja­va­Script-Lauf­zeit­um­ge­bung auf­bau­en­de Plattform Node.js.

Die Vorteile dieses Web-Ap­pli­ca­ti­on-Stacks sind ein extrem ver­ein­fach­ter und be­schleu­nig­ter Ent­wick­lungs­pro­zess und eine gute Ska­lier­bar­keit des je­wei­li­gen Projekts. Ins­be­son­de­re cli­ent­ori­en­tier­te Ein­zel­sei­ten-Web­an­wen­dun­gen und mobile Apps können dank der do­ku­men­ten­ba­sier­ten Über­tra­gung der Daten im JSON-Format exzellent umgesetzt werden. Auch für den MEAN-Web-Stack gibt es einige Va­ria­tio­nen wie MEEN (Ember.js als Frontend-Framework) oder MERN (React.js als Frontend-Framework). Eine komplett zu­sam­men­ge­stell­te und er­wei­ter­te Aus­füh­rung eines MEAN-Stacks ist die Ja­va­Script-Plattform Meteor.

Wie Sie den ge­eig­ne­ten Web-Stack finden

Welches Software-Paket die beste Ent­wick­lungs- und Lauf­zeit­um­ge­bung für Ihr Web­pro­jekt darstellt, hängt von ver­schie­de­nen Faktoren ab. Während sich Ja­va­Script-ori­en­tier­te Stacks in erster Linie für die Rea­li­sie­rung von Ein­zel­sei­ten-An­wen­dun­gen eignen, haben klas­si­sche Web-Stacks, die auf PHP, Python oder Perl basieren, klare Vorteile bei der Ge­stal­tung von mehr­sei­ti­gen Projekten. Die Pro­gram­mier­spra­chen spielen auch generell eine große Rolle bei der Ent­schei­dungs­fin­dung: Sie werden in der Regel bessere Er­geb­nis­se mit einem Web-Stack erzielen, der auf Skript- und Aus­zeich­nungs­spra­chen basiert, die Sie gut be­herr­schen.

Natürlich gilt es, bereits im Vorhinein tech­ni­sche Un­ter­schie­de wie Per­for­mance und Sta­bi­li­tät der Software-Umgebung in die Wahl mit­ein­flie­ßen zu lassen. Dabei sollten Sie auch die Nutzung bisher unerwähnt ge­blie­be­ner Al­ter­na­tiv-Kom­po­nen­ten in Erwägung ziehen, z. B. nginx als Webserver-Software für Web­pro­jek­te mit sehr hohen Zu­griffs­zah­len. Denn die hohe Anzahl an Web-Stack-Va­ria­tio­nen macht deutlich: Die eine uni­ver­sel­le Lösung gibt es nicht.

Zum Hauptmenü