Node.js erzwingt absichtlich eine Microservice-Architektur.
Wenn Sie dies nicht gesehen haben, sollten Sie sich diesen Vortrag von Ryan Dahl ansehen . Dies war im Jahr 2011, als er Node.js der Welt vorstellte. Das gesamte Gespräch ist sehr interaktiv. Und am Ende versucht er, ein Konzept zu erklären, das sehr vertraut klingt:
Node ist ein Single-Threaded-System, das nur 1 Kern verwendet. Dies ist kein Problem, da Sie mehr davon starten können. Module teilen ihren Speicher nicht. In gewisser Weise gibt es eine absichtliche Grenze auf der Ebene des Betriebssystemprozesses. Um zu kommunizieren, müssen Sie einen Socket öffnen, Daten serialisieren und an diese senden. Dies ist eine gute Lösung. Programme, die heutzutage sehr umfangreich werden, wachsen tendenziell über eine Maschine hinaus. Sie müssen in der Lage sein, ein Programm auf mehrere Computer zu verteilen. Wenn dies auch auf einer einzelnen Maschinenebene erzwungen wird, wird ein Modell erzwungen, das das Wachstum unterstützt. - Ryan Dahl (2011)
Der Begriff "Microservice" wurde erst 2 Monate später in einer Werkstatt in Venedig geprägt. Aber wenn man jetzt zurückblickt, ist es offensichtlich, was er zu erklären versucht. Es gab einfach noch kein Wort dafür.
Und die meisten dieser Speicherbeschränkungen sind kein Problem, wenn wir uns die Zeit nehmen, unsere Anwendungen in kleinere Mikrodienste aufzuteilen.
Node.js hat alle Grundlagen für eine superschnelle rohe TCP- oder HTTP-Kommunikation, aber Ryan betont in diesem Video auch, dass Node.js selbst kein HTTP-Server ist. Es gibt jedoch Node.js Frameworks und Bibliotheken, die sich auf diese Dinge spezialisiert haben.
Sobald Sie diesen Punkt erreicht haben, ist es meines Erachtens an der Zeit, sich das NestJS-Framework anzusehen, das einige integrierte Microservice-Funktionen enthält.