Architecture Overview
Watt is designed as a next-generation Node.js application server that reimagines how distributed applications are built and deployed. Unlike traditional monolithic or microservice architectures, Watt provides a modular monolith approach that combines the best of both worlds.
Executive Summaryβ
Watt delivers a complete application runtime that orchestrates multiple applications within a single process, providing:
- Unified Development Experience: Build multiple applications with different technologies (Next.js, Express, Fastify) as a single application
- Built-in Application Mesh: Automatic inter-applications communication without complex networking setup
- Enterprise-Grade Operations: Production-ready logging, monitoring, and observability out of the box
- Cloud-Native Deployment: Deploy as containers or serverless functions with zero configuration changes
Conceptual Architectureβ
π Documentation Note: This diagram uses Mermaid syntax for interactive visualization. If your documentation platform doesn't support Mermaid diagrams, you can:
- Use Mermaid Live Editor to generate static images
- Replace with ASCII diagrams (examples provided throughout this document)
- Use alternative diagram formats supported by your platform
graph TB
Client[Client Applications] --> LB[Load Balancer]
LB --> Watt[Watt Runtime Instance]
subgraph "Watt Application Runtime"
subgraph "Application Mesh Layer"
Router[Request Router]
Discovery[Application Discovery]
LBInternal[Internal Load Balancer]
end
subgraph "Applications"
Frontend[Frontend Application<br/>Next.js/Astro/Vite]
API[API Application<br/>Fastify/Express]
Backend[Backend Application<br/>Database APIs]
end
subgraph "Infrastructure Applications"
Telemetry[Telemetry & Metrics]
Logging[Centralized Logging]
Cache[HTTP Cache Layer]
end
end
subgraph "External Dependencies"
DB[(Database)]
External[External APIs]
end
Router --> Frontend
Router --> API
Router --> Backend
API --> Backend
Frontend --> API
Backend --> DB
API --> External
Telemetry --> Prometheus[Prometheus/OTEL]
Logging --> LogAggregator[Log Aggregator]
Why Watt's Architecture Mattersβ
Traditional Problemsβ
Monoliths: Single point of failure, difficult to scale individual components, technology lock-in
Microservices: Complex networking, service discovery overhead, debugging challenges, deployment complexity
Watt's Solutionβ
Watt introduces the Modular Monolith pattern:
- Applications are logically separated but physically co-located
- Zero network latency between applications (in-process communication)
- Unified deployment with independent scaling capabilities
- Technology diversity within a single runtime
Technical Architecture Layersβ
1. Runtime Orchestration Layerβ
The Watt runtime acts as a sophisticated process manager and application orchestrator:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Watt Runtime Manager β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββ β
β β Application β β Worker β β Health & β β
β β Loader β β Coordinator β β Monitoring β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββ β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββ β
β β Config Mgmt β β Process β β Resource β β
β β β β Manager β β Management β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Key Responsibilities:
- Application lifecycle management (start, stop, restart, health checks)
- Configuration distribution and environment management
- Worker thread orchestration for horizontal scaling
- Resource allocation and limits enforcement
2. Application Mesh Layerβ
Watt includes a built-in application mesh that handles all inter-application communication:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Application Mesh Layer β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββ ββ βββββββββββββββ βββββββββββββββββββββββ β
β β Request β β Application β β Load Balancer β β
β β Router β β Discovery β β (Round Robin) β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββ β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββ β
β β Interceptor β β Cache β β Telemetry β β
β β System β β Manager β β Hooks β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Key Features:
- Automatic Application Discovery: Applications register automatically using
.plt.localdomain - Zero-Config Networking: No manual application registration or endpoint management
- Built-in Load Balancing: Round-robin distribution across application workers
- Request Interceptors: Extensible middleware for cross-cutting concerns
- HTTP Caching: Intelligent caching with cache-aside patterns
3. Worker Thread Architectureβ
Watt leverages Node.js Worker Threads for true horizontal scaling within a single process:
βββ Main Thread (Runtime Manager) βββ
β β
β βββββββββββββββββββββββββββββ β
β β Application Configuration β β
β βββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββ β
β β Round Robin Loader β β
β βββββββββββββββββββββββββββββ β
βββββββββββββββββ¬ββββββββββββββββββββ
β
βββββββββββββββββββββββββΌββββββββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββ βββββββββββββββ βββββββββββββββ
β Worker β β Worker β β Worker β
β Thread 1 β β Thread 2 β β Thread N β
βββββββββββββββ€ βββββββββββββββ€ βββββββββββββββ€
β Application β β Application β β Application β
β Instance β β Instance β β Instance β
β β β β β β
β Mesh β β Mesh β β Mesh β
β Client β β Client β β Client β
β β β β β β
β Health β β Health β β Health β
β Monitor β β Monitor β β Monitor β
βββββββββββββββ βββββββββββββββ βββββββββββββββ
Benefits:
- True Parallelism: Each worker runs on a separate thread, utilizing multiple CPU cores
- Fault Isolation: Worker failures don't affect other workers or the main runtime
- Independent Scaling: Different applications can have different worker counts
- Memory Efficiency: Shared code with isolated heaps per worker
4. Capabilities Integration Layerβ
Watt's "Capabilities" provide first-class support for popular Node.js frameworks:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Capabilities Layer β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββ ββββββββββββββ ββββββββββββββ ββββββββββββββ β
β β Next.js β β Astro β β Vite β β Remix β β
β β Capability β β Capability β β Capability β β Capability β β
β ββββββββββββββ ββββββββββββββ ββββββββββββββ ββββββββββββββ β
β β
β ββββββββββββββ ββββββββββββββ ββββββββββββββ ββββββββββββββ β
β β Express β β Fastify β β Node β β NestJS β β
β β Capability β β Capability β β Capability β β Capability β β
β ββββββββββββββ ββββββββββββββ ββββββββββββββ ββββββββββββββ β
β β
β βββββββββββββββββββββββββββββ β
β β Capability Runtime API β β
β βββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Capability Features:
- Framework Abstraction: Each capability handles framework-specific concerns
- Unified Configuration: Single configuration format across all frameworks
- Common Applications: Shared logging, telemetry, and caching across capabilities
- Build Integration: Unified build pipeline regardless of framework choice
Application Communication Patternsβ
Internal Application Communicationβ
Applications within a Watt application communicate through the internal application mesh:
// Automatic application discovery - no configuration needed
const response = await fetch('http://user-application.plt.local/api/users/123')
// Applications are automatically load-balanced across workers
const products = await fetch('http://product-api.plt.local/products')
External Communicationβ
External API calls are enhanced with observability and caching:
// External calls get automatic tracing and metrics
const weather = await fetch('https://api.weather.com/current')
// HTTP caching is applied automatically based on cache headers
const cached = await fetch('https://api.slow-application.com/data')
Note: HTTP caching must be enabled in your configuration file to take advantage of automatic caching:
{
"$schema": "https://schemas.platformatic.dev/wattpm/3.0.0.json",
"httpCache": true,
"autoload": {
"path": "web"
},
"entrypoint": "api"
}
Deployment Architecture Patternsβ
Single Instance Deploymentβ
βββββββββββββββββββββββββββββββββββ
β Load Balancer β
ββββββββββββββββββ¬βββββββββββββββββ
β
ββββββββββββββββββΌββββββ βββββββββββ
β Watt Instance β
β βββββββββββββββββββββββββββββββ β
β β Frontend Application β β
β β (3 workers) β β
β βββββββββββββββββββββββββββββββ β
β βββββββββββββββββββββββββββββββ β
β β API Application β β
β β (5 workers) β β
β βββββββββββββββββββββββββββββββ β
β βββββββββββββββββββββββββββββββ β
β β Database Application β β
β β (2 workers) β β
β ββββ βββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββ
Multi-Instance (Cluster) Deploymentβ
βββββββββββββββββββββββββββββββββββββββ
β Load Balancer β
βββββββββ¬ββββββββββββββββββββββ¬ββββββββ
β β
βββββββΌββββββ βββββββΌββββββ
β Watt β β Watt β
βInstance 1 β βInstance 2 β
β β β β
β Frontend β β Frontend β
β API β β API β
β Database β β Database β
βββββββ¬ββββββ βββββββ¬ββββββ
β β
βββββββββββ¬ββββββββββββ
β
βββββββββΌβββββββββ
β Shared DB β
ββββββββββββββββββ
Security Architectureβ
Process-Level Securityβ
- Worker Isolation: Each application runs in a separate worker thread with resource limits
- Memory Protection: Heap isolation prevents memory leaks from affecting other applications
- Resource Limits: CPU and memory limits prevent resource exhaustion attacks
Network Securityβ
- Internal Mesh: All internal communication happens in-process (no network exposure)
- External Boundaries: Only designated entrypoint applications accept external traffic
- Request Validation: Automatic schema validation for all API endpoints
Authentication & Authorizationβ
βββββββββββββββ ββββββββββββββββ βββββββββββββββ
β Client βββββΆβ Gateway ββββββΆβ Application β
βββββββββββββββ β (Auth) β β Mesh β
ββββββββ¬ββββββββ ββββββββ¬βββββββ
β β
ββββββββΌββββββββ ββββββββΌβββββββ
β Auth Store β β Application β
β (JWT/OAuth) β β API β
ββββββββββββββββ βββββββββββββββ
Observability Architectureβ
Watt provides comprehensive observability through three distinct subsystems, each with different implementations and use cases:
Logging Architectureβ
Watt uses Pino for high-performance structured logging across all applications:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Watt Application β
β βββββββββββββββββ βββββββββββββββββ βββββββββββββββββ βββββββββββ β
β β Application 1 β β Application 2 β β Application 3 β β Runtime β β
β β (Pino) β β (Pino) β β (Pino) β β Manager β β
β βββββββββ¬ββββββββ βββββββββ¬ββββββββ βββββββββ¬ββββββββ β (Pino) β β
β β β β ββββββ¬βββββ β
β β β β β β
β ββββββββββββββββββββ΄βββββββββ¬ββββββββββ΄βββββββββββββββ β
β β β
β βββββββββββββββΌββββββββββββββββ β
β β Pino Logger System β β
β β βββββββββββββββββββββββββββ β β
β β β Log Transport β β β
β β β (Configurable) β β β
β β β - Console β β β
β β β - File β β β
β β β - Elasticsearch β β β
β β β - Custom β β β
β β βββββββββββββββββββββββββββ β β
β β βββββββββββββββββββββββββββ β β
β β β Log Processing β β β
β β β - Redaction β β β
β β β - Formatting β β β
β β β - Filtering β β β
β β βββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββ
β
βββββββββββββΌββββββββββββββ
β Log Destinations β
β βββββββββββββββββββββββ β
β β Elasticsearch β β
β βββββββββββββββββββββββ β
β βββββββββββββββββββββββ β
β β Splunk β β
β βββββββββββββββββββββββ β
β βββββββββββββββββββββββ β
β β File System β β
β βββββββββββββββββββββββ β
β βββββββββββββββββββββββ β
β β Console β β
β βββββββββββββββββββββββ β
βββββββββββββββββββββββββββ
Distributed Tracing Architectureβ
Watt implements distributed tracing using OpenTelemetry with support for multiple trace exporters, including OTLP over HTTP, OTLP over gRPC, Zipkin, console, memory, and file:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Watt Application β
β βββββββββββββββββ βββββββββββββββββ βββββββββββββββββ βββββββββββ β
β β Application 1 β β Application 2 β β Application 3 β β Runtime β β
β β (OTel) β β (OTel) β β (OTel) β β Manager β β
β βββββββββ¬ββββββββ βββββββββ¬ββββββββ βββββββββ¬ββββββββ ββββββ¬βββββ β
β β β β β β
β ββββββββββββββββββββ΄ββββββββ¬βββββββββββ΄ββββββββββββββββ β
β Span Context Propagaton β β
β β β
β β β
β β β
β βββββββββββββββββΌββββββββββββββ β
β β OpenTelemetry Tracer β β
β β βββββββββββββββββββββββββββ β β
β β β Span Processors β β β
β β β - BatchSpanProcessor β β β
β β β - SimpleSpanProcessor β β β
β β βββββββββββββββββββββββββββ β β
β β βββββββββββββββββββββββββββ β β
β β β Context Propagation β β β
β β β - W3C Trace Context β β β
β β β - B3 Propagation β β β
β β βββββββββββββββββββββββββββ β β
β β βββββββββββββββββββββββββββ β β
β β β Trace Exporters β β β
β β β - OTLP β β β
β β β - Jaeger β β β
β β β - Zipkin β β β
β β β - Console/File β β β
β β βββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βββββββββββββΌβββββββββββββ
β Tracing Backends β
β ββββββββββββββββββββββββ
β β Jaeger ββ
β ββββββββββββββββββββββββ
β ββββββββββββββββββββββββ
β β Zipkin ββ
β ββββββββββββββββββββ ββββ
β ββββββββββββββββββββββββ
β β OTLP Collector ββ
β ββββββββββββββββββββββββ
β ββββββββββββββββββββββββ
β β Custom Backend ββ
β ββββββββββββββββββββββββ
ββββββββββββββββββββββββββ
Metrics Collection Architectureβ
Watt uses Prometheus client libraries for metrics collection with custom metric collectors:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Watt Application β
β βββββββββββββββββ βββββββββββββββββ βββββββββββββββββ βββββββββββ β
β β Application 1 β β Application 2 β β Application 3 β β Runtime β β
β β (Metrics) β β (Metrics) β β (Metrics) β β Manager β β
β βββββββββ¬ββββββββ βββββββββ¬ββββββββ βββββββββ¬ββββββββ ββββββ¬βββββ β
β β β β β β
β ββββββββββββββββββββ΄ββββββββ¬βββββββββββ΄ββββββββββββββββ β