|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Node.js
Was ist Node.js?
Node.js ist eine plattformübergreifende Open-Source-Laufzeitumgebung und ein Framework zum Ausführen von Webanwendungen außerhalb des Browsers des Clients.
Dabei handelt es sich um eine serverseitige Programmiersprache, die vor allem für ereignisgesteuerte Server wie Standard-Websites und Back-End-API-Dienste verwendet wird. Bei der Erstellung ging es jedoch darum, eine Echtzeit-Push-basierte Architektur zu entwickeln. Jeder Browser verfügt über eine eigene JS-Engine, und node.js ist eine davon. Die V8-JavaScript-Engine in Google Chrome wird für Node.js verwendet. Ist es nicht etwas kompliziert?
Im Grunde bedeutet dies, dass ganze Websites auf einem einzigen „Stack“ ausgeführt werden können, sodass Sie sich auf die Erreichung der Geschäftsziele des Projekts konzentrieren können und nicht auf Entwicklung und Wartung.
Da Node.js Open Source ist, kann es kostenlos verwendet werden und wird von einer weltweiten Entwickler-Community kontinuierlich aktualisiert und erweitert.
Ein entscheidender Punkt, den man bei Node.js verstehen sollte, ist, dass es sich tatsächlich weder um ein Framework noch um eine Bibliothek wie bei herkömmlicher Anwendungssoftware handelt, sondern um eine Laufzeitumgebung.
Eine Laufzeitumgebung (auch RTE genannt) ist eine Sammlung von Web-APIs, die ein Entwickler zum Erstellen von Code verwenden kann, sowie eine JavaScript-Engine, die diesen Code analysiert. Dadurch ist es leicht, vielseitig und einfach bereitzustellen, was zur Optimierung und Beschleunigung Ihres Anwendungsprojekts beiträgt.
Die grundlegende Node.js-Architektur
Die Architektur von Node.js macht es bei Programmierern sehr beliebt. Im Gegensatz zu den meisten anderen Laufzeitumgebungen, die Multithread-Verarbeitungsmodelle verwenden, erledigt Node.js alles in einem einzigen Thread.
In Multithread-Verarbeitungskonfigurationen verfügt jeder Server über einen eingeschränkten Thread-Pool, auf den er zugreifen kann. Wenn ein Server daher eine Anfrage erhält, wählt er einen Thread aus dem Pool aus und weist ihn dieser Anfrage zu, um die Verarbeitung abzuwickeln. Die Verarbeitung erfolgt in diesem Szenario synchron und sequentiell, was bedeutet, dass jeweils nur ein Vorgang ausgeführt wird.
Bei der Verwendung mehrerer Threads wird für jede Anfrage ein Thread ausgewählt, bis alle Threads aufgebraucht sind. In diesem Fall muss der Server darauf warten, dass ein Thread, der jetzt zu beschäftigt ist, wieder verfügbar wird. Dies kann zu trägen und ineffizienten Apps führen, was negative Folgen haben kann, die vom Kundenerlebnis bis hin zu Lead-Konvertierungen reichen. Dies ist besonders problematisch, wenn Ihr Programm eine große Anzahl gleichzeitiger Clientanforderungen verarbeiten muss.
Node.js hingegen arbeitet auf einem einzelnen Thread. Der Unterschied zwischen den beiden besteht darin, dass man von Single-Thread-Architekturen erwarten kann, dass sie Ereignisschleifen verwenden, um blockierende Eingabe-/Ausgabeaktivitäten auf nicht blockierende Weise durchzuführen. Machen Sie sich keine Sorgen, wenn Ihnen einer dieser Ausdrücke fremd ist.
Im Prinzip kann ein Single-Thread-Design schneller und effektiver funktionieren und wachsen als Multi-Thread-Konfigurationen. Genau das hatte Ryan Dahl im Sinn, als er Node.js entwickelte, und das ist einer der Gründe, warum es bei Web-App-Entwicklern so beliebt ist.
Beispiele für Anwendungen, die mit Node.js entwickelt wurden
Hier sind einige detailliertere Fallstudien, die Ihnen helfen sollen, die realen Anwendungen und kommerziellen Anwendungen der Technologie zu verstehen.
Netflix
Netflix ist der beliebteste Streaming-Medien- und Video-on-Demand-Dienst der Welt. Es handelt sich um eine datengesteuerte Plattform, die umfangreiche A/B-Tests einsetzt, um ihren über 195 Millionen Abonnenten weltweit ein umfassendes Erlebnis zu bieten.
Die Schwierigkeit bedingter Abhängigkeiten und der App-Skalierbarkeit wird durch die große Anzahl einzigartiger Pakete verschärft, die in jedem Push-Zyklus veröffentlicht werden. Aus diesem Grund entschied sich das Unternehmen für Node.js, das leichtgewichtig und schnell ist. Eines der bedeutendsten Ergebnisse war eine Verkürzung der Ladezeit um 70 %.
Bei der Umstellung seines mobilen App-Backends von Ruby on Rails auf Node.js vertraute auch LinkedIn, die weltweit größte geschäfts- und beschäftigungsorientierte Social-Networking-Site, auf Node.js.
Obwohl es sich damals noch um eine recht unausgereifte Laufzeitumgebung handelte, erwies es sich als kluge Entscheidung. Die neue App war 2-10 Mal schneller als die vorherige und außerdem recht leicht. Darüber hinaus war die Entwicklungszeit kurz.
NASA
Ja, das ist richtig. Node.js wird auch von der NASA verwendet.
Die Technologie ist bei dieser Anwendung weitaus wichtiger als bei anderen, da sie Leben rettet, indem sie die Sicherheit der Astronauten während ihrer gefährlichen Weltraummissionen gewährleistet.
Nach einem beinahe tödlichen Unfall, der durch ineffiziente Datenspeicherung an mehreren Standorten verursacht wurde, stand die NASA vor der Aufgabe, Daten zu EVA-Raumanzügen in einer einzigen Cloud-Datenbank zu konsolidieren, um die Zugriffszeiten zu minimieren. Das neue Node.js-basierte System reduzierte die Anzahl der Schritte im Prozess von 28 auf 7.
Walmart
Walmart ist der größte Einzelhändler der Welt und dringt in das Internet-Shopping-Geschäft vor. Trotz der damit verbundenen Risiken ist das Unternehmen auf die Arbeit mit Node.js aufgesprungen, einer relativ neuen und äußerst beliebten Technologie.
Auf Kundenseite hat das Unternehmen die mobile App so umgestaltet, dass sie komplexe Funktionen enthält. Walmart lobte Node.js für seine asynchronen I/O- und Single-Threaded-Event-Loop-Architekturen, die es ihm ermöglichten, mehrere gleichzeitige Abfragen zu verwalten.
Offene Finanzen (OpenFi)
OpenFi, kurz für „Open Finance“, ist ein Finanzrahmen, der traditionelle Finanzen (TradFi) mit dezentralen Finanzen (DeFi) integriert. |
Mehrfache Datenverfügbarkeit (MultiDA)
Diese Blockchain-Architektur nutzt mehr als einen Datenverfügbarkeitsdienst (Data Availability, DA), um Datenredundanz sicherzustellen. |