Softwaretechnologie im Multipack Was ist ein Software-Stack?
Ein Software-Stack (Solution-Stack oder auch nur Stack genannt) ist ein Stapel von auf einander aufbauenden Softwarepaketen, um als Plattform die Ausführung einer gemeinsamen Anwendung zu unterstützen. Häufig eingesetzte Stacks werden oft mit einer Abkürzung wie „LAMP“ oder „MEAN“ bezeichnet.
Anbieter zum Thema

Ein Software-Stack kann aus einzelnen Komponenten, zum Beispiel Betriebssystem, Web-Server-Technologie und Laufzeitumgebung, Programmiersprachen und -werkzeugen wie Compiler, Anwendungen für die Datenpersistenz wie Datenbanken, PHP-Frameworks, Bibliotheken und Schnittstellen bestehen.
Diese Komponenten werden in einer Hierarchie übereinander gestapelt. Die unterste Schicht steht meist an erster Stelle der Plattform. Dabei handelt es in der Regel um das Betriebssystem, manchmal auch um eine spezifische Laufzeitumgebung. Darauf könnten ein Web-Server, eine Datenbank und dann eine Laufzeitumgebung folgen.
Funktion von Software-Stacks
Meist kommunizieren die Komponenten im untergeordneten Teil des Stapels mit der Hardware, während der übergeordnete Teil spezifische Aufgaben für den Nutzer ausführt. Die Komponenten interagieren direkt mit der Anwendung über eine Reihe komplexer Anweisungen, die den Stapel durchlaufen.
Ein Software-Stack verweist also immer darauf, welche Softwarepakte eine Anwendung mindestens erfordert, um die gewünschten Funktionen auszuführen. Das Resultat ist zum Beispiel eine Plattform, auf der eine Webseite bereitgestellt werden kann. Einige Software-Stacks haben sich quasi als Standard für bestimmte Aufgabenstellungen etabliert.
Somit existieren für diese speziellen Kombinationen von Komponenten inzwischen feste Bezeichnungen wie zum Beispiel LAMP oder MEAN. Diese Namen sind ein Akronym für die Technologien, die im Allgemeinen in dem jeweiligen Stack integriert sind.
Software-Stack MEAN
MEAN (MongoDB, Express, Angular und Node) ist beispielsweise ein Stack von Entwicklungswerkzeugen, die dafür bekannt sind, Sprachbarrieren zu beseitigen, die bei der Software-Entwicklung auftreten. In einem MEAN-Stack bilden MongoDB und ein NoSQL-Dokumenten-Datenspeicher die Grundlage. Der HTTP-Server ist Express und Angular liefert das Framework für Front-End-JavaScript. Die oberste Ebene des Stapels ist Node, eine Plattform für serverseitiges Scripting.
MEAN hat viele Vorteile: Es unterstützt das MVC-Muster, verwendet das native JSON von NoSQL für die Datenübertragung, bietet Zugriff auf die JavaScript-Modulbibliothek von Node.js und ist Open Source. Dank der Flexibilität von AngularJS ist es auch „mobil“ und kann problemlos JS-Test-Frameworks integrieren.
MEAN-Stacks eignen sich hervorragend für Unternehmen, die mit ihrer IT agil und skalierbar sein möchten. Der Hauptvorteil ist aber die einheitliche Sprache. Durch die Verwendung von Javascript können Entwickler, die auf der Client-Seite arbeiten, den Server-seitigen Code verstehen. Durch den Wechsel zu einer dokumentenbasierten NoSQL-Datenbank wird weniger Zeit für das Schreiben von SQL aufgewendet, die Strukturierung der Daten wird flexibler und die Produktivität des Teams wird langfristig gesteigert.
Software-Stack LAMP
Ein bekannter Software-Stack für die Web-Entwicklung ist LAMP (Linux, Apache, MySQL, PHP). Die unterste Schicht der Stack-Hierarchie bildet ein Linux-Betriebssystem. Die oberste Ebene der Hierarchie ist die Skriptsprache - in diesem Fall PHP. („P“ kann auch für die Programmiersprachen Python oder Perl stehen.)
Die LAMP-Stacks erfreuen sich großer Beliebtheit, da alle Komponenten auf Open Source basieren und auf Standard-Hardware ausgeführt werden können. Im Gegensatz zu monolithischen Software-Stacks, die häufig eng miteinander verbunden sind und häufig für ein bestimmtes Betriebssystem erstellt wurden, ist ein LAMP-Stack lose miteinander verbunden.
LAMP gilt als flexibel, anpassbar, einfach zu entwickeln und einfach bereitzustellen. Der LAMP-Stack verfügt über eine riesige Support-Community, da es zu Open Source gehört. SQL-Datenbanken eignen sich auch hervorragend zum Organisieren großer Mengen hochstrukturierter Daten.
Aufgabenteilung durch Stacks
Bei größeren Projekten arbeitet oftmals nicht jeder Entwickler an allen Ebenen des Stacks. Meist sind sie auf bestimmte Aufgabenbereiche spezialisiert. Somit können mehrere Entwickler mit unterschiedlichen Stärken in verschiedenen Bereichen eines Stacks an einem gemeinsamen Ziel arbeiten. Bei kleineren Projekten ist das meist anders. Hier muss ein Entwickler häufig alleine an einer Anwendung und daher in jedem Bereich des Stacks programmieren. Solche Entwickler nennt man dann Full-Stack-Entwickler.
(ID:45967444)