Vorwort

In den letzten zehn Jahren hat sich Node.js von einer Neuheit zur De-facto-Plattform für neue Anwendungen entwickelt. In dieser Zeit hatte ich die Gelegenheit, Tausenden von Node.js-Entwicklern aus aller Welt zu helfen, sich zu orientieren und ihren Weg zum Erfolg zu finden. Ich habe gesehen, dass Node.js für alles verwendet wird. Wirklich: Jemand hat sogar ein bootfähiges Low-Level-Betriebssystem mit Node.js gebaut.

Bei dem von mir ins Leben gerufenen SFNode-Meeting in San Francisco haben wir einen Starredner, der mehr als jeder andere gesprochen hat. Du hast es erraten: Thomas Hunter II, der Autor dieses Buches. Du kannst zwar alles mit Node.js machen, aber es gibt einige wirklich praktische Dinge, die besonders davon profitieren, mit Node.js gemacht zu werden. In der heutigen Cloud-First-Welt sind die meisten Systeme zu verteilten Systemen geworden. In diesem Buch und in den unzähligen Vorträgen, die ich bei SFNode und auf der ganzen Welt erleben durfte, steht der Pragmatismus an erster Stelle. Dieses Buch ist voll von erfahrungsgeprüften, praktischen Anleitungen, die dich von dort, wo du heute bist, dorthin bringen, wo du morgen sein musst.

Die Sprache JavaScript ermöglicht es uns Entwicklern, mit der Geschwindigkeit unserer Gedanken zu arbeiten. Sie erfordert wenig Zeremonie und der Code, den wir schreiben, ist normalerweise so einfach, dass es effizienter ist, ihn von Hand zu schreiben, als ihn zu generieren. Diese wunderbare Einfachheit von JavaScript ist perfekt auf Node.js abgestimmt. Node, wie wir es häufig nennen, ist absichtlich minimalistisch. Ryan Dahl, der Schöpfer von Node, schrieb Node, um einen Anwendungsserver zu bauen, der um Größenordnungen einfacher und schneller ist als das, was man bisher gewohnt war. Die Ergebnisse haben selbst unsere kühnsten Träume übertroffen. Die Leichtigkeit und Einfachheit von Node.js ermöglicht es dir, auf eine Art und Weise zu erstellen, zu validieren und zu innovieren, die vor 10 Jahren noch nicht möglich war.

Bevor ich Node.js hatte, war ich ein Full-Stack-Entwickler, der JavaScript zur Erstellung interaktiver webbasierter Erlebnisse und Java zur Bereitstellung von APIs und Backend-Diensten verwendete. Ich genoss den kreativen Fluss von JavaScript und musste dann einen anderen Gang einlegen, um das Ganze in ein Objektmodell für Java zu übersetzen. Was für eine Zeitverschwendung! Als ich Node.js entdeckte, konnte ich endlich effizient und effektiv sowohl auf dem Client als auch auf dem Server iterieren. Ich ließ buchstäblich alles stehen und liegen, verkaufte mein Haus und zog nach San Francisco, um mit Node.js zu arbeiten.

Ich habe Systeme zur Datenaggregation, Social-Media-Plattformen und Videochats entwickelt - alles mit Node.js. Dann habe ich Netflix, PayPal, Walmart und sogar der NASA geholfen, die Plattform effektiv zu nutzen. Die JavaScript-APIs waren für die wenigsten die größte Herausforderung. Was die Leute am meisten verwirrte, war das asynchrone Programmiermodell. Wenn du die Werkzeuge, die du benutzt, nicht verstehst, wie kannst du dann erwarten, dass du mit diesen Werkzeugen die besten Ergebnisse erzielst? Bei der asynchronen Programmierung musst du mehr wie ein Computersystem denken und nicht wie ein lineares Skript mit aufeinanderfolgenden Aktionen. Diese Asynchronität ist der Herzschlag eines guten verteilten Systems.

Als Thomas mich bat, das Inhaltsverzeichnis des Buches durchzusehen, um sicherzustellen, dass er alles abgedeckt hat, fiel mir auf, dass der Abschnitt über Skalierung mit einem Überblick über das Cluster-Modul beginnt. Ich habe das sofort als Problembereich markiert. Cluster wurde entwickelt, um die Gleichzeitigkeit einzelner Instanzen zu ermöglichen, die an einem einzigen Port eines Systems angeschlossen werden können. Ich habe erlebt, dass Leute, die neu in Node.js sind, davon ausgehen, dass Cluster das richtige Werkzeug für ihre Bedürfnisse ist, da Gleichzeitigkeit wünschenswert ist. In verteilten Systemen ist Gleichzeitigkeit auf der Instanzebene normalerweise Zeitverschwendung. Der Zufall wollte es, dass Thomas und ich auf der gleichen Seite waren, was zu einem tollen Vortrag unseres Top-Referenten bei SFNode führte.

Wenn du also deine Fähigkeiten als Node.js-Entwickler/in und als Entwickler/in verteilter Systeme ausbaust, solltest du dir Zeit nehmen, um die Einschränkungen und Möglichkeiten deines Systems zu verstehen. Node.js hat unglaublich leistungsstarke I/O-Fähigkeiten. Ich habe schon erlebt, dass nachgelagerte Systeme überfordert waren, als alte Dienste entfernt und durch Node.js-Implementierungen ersetzt wurden. Diese Systeme wirkten wie natürliche Ratenbegrenzer, für die die nachgelagerten Dienste entwickelt worden waren. Das Hinzufügen eines einfachen Node.js-Proxys kann die meisten Probleme lösen, bis die nachgelagerten Dienste aktualisiert oder ersetzt werden.

Die Einfachheit der Entwicklung mit Node wird es dir ermöglichen, viele Dinge auszuprobieren. Hab keine Angst, Code zu verwerfen und neu zu beginnen. Die Node.js-Entwicklung lebt von Wiederholungen. Verteilte Systeme ermöglichen es uns, Logik auf Service-Ebene zu isolieren und zu kapseln, die wir dann über einen Lastausgleich verteilen können, um die Leistung des gesamten Systems zu überprüfen. Aber verlass dich nicht nur auf mein Wort. Die Seiten in diesem Buch zeigen dir, wie du das am effektivsten machen kannst.

Habt Spaß und teilt, was ihr auf dem Weg lernt.

Get Verteilte Systeme mit Node.js now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.