#development

Wie du den richtigen Stack für dein Webprojekt findest

Du startest gerade in ein neues Webprojekt und weißt nicht so ganz, welche Technologien dafür die richtigen sind? Verschaffen wir dir mal einen Überblick!

Wie du den richtigen Stack für dein Webprojekt findest
Valentin Jäch
Gründer / Human Resources bei Deckweiss

Aus technischer Sicht gibt es unzählige Herangehensweisen an ein beliebiges Webprojekt, dabei können Unmengen an Technologien verwendet werden und regelmäßig kommen neue hinzu. Welches Set an Technologien dann im Endeffekt verwendet wird, beschreibt der Stack (= Gesamtheit der einzelnen Frameworks). Um einen grundlegenden Einblick zu bekommen, werden wir hier zwei populäre Stacks behandeln, die in der Webentwicklung beliebt, oft diskutiert und grundsätzlich sehr unterschiedlich sind - LAMP und MEAN. Eins vorweg: wir nutzen im Normalfall keinen der beiden, aber dazu später mehr. Starten wir los:

LAMP

... steht für Linux, Apache, MySQL und PHP und bedeutet, dass sich LAMP aus genau diesen Technologien zusammenstellt, das heißt die Web-Applikation ist mit PHP geschrieben (um dynamische Inhalte zu ermöglichen), welches an eine MySQL Datenbank gekoppelt ist und durch einen Interpreter am Apache Web-Server ausgeführt wird, welcher wiederum auf einem Linux-System läuft. Ich traue mich zu behaupten, dass dieser Stack, der wohl bekannteste im Web ist. Warum? Alle Komponenten von Linux bis PHP sind Open-Source - frei verfügbar und (auch kommerziell) nutzbar für jede Person, ohne bei der Anschaffung und Entwicklung zwingendermaßen auf Kosten zu stoßen. Somit kann jeder, egal ob Einzelperson oder großes Unternehmen, frei über diese Technologien verfügen und diesen nach freiem Ermessen anpassen. Natürlich ist das heutzutags bei sehr vielen Technologien der Fall, aber diese hier waren in ihren Sparten oftmals die Vorreiter, das zeichnet sie aus und macht sie populär. Dieser Stack existiert außerdem schon sehr lange und ist kein Newcomer der letzten Jahre, wird aber nach wie vor fleißig weiterentwickelt und verbessert. Dadurch konnte sich über die Jahre auch schon eine gigantische Community dahinter entwickeln wodurch sehr guter Support gegeben ist. Mittlerweile gibt es auch schon einige tolle Frameworks (z.B. Symfony, Laravel für PHP), die eine tolle Bereicherung bei der Entwicklung von größeren/komplexeren Applikationen darstellen. Wie wir nachher hören werden, sind NoSQL Datenbanken bei vielen Abfragen aber schneller als die relationalen Datenbanken wie MySQL. Warum wird dann nicht MongoDB hier verwendet? Weil LAMP wie zuvor genannt für große, skalierbare Applikationen ausgelegt ist und bei denen wird oftmals großer Wert auf Struktur, Solidität und Sicherheit gelegt und da passt MySQL einfach besser rein.

Vor allem für Einsteiger ist dieser Stack aber wahrscheinlich doch etwas komplex, da man Wissen in vielen verschiedenen Bereichen benötigt und PHP zwar zum erlernen einfach ist, aber um es zu meistern und auch Patterns richtig einzusetzen doch einiges an Erfahrung benötigen kann.

MEAN

... steht für MongoDB, ExpressJS, AngularJS und NodeJS. Auf den ersten Blick sehen wir hinter allen (bis auf MongoDB) Komponenten JS - ja dieser Stack baut rein auf JavaScript auf. ExpressJS wird für das Backend verwendet, Angular für das Frontend, NodeJS stellt den Server bereit und MongoDB kümmert sich um die Datenspeicherung und Bereitstellung. Im Vergleich zu LAMP kann dieser hier als Newcomer bezeichnet werden (Erscheinungsjahr von ExpressJS war 2010, im Vergleich dazu erschien PHP 1995) und ist vor allem für Frontend-Developer, die eben schon Erfahrung mit JavaScript haben sehr einfach zu meistern und man kommt allgemein sehr schnell zu Ergebnissen. Auch die Datenbank (MongoDB) leistet einen Beitrag zur schnellen und einfachen Entwicklung, da diese eine NoSQL Datenbank ist, sprich kein Schema beinhält und bei vielen Zugriffen auf die Datenbank grundsätzlich schneller ist als MySQL.

Ebenso wie LAMP, steht dieser Stack auch frei zur Verfügung im Web. Die meisten Komponenten sind JavaScript-Packages die sehr einfach über einen Package-Manager wie NPM kostenlos heruntergeladen und installiert werden können. Leider bieten diese Technologien aber noch keine so große Community wie beispielsweise LAMP und die Frameworks entwickeln sich sehr schnell weiter, was vor allem für eine langfristige Entwicklung mühsam und aufwendig werden kann, immer am laufenden zu bleiben.

