Distributed Systems with Node.js: Building Enterprise-Ready Backend Services

Faux 3D rendering of book cover

I'm writing a book with O'Reilly on building Distributed Systems with Node.js! It should be available December 2020 and will be about 350 pages long.

In this hands-on guide I'll prove that Node.js is just as capable as traditional enterprise platforms for building services that are observable, scalable, and resilient. Intermediate to advanced Node.js developers will find themselves integrating application code with a breadth of tooling from each layer of a modern service stack.

Here's some of the topics that are covered:

  • Manage Node.js containers with Kubernetes
  • Collect metrics and logs and build dashboards
  • Configure a reverse proxy to balance load
  • Track requests using distributed tracing
  • Work with distributed primitives using Redis

For more information check out the O'Reilly Website or follow @DistributedNode. You can also pre-order Distributed Systems with Node.js on Amazon.

Table of Contents

  • Why Distributed?
    • Single-Threaded Nature of JavaScript
    • Quick Node.js Overview
    • The Node.js Event Loop
    • Sample Applications
  • Protocols
    • Request and Response with HTTP
    • API Facade with GraphQL
    • RPC with gRPC
  • Scaling
    • The Cluster Module
    • Reverse proxies with HAProxy
    • SLA and Load Testing
  • Observability
    • Environments
    • Logging with ELK
    • Metrics with Graphite, StatsD, and Grafana
    • Distributed Request Tracing with Zipkin
    • Health Checks
    • Alerting with Cabot
  • Containers
    • Introduction to Docker
    • Containerizing a Node.js Service
    • Basic Orchestration with Docker Compose
    • Internal Docker Registry
  • Deployments
    • Build Pipeline with Travis CI
    • Automated Testing
    • Deploying to Heroku
    • Modules, Packages, and SemVer
    • Internal npm Registry
  • Container Orchestration
    • Introduction to Kubernetes
    • Getting Started
    • Deploying an Application
    • Service Discovery
    • Modifying Deployments
  • Resilience
    • The Death of a Node.js Process
    • Building Stateless Services
    • External Caching with Memcached
    • Database Connection Resilience
    • Schema Migrations with Knex
    • Idempotency and Messaging Resilience
    • Resilience Testing
  • Distributed Primitives
    • The ID Generation Problem
    • Introduction to Redis
    • Redis Operations
    • Seeking Atomicity
    • Transactions
    • Lua Scripting
  • Security
    • Wrangling Repositories
    • Recognizing Attack Surface
    • Application Configuration
    • Upgrading Dependencies
    • Upgrading Node.js
Tags: #nodejs
Thomas Hunter II Avatar

Thomas has contributed to dozens of enterprise Node.js services and has worked for a company dedicated to securing Node.js. He has spoken at several conferences on Node.js and JavaScript, is an O'Reilly published author, and is an organizer of NodeSchool SF.