MEAN vs. LAMP für Ihr nächstes Programmierprojekt

Der Übergang von modernster Neugier zu praktischem Arbeitstier ist nicht einer, den viele Technologien machen. Die frühreifen Upstarts von gestern halten ihr Versprechen von Version 0.1 oft nicht ein. Nicht so bei den Technologien, aus denen sich der stark akronymisierte MEAN-Stack zusammensetzt.

Es war erst ein paar Jahre her, dass MongoDB, Express.js, AngularJS und Node.js selbstständig die Augenbrauen hochzogen. Jetzt sind sie erwachsen geworden und haben gemeinsam ernsthafte Arbeit geleistet und nicht wenige Entwickler aus dem riesigen LAMP-Lager abgeworben. Aber wie genau kann sich dieses neue MEAN-Ding gegen LAMP behaupten? Wann ist es besser, die bewährte, ausgereifte LAMP gegenüber dieser neuen Sammlung von JavaScript-zentrierten Technologien zu wählen?

Die Antwort ist, wenn die Einfachheit und die gemeinsame Struktur Ihr Leben leichter machen. MongoDB bietet eine flexiblere, entgegenkommendere Ebene zum Speichern von Daten. Node.js bietet einen besseren Zusammenhang für die Ausführung Ihres Servers, während Express dabei hilft, die Erstellung Ihrer Websites zu standardisieren. Auf dem Client bietet Angular eine saubere Möglichkeit, interaktive Funktionen und AJAX-gesteuerte Rich-Komponenten hinzuzufügen. Fügen Sie sie alle zusammen und sie bilden einen sauberen, kohärenten Mechanismus zum Verschieben von Daten vom Benutzer zur Festplattenfarm und wieder zurück.

Die wahre Erklärung ist jedoch tiefer. Hier bieten wir neun Gründe, um MEAN bei Ihrem nächsten Projekt zu testen. Nicht jeder hat die Zeit oder das Budget, um das Alte im neuesten, trendigsten Framework herauszuwerfen und neu zu kodieren, und Sie sollten auch nicht die grundsolide Zuverlässigkeit von kampferprobten Tools wie Apache, MySQL oder PHP wegwerfen. Bei Projekten auf der grünen Wiese, die von Flexibilität, Einfachheit und Leistung profitieren könnten, kann MEAN Ihr Leben verbessern, als Sie denken.

MongoDB wurde für die Cloud entwickelt

Wenn Ihre Web-App-Pläne beinhalten, das Versprechen der Cloud für ein paar Cent pro CPU einzuhalten, bietet der MEAN-Stack eine überzeugende Datenbankebene in MongoDB. Diese moderne Datenbank ist sofort mit automatischem Sharding und vollständiger Clusterunterstützung ausgestattet. Schließen Sie MongoDB an und es verteilt sich auf Ihren Servercluster, um Failover-Unterstützung und automatische Replikation zu bieten. Angesichts der Leichtigkeit, mit der Apps in der Cloud entwickelt, getestet und gehostet werden können, gibt es wenig Grund, MongoDB für Ihr nächstes Projekt nicht in Betracht zu ziehen.

Die Struktur von MySQL ist begrenzt 

Jeder, der eine LAMP-basierte App für einen beliebigen Zeitraum entwickelt oder gewartet hat, weiß, dass sich die Stärke von MySQL als relationale Datenbank manchmal etwas inhaftiert anfühlt. Wie alle relationalen Datenbanken zwingt MySQL Sie, Ihre Daten in Tabellen zu verschieben. Dies ist kein Problem, wenn jeder einzelne Eintrag genau in das gleiche Format passt, aber wie oft ist die Welt so großzügig? Was ist, wenn zwei Personen dieselbe Adresse, aber nicht dasselbe Konto haben? Was ist, wenn Sie drei statt zwei Zeilen zur Adresse haben möchten? Wer hat nicht versucht, eine relationale Datenbank zu reparieren, indem zu viele Daten in einer einzigen Spalte zusammengefasst wurden? Oder Sie fügen am Ende noch eine weitere Spalte hinzu, und die Tabelle wächst unbegrenzt.