Ein wiederum sehr großer Vorteil dieses Stacks ist jedoch, dass man damit ganz einfach auch mobile Apps oder Progressive Web Apps entwickeln kann.

Der Deckweiss-Stack

Was verfolgen wir bei Deckweiss? Nun, so einfach ist das nicht zu beantworten. Vom Prinzip folgen wir eher LAMP mit einigen Abweichungen. Wir haben uns schon an die Vorteile der Cloud und die dadurch gebotene Flexibilität gewöhnt, aber wenn ich es auf unsere beliebtesten Komponenten reduzieren müsste, würde es LTMJ sein. Linux, Tomcat, MySQL und Java+Spring.

Oberflächlich betrachtet also doch ähnlich wie LAMP, im Hintergrund aber mit vielen Abweichungen und Verbesserungen auf die wir gleich eingehen, vorher aber noch die gravierenden Unterschiede.

Warum Tomcat statt Apache?

Diese Frage ist einfach zu beantworten: Apache Tomcat (ja Tomcat ist auch von der Apache Software Foundation entwickelt worden) ist ein Webserver der es erlaubt Webanwendungen, die mit Java entwickelt wurden, auszuführen, während der normale Apache HTTP Server dafür ausgelegt ist statische Inhalte wie normale HTML-Seiten auszuliefern.

Warum Java+Spring statt PHP?

Die Antwort auf diese Frage ist auch einfach: Wir lieben Java Spring. Durch das Konzept der Dependency Injection fällt es einfach, Applikationen gut zu strukturieren, Unit-Tests auszuführen und dadurch eine sehr gute Skalierung der Software zu ermöglichen. Weiters liefert Spring sehr einfache Möglichkeiten das System komplett zu individualisieren und für jeden Einsatzzweck vorzubereiten. Natürlich gibt es auch für PHP tolle Frameworks die vieles davon bieten (z.B. Laravel) und wahrscheinlich auch für den Einstieg viel besser geeignet sind, aber sobald man Spring einmal meistert, gibt es wenig Gründe wieder zu einem PHP-Framework zurück zu wechseln. Die Typsicherheit und das objektorientierte Programmieren ist mit Java deutlich einfacher und angenehmer als Entwickler.

Was steckt noch unter der Haube?

Zusätzlich zu diesen oben genannten Komponenten, können wir noch sehr stark Docker empfehlen. Durch Docker wird die Linux-Komponente mehr oder weniger abgelöst, da alle Teile der Software in Containern ausgeführt werden können und unabhängig vom zugrunde liegenden System agieren.

Wir verwenden Java+Spring auch nicht für die gesamte Applikation sondern nur für das Backend. Im Frontend kommen bei uns wie bei MEAN gängige JavaScript Frameworks wie beispielsweise VueJS zum Einsatz, da diese exakt für diesen Einsatzzweck entwickelt werden und nicht ohne Grund so beliebt sind und sehr einfach die Möglichkeit zur Entwicklung von PWAs bieten.

Was sonst noch alles zum Einsatz kommt ist oft abhängig vom Projekt und kann auch stark variieren, falls du mehr darüber wissen möchtest, kontaktiere uns einfach!

Was soll ich verwenden?

Grundsätzlich gilt: Lege dich nicht zu 100% auf eine begrenzte Zahl an Technologien fest. Sei flexibel. Zeiten ändern sich und so die Technologien, da schadet es nicht wenn man auf Zack bleibt und auch offen für neues ist und Anpassungen macht. Weiters ist noch zu beachten, dass alles immer zum Einsatzzweck passen sollte. So schön manches Framework auch sein kann, wenn es für den falschen Zweck genutzt wird, kann es sich durchaus zur Last entwickeln und manchmal ist es sogar ratsam, gar kein Framework oder nur Teile des Stacks zu nutzen um am effizientesten zum Ziel zu gelangen.

Ein paar Empfehlungen können aber schon pauschal gemacht werden. Für große Anwendungen mit  Logik dahinter und der Aussicht auf Skalierung und Erweiterung in Zukunft, eignet sich definitiv LAMP oder eine Abwandlung davon sehr sehr gut. Für Anwendungen die einmalig zum Einsatz kommen oder kleiner sind bzw. der Fokus am Frontend liegt, ist definitiv MEAN zu empfehlen. Der geringe Aufwand und die Geschwindigkeit beim Aufsetzen sprechen hier stark dafür und der Nachteil der schwächeren Skalierung kommt nicht zu tragen.

Bist du dir nach wie vor noch nicht sicher, welcher Stack zu dir und deinem Vorhaben passt? Kontaktiere mich gerne unter valentin@deckweiss.at - ich bin mir sicher, gemeinsam finden wir eine Lösung!

Artikel teilen