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.local
domain - 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:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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 β β
β βββββββββ¬ββββββββ βββββββββ¬ββββββββ βββββββββ¬ββββββββ ββββββ¬βββββ β
β β β β β β
β ββββββββββββββββββββ΄ββββββββ¬βββββββββββ΄ββββββββββββββββ β
β β β
β βββββββββββββββββΌβββββββββββββββ |
β β Prometheus Registry β β
β β ββββββββββββββββββββββββββββ β β
β β β Default Metrics β β β
β β β - CPU Usage β β β
β β β - Memory Usage β β β
β β β - Event Loop Util β β β
β β β - Process Stats β β β
β β ββββββββββββββββββββββββββββ β β
β β ββββββββββββββββββββββββββββ β β
β β β HTTP Metrics β β β
β β β - Request Duration β β β
β β β - Request Count β β β
β β β - Response Codes β β β
β β β - Active Connections β β β
β β ββββββββββββββββββββββββββββ β β
β β ββββββββββββββββββββββββββββ β β
β β β Custom Metrics β β β
β β β - Business Logic β β β
β β β - Thread CPU Usage β β β
β β β - Cache Metrics β β β
β β ββββββββββββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββ β
β ββββββββββββββββββββββββββββββββ β
β β Prometheus HTTP Server β β
β β (Metrics Endpoint: /metrics) β β
β ββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βββββββββββββΌββββββββββββββ
β Metrics Collection β
β βββββββββββββββββββββββ β
β β Prometheus β β
β β Server β β
β βββββββββββββββββββββββ β
β βββββββββββββββββββββββ β
β β Grafana β β
β βββββββββββββββββββββββ β
β βββββββββββββββββββββββ β
β β Custom Scrapers β β
β βββββββββ ββββββββββββββ β
βββββββββββββββββββββββββββ
Observability Capabilitiesβ
Logging Features:
- Structured Logging: JSON-formatted logs with consistent schema across applications
- Log Correlation: Request IDs and context propagation for tracing logs across applications
- Sensitive Data Redaction: Automatic removal of secrets, tokens, and PII from logs
- Multiple Transports: Console, file, Elasticsearch, custom destinations
- Environment-specific Configuration: Different log levels and outputs per environment
Distributed Tracing Features:
- Request Tracing: End-to-end request tracking across all applications with span correlation
- Context Propagation: W3C Trace Context and B3 propagation standards support
- Multiple Exporters: OTLP, Jaeger, Zipkin, and custom trace backend support
- Performance Analysis: Request latency, application dependencies, and bottleneck identification
- Error Tracking: Exception capturing and error span correlation
Metrics Collection Features:
- System Metrics: CPU usage, memory consumption, event loop utilization per worker
- HTTP Metrics: Request duration, throughput, status code distribution, active connections
- Business Metrics: Custom counters, gauges, histograms for application-specific monitoring
- Prometheus Integration: Native Prometheus exposition format with configurable labels
- Real-time Collection: Live metrics scraping with configurable collection intervals
Key Architectural Benefitsβ
For Development Teamsβ
- Single Repository: All applications in one codebase with unified tooling
- Local Development: Full application stack runs locally without Docker/K8s
- Unified Debugging: Debug across applications in a single IDE session
- Shared Dependencies: Common libraries and utilities across applications
For Operations Teamsβ
- Single Deployment Unit: Deploy entire application as one artifact
- Unified Monitoring: Single dashboard for all applications and metrics
- Simplified Networking: No application mesh configuration or DNS management
- Resource Efficiency: Better resource utilization than separate containers
For Businessβ
- Faster Development: Reduced complexity accelerates feature delivery
- Lower Operational Costs: Fewer moving parts, simpler infrastructure
- Better Reliability: In-process communication eliminates network failures
- Easier Scaling: Scale entire application or individual applications as needed
Comparison with Traditional Architecturesβ
Aspect | Monolith | Microservices | Watt (Modular Monolith) |
---|---|---|---|
Deployment | Single unit | Multiple units | Single unit, multiple workers |
Communication | In-process | Network (HTTP/gRPC) | In-process + Application Mesh |
Technology Stack | Homogeneous | Heterogeneous | Heterogeneous within runtime |
Development Complexity | Low | High | Medium |
Operational Complexity | Low | High | Low |
Scaling Granularity | All-or-nothing | Per application | Per application (workers) |
Application Isolation | None | Strong | Process-level |
Network Latency | None | Present | None (internal) |
Debugging Experience | Simple | Complex | Simple |
Next Stepsβ
- Configuration Guide: Learn how to configure Watt applications
- Application Mesh Details: Deep dive into inter-application communication
- Deployment Patterns: Production deployment strategies
- Monitoring Setup: Setting up monitoring stack
This architecture enables teams to build distributed applications with the simplicity of monoliths and the flexibility of microservices, making Watt ideal for teams who want to move fast without sacrificing architectural quality.