Definition: Hierarchisch gestapelte Grundstruktur im IT-Umfeld Was ist ein Stack?
Als Stack wird im IT-Umfeld eine hierarchische Grundstruktur bezeichnet, bei der mehrere einzelne Funktionskomponenten logisch übereinander gestapelt sind. Die Stacks bestehen aus unterschiedlichen Softwareelementen wie Betriebssystemen, Serversoftware, Datenbanken, Laufzeitumgebungen oder Programmiersprachen, die jeweils spezifische Aufgaben zur Bereitstellung einer Lösung erfüllen.
Anbieter zum Thema

Die deutsche Übersetzung für das englische Wort „stack“ ist „Stapel“. Grundsätzlich gibt es sehr viele unterschiedliche Arten und Bedeutungen eines Stacks in der Informationstechnik. Im IT-Umfeld ist ein Stack eine häufig verwendete hierarchische Grundstruktur. Sie besteht aus logisch übereinander gestapelten Funktionskomponenten (in der Regel Softwarekomponenten), die jeweils spezifische Rollen zur Bereitstellung einer Lösung übernehmen.
Auch das Prinzip des Stapelspeichers wird als Stack bezeichnet. Beim Stapelspeicher handelt es sich um eine dynamische Datenstruktur, in der Objekte übereinander gestapelt gespeichert werden. Um Daten wieder aus dem Stapelspeicher zu lesen, werden sie in umgekehrter Reihenfolge vom Stapel genommen. Eine alternative Bezeichnung für dieses Speicher- und Zugriffsprinzip ist „Last In First Out“ (LIFO).
Bei einem aus Softwarekomponenten bestehenden Stack, erfolgt der Informationsfluss innerhalb des Stapels von oben nach unten und von unten nach oben. Zwischen den Komponenten sind Schnittstellen definiert, über die die Informationen fließen. Häufig kommuniziert die unterste Komponente mit der Hardware und ist beispielsweise ein Betriebssystem. Oberhalb des Betriebssystems befinden sich Komponenten wie Serversoftware, Datenbanken, Compiler, Bibliotheken, Laufzeitumgebungen und anders. Sie führen jeweils spezifischen Aufgaben für die jeweilige Lösungsumgebung aus.
Für komplexe Umgebungen und Projekte bieten IT-Stacks den Vorteil, dass die Aufgaben innerhalb des Stacks jeweils einzelnen Komponenten zugewiesen sind und die Lösung dadurch eine definierte Grundstruktur besitzt. Entwickler müssen nicht alle Komponenten eines Stacks kennen und können sich auf die Arbeit mit einer einzelnen Funktionskomponente konzentrieren. Entwickler, die alle Ebenen eine Stacks abdecken, werden auch als Full-Stack-Entwickler bezeichnet. In kleineren Projekten sind häufig Full-Stack-Entwickler für die Programmierung aller Hierarchieebenen des Stapels verantwortlich.
Abhängig von der Lösung, die ein Software-Stack bereitstellt, wird er beispielsweise als Web-Stack, Cloud-Stack, Virtualisierungs-Stack oder Server-Stack bezeichnet. Bekannte Beispiele für IT-Stacks sind der LAMP-Stack (Linux, Apache Webserver, MySQL und PHP), der MEAN-Stack (MongoDB, Express.js, AngularJS und Node.js oder der Cloud-Stack Apache CloudStack.
Abgrenzung verschiedener Stack-Begriffe im IT-Umfeld und kurze Vorstellung einiger Stacks
Der Begriff Stack ist im IT-Umfeld sehr gebräuchlich. Stacks kommen in unterschiedlichen Arten und Varianten zum Einsatz. Grundsätzlich lassen sich viele Stacks der Hauptkategorie der Software-Stacks, auch Solution-Stacks oder Solution-Suites genannt, zuordnen. Ein Solution-Stack bündelt verschiedene, aufeinander aufbauende Softwarekomponenten innerhalb eines Stapels, um eine spezifische Lösung beziehungsweise eine Umgebung für eine bestimmte Aufgabe bereitzustellen. Bei dieser Aufgabe kann es sich um eine Entwicklungsaufgabe, um den Betrieb einer Web-Anwendung, um den Betrieb eines Server-Dienstes, um die Bereitstellung von Cloud-Services oder anders handeln.
Die einzelnen Softwarekomponenten erfüllen innerhalb des Stapels jeweils eine spezifische Aufgabe. Für jede Komponente ist definiert, welche Technologie sie bereitstellt und wie sie mit anderen Komponenten zusammenarbeitet. Als Ganzes bilden die einzelnen Softwarekomponenten die gewünschte Lösungsplattform.
Komponenten, aus denen ein Software- oder Solution-Stack bestehen kann, sind
- Betriebssystem,
- Serversoftware,
- Datenbank,
- Bibliotheken, Laufzeitumgebungen, Frameworks,
- Programmiersprachen,
- Compiler und anderes.
Abhängig von den verwendeten Komponenten erhalten die Software-Stacks eindeutige Namen, die sich oft aus den Anfangsbuchstaben der einzelnen Softwarekomponenten zusammensetzen.
Unterkategorien der Software-Stacks oder Solution-Stacks sind:
- Web-Application-Stack (Web-Stack),
- Server-Stack,
- Cloud-Stack und Cloud-Native-Stack,
- Virtualisierungs-Stack.
Web-Application-Stack (Web-Stack)
Ein Web-Application-Stack oder Web-Stack stellt die Plattform bereit, um Web-Anwendungen zu entwickeln oder sie zu betreiben. Der Web-Stack besteht in der Regel aus einem Betriebssystem, einer Webserversoftware, einer Datenbank und einem Interpreter für eine Skriptsprache. Oft kommen noch Programmiersprachen und andere Tools oder Anwendungen dazu.
Ein bekannter Web-Stack ist der auf Open-Source-Software basierende LAMP-Stack. Er setzt sich aus dem Betriebssystem Linux, Apache Webserversoftware, MySQL-Datenbank und PHP-Skriptsprache zusammen. Abgeleitet vom LAMP-Stack existieren viele weitere Varianten wie der WAMP-Stack (Windows, Apache Webserver, MySQL, PHP), MAMP (macOS, Apache Webserver, MySQL, PHP) oder XAMPP (beliebiges Betriebssystem, Apache, MariaDB, Perl, PHP).
Ein client- und serverseitig einsetzbarer High-Level-Web-Stack für dynamische Webseiten und Webanwendungen ist der Open-Source-basierte MEAN-Stack. Er besteht aus MongoDB, Express.js, AngularJS und Node.js.
Server-Stack
Ein Server-Stack ist ein Software-Stack, der aus verschiedenen Softwarekomponenten und -technologien zur Bereitstellung von Server-Diensten besteht. Er kommt auf physischer Server-Hardware oder auf virtuellen Server-Maschinen zum Einsatz und umfasst neben dem Server-Betriebssystem Laufzeitumgebungen, Datenbanksoftware, Programmiersprachen, Server-Anwendungen und anderes.
Cloud-Stack und Cloud-Native-Stack
Bei einem Cloud-Stack handelt es sich um eine Cloud-Management-Plattform bestehend Einzelkomponenten, die häufig auf Open-Source-Software basiert. Mit ihr lassen sich Services des privaten oder öffentlichen Cloud Computings wie Infrastructure-as-a-Service (IaaS) bereitstellen, managen und betreiben. Ein bekannter und oft angewandter Cloud-Stack ist der Apache CloudStack.
Mit einem Cloud-Native-Stack lassen sich Cloud-native Anwendungen entwickeln oder betreiben. Er besteht aus einem Stapel an Tools, mit denen sich beispielsweise viele einzelne Microservices verbinden und zu einer Anwendungslogik verknüpfen lassen.
Virtualisierungs-Stack
Ein Virtualisierungs-Stack stellt die benötigten Softwarekomponenten für virtualisierte Services, virtuelle Infrastrukturen und virtuelle Maschinen zur Verfügung. Er beinhaltet beispielsweise Hypervisoren, Virtualisierungs-Engines, Container-Engines, Management-Services, Container-Orchestrierung, User-Interfaces und anderes.
Vorteile eines (IT-)Stack
Der Einsatz eines (IT-)Stacks für die Entwicklung oder den Betrieb von Anwendungen und Services bietet zahlreiche Vorteile wie:
- Die benötigten Softwarekomponenten und Technologien zur Lösung einer bestimmten Aufgabe sind enthalten.
- Die Teilaufgaben sind fest den einzelnen Komponenten zugeordnet.
- Der Stack und die Lösung sind hierarchisch strukturiert.
- Der Informationsaustausch findet über definierte Schnittstellen statt
- Bei Verwendung offener Schnittstellen zwischen den Stack-Ebenen lassen sich einzelne Komponenten einfach austauschen.
- Entwickler können sich auf die Arbeit in einzelnen Stack-Ebenen konzentrieren und müssen sich bei komplexen Projekten nicht mit dem kompletten Stack beschäftigen.
- Viele komplett beschriebene und direkt einsetzbare Open-Source-Stacks für unterschiedliche Aufgaben sind verfügbar.

Zum Special: Definitionen rund um Cloud Computing
(ID:48032436)