MongoDB hingegen bietet eine weitaus flexiblere Dokumentstruktur. Möchten Sie Ihren Benutzerprofilen neue persönliche Informationen hinzufügen? Fügen Sie das Feld einfach Ihrem Formular hinzu, rollen Sie es mit den restlichen Daten in einem JSON-Dokument zusammen und verschieben Sie es in Ihre MongoDB-Sammlung. Dies ist ideal für Projekte im Wandel und für den Umgang mit Daten, deren Einschränkung in Tabellenform sich letztendlich als schwierig erweisen kann.

Speicherplatz ist billig

Zu den großen Enthüllungen relationaler Datenbanken gehörte der Befehl JOIN. Mit JOIN können wir Speicherplatz sparen, indem wir wiederholte Felder wie Stadt, Bundesland und Postleitzahl entfernen. Durch das Speichern dieser häufig aufgerufenen und wiederholten Daten in separaten Tabellen, die über JOIN in zukünftige Ergebnisse aufgenommen werden können, halten wir unsere Datenbank aufgeräumt und unsere Festplatten schlank.

JOINs können jedoch für einige schwierig und für den Arbeitsspeicher schwierig sein, und obwohl es immer noch eine gute Idee ist, Daten in separaten Tabellen über JOINs zu isolieren und darauf zuzugreifen, muss nicht mehr so ​​viel Speicherplatz gespart werden, da die Festplatten in mehreren Terabyte gemessen werden. Der Speicherplatz ist so billig, dass einige Datenbankdesigner ihre Daten denormalisieren, weil die JOINs zu langsam sind. Sobald Sie dies getan haben, benötigen Sie nicht mehr so ​​viele relationale Datenbanken. Warum nicht stattdessen MongoDB verwenden?

Node.js vereinfacht die Serverschicht

Das Navigieren durch die verschiedenen Ebenen des LAMP-Stapels kann für viele Hüte ein schwieriger Tanz sein, bei dem Sie durch verschiedene Konfigurationsdateien mit unterschiedlicher Syntax mischen müssen. MEAN vereinfacht dies durch die Verwendung von Node.js.

Möchten Sie ändern, wie Ihre App Anfragen weiterleitet? Streuen Sie etwas JavaScript ein und lassen Sie Node.js den Rest erledigen. Möchten Sie die Logik zur Beantwortung von Fragen ändern? Verwenden Sie dort auch JavaScript. Wenn Sie URLs neu schreiben oder eine ungerade Zuordnung erstellen möchten, ist dies auch in JavaScript möglich. Das Vertrauen des MEAN-Stacks in Node.js hat diese Art von Pipework an einem Ort, in einer Sprache und in einem Stapel Logik zusammengefasst. Sie müssen die Manpages für PHP, Apache und alles, was Sie dem Stapel hinzufügen, nicht erneut lesen. Während die LAMP-Generation für alles unterschiedliche Konfigurationsdateien hat, vermeidet Node.js dieses Problem insgesamt. Alles in einer Ebene zu haben bedeutet weniger Verwirrung und weniger Chancen auf seltsame Fehler, die durch seltsame Interaktionen zwischen mehreren Ebenen entstehen.

MEAN macht Code isomorph

Die Einfachheit hört nicht bei der Verwendung von JavaScript auf dem Server auf. Wenn Sie MEAN wählen, können Sie dasselbe JavaScript auch auf dem Client genießen und die Client / Server-Schizophrenie des LAMP-Stacks hinter sich lassen. Wenn Sie Code für Node schreiben und feststellen, dass er besser in Angular platziert ist, können Sie ihn problemlos verschieben, und es ist fast sicher, dass er auf dieselbe Weise ausgeführt wird. Diese Flexibilität erleichtert die Programmierung von MEAN-basierten Apps erheblich. Wenn Sie ein Projekt besetzen, müssen Sie nicht nach einem PHP-Experten und einem JavaScript-Experten oder einem Front-End- und einem Back-End-Spezialisten suchen. Stattdessen ist alles JavaScript über den Stapel.

JSON überall

