Op werkdagen voor 23:00 besteld, morgen in huis Gratis verzending vanaf €20

Distributed Node.js

Building Enterprise-Ready Backend Services

Paperback Engels 2020 9781492077299
Verkooppositie 6116
Nog niet verschenen, verschijningsdatum onbekend


Many companies, from startups to Fortune 500 companies alike, use Node.js to build performant backend services. And engineers love Node.js for its approachable API and familiar syntax. Backed by the world's largest package repository, Node's enterprise foothold is only expected to grow.

In this hands-on guide, author Thomas Hunter II proves 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.

- Learn why running redundant copies of the same Node.js service is necessary
- Know which protocol to choose, depending on the situation
- Fine-tune your application containers for use in production
- Track down errors in a distributed setting to determine which service is at fault
- Simplify app code and increase performance by offloading work to a reverse proxy
- Build dashboards to monitor service health and throughput
- Find out why so many different tools are required when operating in an enterprise environment


Aantal pagina's:269
Hoofdrubriek:IT-management / ICT

Over Thomas Hunter

Thomas Hunter II previously worked as a Developer Advocate and API Architect for Barracuda Networks’ Copy.com, a large file-sharing and storage service, where his main concern was getting a well-documented API into the hands of third-party developers. Part of his duties involved building an OAuth 1.0a provider from scratch using PHP, a fate he wouldn’t wish on his worst of enemies. Currently Thomas spends his days at OpenTable where he maintains microservices, builds new ones as needed, and generates cURL requests for other teams to debug their services. His nights are occasionally spent giving talks at meetups and conferences.

Andere boeken door Thomas Hunter


Target Audience
Conventions Used in This Book
Using Code Examples
O’Reilly Online Learning
How to Contact Us

1. Why Distributed?
The Single-Threaded Nature of JavaScript
Quick Node.js Overview
The Node.js Event Loop
Event Loop Phases
Code Example
Event Loop Tips
Sample Applications
Service Relationship
Producer Service
Consumer Service

2. Protocols
Request and Response with HTTP
HTTP Payloads
HTTP Semantics
HTTP Compression
The Dangers of Serializing POJOs
API Facade with GraphQL
GraphQL Schema
Queries and Responses
GraphQL Producer
GraphQL Consumer
RPC with gRPC
Protocol Buffers
gRPC Producer
gRPC Consumer

3. Scaling
The Cluster Module
A Simple Example
Request Dispatching
Cluster Shortcomings
Reverse Proxies with HAProxy
Introduction to HAProxy
Load Balancing and Health Checks
TLS Termination
Rate Limiting and Back Pressure
SLA and Load Testing
Introduction to Autocannon
Running a Baseline Load Test
Reverse Proxy Concerns
Protocol Concerns
Coming Up with SLOs

4. Observability
Logging with ELK
Running ELK via Docker
Transmitting Logs from Node.js
Creating a Kibana Dashboard
Running Ad-Hoc Queries
Metrics with Graphite, StatsD, and Grafana
Running via Docker
Transmitting Metrics from Node.js
Creating a Grafana Dashboard
Node.js Health Indicators
Distributed Request Tracing with Zipkin
How Does Zipkin Work?
Running Zipkin via Docker
Transmitting Traces from Node.js
Visualizing a Request Tree
Visualizing Microservice Dependencies
Health Checks
Building a Health Check
Testing the Health Check
Alerting with Cabot
Create a Twilio Trial Account
Running Cabot via Docker
Creating a Health Check

5. Containers
Introduction to Docker
Containerizing a Node.js Service
Dependency Stage
Release Stage
From Image to Container
Rebuilding and Versioning an Image
Basic Orchestration with Docker Compose
Composing Node.js Services
Internal Docker Registry
Running the Docker Registry
Pushing and Pulling to the Registry
Running a Docker Registry UI

6. Deployments
Build Pipeline with Travis CI
Creating a Basic Project
Configuring Travis CI
Testing a Pull Request
Automated Testing
Unit Tests
Integration Tests
Code Coverage Enforcement
Deploying to Heroku
Create a Heroku App
Configure Travis CI
Deploy Your Application
Modules, Packages, and SemVer
Node.js Modules
SemVer (Semantic Versioning)
npm Packages and the npm CLI
Internal npm Registry
Running Verdaccio
Configuring npm to Use Verdaccio
Publishing to Verdaccio

7. Container Orchestration
Introduction to Kubernetes
Kubernetes Overview
Kubernetes Concepts
Starting Kubernetes
Getting Started
Deploying an Application
Kubectl Subcommands
Kubectl Configuration Files
Service Discovery
Modifying Deployments
Scaling Application Instances
Deploying New Application Versions
Rolling Back Application Deployments

8. Resilience
The Death of a Node.js Process
Process Exit
Exceptions, Rejections, and Emitted Errors
Building Stateless Services
Avoiding Memory Leaks
Bounded In-Process Caches
External Caching with Memcached
Introducing Memcached
Running Memcached
Caching Data with Memcached
Data Structure Mutations
Database Connection Resilience
Running PostgreSQL
Automatic Reconnection
Connection Pooling
Schema Migrations with Knex
Configuring Knex
Creating a Schema Migration
Applying a Migration
Rolling Back a Migration
Live Migrations
Idempotency and Messaging Resilience
HTTP Retry Logic
Circuit Breaker Pattern
Exponential Backoff
Resilience Testing
Random Crashes
Event Loop Pauses
Random Failed Async Operations

9. Distributed Primitives
The ID Generation Problem
Introduction to Redis
Redis Operations
Sorted Sets
Generic Commands
Other Types
Seeking Atomicity
Lua Scripting
Writing a Lua Script File
Loading the Lua Script
Tying It All Together

10. Security
Wrangling Repositories
Recognizing Attack Surface
Parameter Checking and Deserialization
Malicious npm Packages
Application Configuration
Environment Variables
Configuration Files
Secrets Management
Upgrading Dependencies
Automatic Upgrades with GitHub Dependabot
Manual Upgrades with npm CLI
Unpatched Vulnerabilities
Upgrading Node.js
Node.js LTS Schedule
Upgrade Approach

A. Installing HAProxy
Linux: Build from Source
Linux: Install Precompiled Binary
macOS: Install via Homebrew

B. Installing Docker
macOS: Install Docker Desktop for Mac
Linux: Convenient Install Script

C. Installing Minikube & Kubectl
Linux: Debian Package and Precompiled Binary
macOS: Install via Homebrew


Managementboek Top 100


Populaire producten



        Distributed Node.js