/impress

Nodejs private cloud application server

Primary LanguageJavaScriptMIT LicenseMIT

impress logo

travis codacy npm version npm downloads/month npm downloads license

Impress Application Server for node.js. All decisions are made. Solutions are scaled and optimized for performance and load.

Metarhia and Impress Application Server way:

  • Applied code need to be simple and secure, so we use code sandboxing with v8 isolated contexts and worker threads;
  • Domain code need to be separated from system code; so we use layered architecture and contract-based approach;
  • Impress supports both stateful applications with RPC and client-session sticky to servers;
  • No I/O is faster even then 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 changes 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;

Installation and upgrade

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
  • certbot (recommended but optional)

Contributors

License

Copyright (c) 2012-2020 Metarhia contributors. Impress Application Server is MIT licensed. Project coordinator: <timur.shemsedinov@gmail.com>