Definition „Software Stack“ Was ist ein Solution Stack?

Autor / Redakteur: chrissikraus / Stephan Augsten

Der Software- oder Solution-Stack beschreibt genau, welche Technologien in welcher Kombination zusammenarbeiten müssen, um eine spezialisierte Plattform für bestimmte Anwendungen zu bilden. Dies reicht in der Regel vom Betriebssystem bis hin zu den benötigten Programmiersprachen.

Anbieter zum Thema

Der Stack defniert sich durch die Komponenten, die für die Erstellung und den Betrieb einer Software benötigt werden.
Der Stack defniert sich durch die Komponenten, die für die Erstellung und den Betrieb einer Software benötigt werden.
(Collage: Mysticsartdesign / Bru-nO - Pixabay.com / CC0 )

Ein Software Stack oder Solution Stack fasst alle Softwarekomponenten zusammen, aus denen eine spezifische Plattform besteht. Dieses Programmpaket liefert eine fest strukturierte Konfiguration an Technologien, die zum Ausführen einer Anwendung benötigt wird. In der Regel ist der Stack aus mehreren unterschiedlichen Komponenten zusammengebaut. Dazu können folgende Komponenten gehören:

  • Betriebssystem
  • (Web-)Servertechnologie
  • Datenbanktechnologie
  • Laufzeitumgebung / Frameworks
  • Programmiersprachen

An erster Stelle steht normalerweise die unterste Schicht der Plattform, auf der alle weiteren Komponenten aufbauen. Häufig handelt es sich um das Betriebssystem, manchmal auch um eine spezifische Laufzeitumgebung oder ähnliches. Darauf folgt beispielsweise eine Webservertechnologie, dann eine Datenbanktechnologie, dann eine Laufzeitumgebung.

Ein Stack gibt also immer Auskunft darüber, welche Technologien eine Anwendung mindestens benötigt, um fehlerfrei zu funktionieren. Das Ergebnis ist zum Beispiel eine Plattform, auf der eine Webseite bereitgestellt werden kann.

Etablierte Stacks vereinfachten Kommunikation

Es gibt einige Software Stacks, die sich als praktische und elegante Lösung für bestimmte Szenarien erwiesen haben. Sie haben sich als eine Art Standard für gewisse Anwendungsfälle etabliert und sind entsprechend weit verbreitet. Daher gibt es für diese speziellen Kombinationen inzwischen feste Namen, zum Beispiel XAMPP, LAMP oder WINS. Diese Namen sind meist ein mehr oder weniger exaktes Akronym für die Technologien, die im Allgemeinen an dem jeweiligen Stack beteiligt sind.

Beispiele bekannter Stacks:

XAMPP:

  • Betriebssystem: Cross("X")-Plattform
  • Webserver: Apache
  • Datenbank: MariaDB / MySQL
  • Programmiersprache: PHP
  • Programmiersprache: Perl (bzw. Python)

LAMP / WAMP:

  • Betriebssystem: Linux (LAMP) / Windows (WAMP)
  • Webserver: Apache
  • Datenbank: MariaDB / MySQL
  • Programmiersprachen: PHP / Perl / Python

WINS:

  • Betriebssystem: Windows Server
  • Webserver: Internet Information Services
  • Framework: .NET
  • Datenbank: SQL Server

Wenn also beispielsweise die Rede von WINS ist, weiß jeder Entwickler auch ohne langatmige Erklärung, dass es sich um ein .NET-Projekt handelt, das auf einem System mit Windows Server und IIS ausgeführt wird und SQL Server als relationales DBMS nutzt. Es ist direkt ersichtlich, welche Frameworks und Software benötigt wird, um die entsprechende Anwendung auszuführen.

Implizit lassen sich häufig weitere Informationen abschätzen, zum Beispiel, welche Programmiersprachen und Entwicklungsumgebungen für das Projekt infrage kommen. Da WINS das .NET-Framework von Microsoft nutzt, könnte es sich um ein Projekt handeln, das in Visual Studio erstellt wurde und in C#, F# oder VB.NET programmiert wurde.

Aufgabenteilung per Software Stack

Vor allem bei größeren Projekten arbeitet ein einzelner Entwickler nicht gleichzeitig mit allen Teilen des Stacks, sondern ist auf einen bestimmten Teil konzentriert. Meist ist er stark auf diesen Aufgabenbereich spezialisiert und kennt sich besonders gut mit den damit verbundenen Technologien und Vorgehensweisen aus. Mehrere Entwickler mit verschiedenen Kompetenzen arbeiten in unterschiedlichen Bereichen des Stacks auf ein gemeinsames Ziel hin.

Für solche Projekte muss der einzelne Entwickler also theoretisch nur die Technologien beherrschen, die in seinen Aufgabenbereich fallen. Im Team könnten zum Beispiel ein Datenbank-Entwickler, ein Backend-Entwickler und ein Frontend-Entwickler gemeinsam an den jeweiligen Teilbereichen einer Webseite arbeiten.

Wenn eine Person nicht ausschließlich auf einen Bereich spezialisiert ist, sondern bei Bedarf an jedem beliebigen Teil des Stacks vollwertig arbeiten könnte, spricht man daher von einem Full Stack Entwickler, Einzelunternehmer oder Programmierer von kleinen Projekten müssen zum Beispiel häufig weitestgehend alleine an einer Anwendung arbeiten und deshalb den gesamten Software Stack selbst abdecken.

(ID:45620021)