Angular und MongoDB sprechen beide JSON, ebenso wie Node.js und Express. Die Daten fließen sauber zwischen allen Ebenen, ohne sie neu zu schreiben oder neu zu formatieren. Das native Format von MySQL für die Beantwortung von Fragen ist ein eigenes. Ja, PHP verfügt bereits über den Code, um MySQL-Daten zu importieren und die Verarbeitung in PHP zu vereinfachen, aber das hilft der Client-Schicht nicht. Dies mag für erfahrene LAMP-Veteranen etwas unbedeutend sein, da es so viele gut getestete Bibliotheken gibt, die die Daten leicht konvertieren können, aber alles scheint ein bisschen ineffizient und verwirrend zu sein. MEAN verwendet überall dasselbe JSON-Format für Daten, was es einfacher macht und Zeit beim Formatieren spart, wenn es durch jede Schicht läuft. Darüber hinaus erleichtert die Allgegenwart von JSON über den MEAN-Stack die Arbeit mit externen APIs erheblich: Abrufen, Bearbeiten, Präsentieren, POSTEN und Speichern in einem Format.

Node.js ist superschnell

Apache war großartig, aber heutzutage ist Node.js oft schneller. Eine Reihe von Benchmarks zeigen, dass Node.js eine bessere Leistung bietet und gleichzeitig viel mehr leistet. Vielleicht ist es das Alter des Codes. Möglicherweise ist die ereignisgesteuerte Architektur von Node.j schneller. Es spielt keine Rolle. Gerade bei ungeduldigen Benutzern mobiler Geräte ist es heutzutage wichtig, die Leistung Ihrer App sogar um Millisekunden zu senken, und Node.js kann dies, während es einen Turing-vollständigen Mechanismus für die Neuprogrammierung bietet.

Tiefe ist wichtig

PHP-Liebhaber halten gerne an den großartigen Codebibliotheken fest, die für dominante Plattformen wie WordPress oder Drupal entwickelt wurden. Sie haben gute Gründe, stolz zu sein, aber ihre Vorteile schwinden, als Node.js aufholt.

Der Node.js-Paketmanager NPM macht das Freigeben von Code noch einfacher, und die öffentlichen Repositorys für Node.js wachsen schnell. Während die PHP-Menge zu diesem Zeitpunkt führen kann, könnte die Zukunft Node.js bevorzugen. Darüber hinaus erweisen sich etablierte Unternehmen angesichts sich ändernder Trends häufig als spröde. Jeder Versuch, eine fest verwurzelte Plattform wie Drupal mit einer neuen Version zu modernisieren, bedeutet, dass viel mehr Entwickler ihre Augen möglicherweise auf die neueren, flinkeren Plattformen richten, die um Node.js herum gebaut wurden.

Angular ist frisch

Es ist nicht gerade fair, das "A" in "MEAN" mit irgendetwas im LAMP-Stack zu vergleichen, da LAMP kein Analog enthält. Wenn Sie etwas auf der Client-Seite tun möchten, sind Sie auf sich allein gestellt. Sicher, es gibt viele gute PHP-basierte Frameworks, die mit MySQL funktionieren, aber jedes ist ein bisschen anders und bewegt sich in seine eigene Richtung. WordPress, Joomla und Drupal bieten zum Beispiel unterschiedliche Strategien, und es ist schwierig, zwischen ihnen zu wechseln, geschweige denn den Code von einem zum anderen zu portieren. Das Salben eines Client-Frameworks erhöht die Konsistenz und Stabilität.

Es hilft auch, dass Angular von Leuten mit 20 Jahren Erfahrung beim Erstellen von Web-Apps erstellt wurde. Sie wussten es gut genug, um die Designarbeit HTML und CSS zu überlassen. Sie fanden auch heraus, wie man ein bisschen JavaScript hinzufügt, um den HTML-Code zu scannen. Die Designer von Angular haben sich angesehen, was Menschen gut können, und dann das JavaScript so angepasst, dass es die Menschen unterstützt. Das Template-System und die Logikebenen sind dramatisch sauberer als bisher, auch weil das Team einfachere Möglichkeiten gefunden hat, die lokale Leistung von JavaScript zu nutzen, um zu erraten, was Sie tun.

Mischen und Anpassen

Wenn Sie wirklich wählerisch sind, gibt es natürlich keinen Grund, warum Sie es nicht ein bisschen verwechseln können. Viele Entwickler verwenden MongoDB mit Apache und PHP, andere bevorzugen MySQL mit Node.js. Angular funktioniert recht gut mit jedem Server, auch mit einem, auf dem PHP ausgeführt wird, um Daten von MySQL zu liefern. Sie müssen kein Sklave der Akronyme sein.