Node.js

Skalierbare Netzwerkanwendungen mit serverseitigem JavaScript

Node.js ist eine serverseitige JavaScript-Entwicklungsplattform für Unternehmensanwendungen. Es basiert auf einem der schnellsten JavaScript-Compiler und bietet eine effiziente Anbindung externer Ressourcen wie dem Netzwerk oder Dateisystem.

Da Node.js auf JavaScript basiert, sind die Einstiegshürden entsprechend niedrig. Trotzdem stellt Node.js eine technisch ausgereifte Plattform dar und spielt gerade mit JavaScript als Skriptsprache in Verbindung mit HTML5-Technologien oder asynchroner Programmierung seine Stärken für hochperformante Echtzeitanwendungen aus. Selbst parallele Anfragen in der Größenordnung von einigen Hunderttausend sind mit dem Konzept der Asynchronität von Node.js kein Problem.

Grundlagen

  • Installation von Node.js unter Windows, Linux und OS X
  • JavaScript-Laufzeitumgebungen Webbrowser vs. „headless“ (außerhalb des Webbrowsers)
    • Welche Umgebung für welchen Zweck Sinn macht
    • Webbrowser, headless JavaScript, Rhino, Jäger- / Spider- und TraceMonkey, Google V8, SquirrelFish sowie Nitro
  • Paketverwaltung mit dem Node Package Manager (NPM)
  • Eigene Anwendungspakete mittels package.json erstellen
  • JavaScript Object Notation (JSON) als kompaktes und von Programmiersprachen unabhängiges Datenformat zum Datenaustausch

Methoden und Konzepte

  • JavaScript als Multi-Paradigmen-Sprache
    • Funktionale Programmierung mit JavaScript
    • JavaScript als objektorientierte (prototypische) Programmiersprache
  • Grundlagen von Softwarearchitekturen für ereignisgesteuerte Geschäftsprozesse
  • Strukturierung von Node.js-Anwendungen mit eigenen Modulen

Architektur

  • Event-Loop, Single-Threaded und Async I/O
  • Ereignisgesteuerte Prozesse mit Callbacks, EventEmitter und Streams umsetzen
  • Read-Evaluate-Print-Loop (REPL) als Spielwiese für Code-Experimente oder zur schrittweisen Entwicklung von Algorithmen
  • C++-AddOns für Node.js

Webanwendungen

  • Webanwendungen mit Express / EJS
  • HTML-Templates mittels EJS erstellen
  • Webanwendungen modular und erweiterbar mit der Middleware Connect
  • Low-Level HTTP- / TCP-Server und -Clients
  • Kommunikation mittels HTTP
  • Allgemeine Schnittstellen mit REST entwickeln
  • RESTFul WebServices mit Restify entwickeln
  • Datenzugriff mit RESTFul Clients
  • GraphQL-Serveranwendungen

Microservices mit Node.js

  • Gesetz von Conway (Conway’s law), Bounded Context und Ubiquitous Language
  • Komponenten und Composite-UI
  • HTTP als “First Class Citizen”
  • 12-Factor Apps
  • Runtime-Registry und Service Discovery
  • Muster für verteilte Anwendungen
  • Event-Driven / Reactive Microservices
  • Backing Services und Data Aggregation
  • Infrastruktur für Microservices
  • Verfügbarkeit, Stabilität und Skalierung
  • Monitoring Microservices

Node.js und ECMAScript 6 / 7

  • Schreiben von Node.js Anwendungen mit ECMAScript 6 / 7 und Babel-Node
  • Build und Bundles von ECMAScript 6 / 7 Node.js Anwendungen mit Bale

Echtzeitanwendungen

  • Up to date mit Ajax Long Polling
  • Echtzeitkommunikation mit Push Notifications
  • WebSockets mit Socket.IO
  • Vor- und Nachteile von WebSockets

Datenbanken

  • LevelDB, eingebettete Datenbank nach dem BigTable Storage Design
    • als Alternative zu SQLite und Kyoto Cabinet
    • Vorteile einer extrem schnellen Storage-Engine für Key-Value-Paare
    • Batch-Updates / gleichzeitiges Ändern einer großen Zahl von Einträgen
  • Verwendung von MongoDB, einer schemalosen und dokumentenorientierten Datenbank
  • Umsetzung einer verteilten Datenbank mit Riak

Qualitätssicherung und Werkzeuge

  • Entwicklung mit JavaScript und Node.js mittels Atom, Eclipse, Sublime Text, Visual Studio, WebStorm
  • Hosting
  • Paketintegration mittels Git
  • Deployment und Build-Automatisierung bzw. Continuous Integration mit TeamCity, Jenkins oder Travis
  • Testgetriebene Softwareentwicklung bzw. Behaviour Driven Development mit dem JavaScript-Testing-Framework Mocha
  • Automatisierung von Tests, Builds und Deployment mit Grunt und Gulp
  • Vereinfachung der Entwicklung und Vermeidung von unnötigen Fehlern mittels Grunt
    • Dependency und Task Management
    • Kombination mit QUnit und PhantomJS für Ajax-Tests per Shell
  • Debugging, Logging und Monitoring von Node.js-Anwendungen
  • Produktionsumgebungen mit Supervisior (Forever / PM2)

Erweitertes für Unternehmensanwendungen

  • Grenzen von Node.js (Überskalierung) und Lösung mit Proxys und Datenbanken wie Redis
  • Funktionale Programmierung mit Underscore.js
  • Reaktive Programmierung mit RxJS
Unsere Veranstaltungsorte von dieser / diesem SchulungTrainingSeminarKurs (nach oben)Berlin, Dresden, Frankfurt am Main, Hamburg, Hannover, Karlsruhe, Köln, Leipzig, Magdeburg, München, Stuttgart und Inhouse.

Fortbildung oder Weiterbildung zu Node.js – wir setzen nur auf erfahrene Talente als Node.js Trainer. Das Credo von Mike Bild lautet „Stück für Stück zu etwas Großem. Das ist für mich emergentes Design“. Mehr zu ihm und den Beweggründen unserer anderen Trainer erfahren Sie bei seiner Biographie (direkt erreichbar per Bild).