Impress application server for
node.js. All decisions are made and optimized for security,
performance, high-intensive network operations, scalability, interactivity, rapid
development practices, and clean project structure.
Quick start
Metarhia and Impress application server way
- Applied code needs to be simple and secure, so we use code sandboxing with v8
isolated contexts, worker threads and minimal trusted npm dependencies;
- Domain code needs to be separated from system code; so we use DDE, layered
(onion) architecture, DI, SOLID:DIP principle and contract-based approach;
- Impress supports both stateful applications with RPC and client-session
sticky to servers; microservices, centralized and distributed architecture;
- No I/O is faster even than async I/O, so we hold state in memory and use
lazy I/O for persistent storage;
Features
- Auto API routing, just create endpoint files as an async js lambda function;
- API code live reload with file system watch (when files change on disk);
- Graceful shutdown and application state recovery after reload;
- Minimum code size and dependencies;
- Can scale on multiple threads and servers;
- Code sandboxing for security, dependency injection, and context isolation;
- Utilize multiple CPU cores and serve multiple ports with worker threads;
- Inter-process communication and shared memory used for state management;
- State synchronization mechanism with transactions and subscription;
- Cache server-side executable JavaScript in memory;
- API development support: AJAX RPC and Websocket support;
- Serve static files from memory cache;
- Application configuration (for different named environments);
- Database access layer for PostgreSQL and Relational db schemas;
- Persistent sessions support with authentication, groups, and anonymous;
- Multiple protocols: HTTP, HTTPS, WS, WSS;
- Logging with buffering (lazy write) and rotation (keep logs N days);
- File utilities: upload, download, streaming;
- Built-in simple testing framework;
- Server health monitoring;
- Built-in data structures validation and preprocessing library;
- Task scheduling (interval or certain time);
- Request queue with timeout and size;
- Execution timeout and error handling;
Requirements
- Node.js v12.9.0 or later (v14 preferred)
- Linux (tested on Fedora 30, Ubuntu 16, 18, 19 and 20, CentOS 7 and 8)
- Postgresql 9.5 or later (v11.8 preferred)
- OpenSSL v1.1.1 or later (optional, for https & wss)
- certbot (recommended but optional)
License & Contributors
Copyright (c) 2012-2021 Metarhia contributors.
See github for full contributors list.
Impress Application Server is MIT licensed.
Project coordinator: <timur.shemsedinov@gmail.com>