All Projects → metarhia → Impress

metarhia / Impress

Licence: mit
Enterprise application server for Node.js and Metarhia private cloud ⚡

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Impress

Nodejsstarterkit
Starter Kit for Node.js v14.x, minimum dependencies 🚀
Stars: ✭ 348 (-45.11%)
Mutual labels:  api, cloud, server, cluster
Actionhero
Actionhero is a realtime multi-transport nodejs API Server with integrated cluster capabilities and delayed tasks
Stars: ✭ 2,280 (+259.62%)
Mutual labels:  api, server, websocket, cluster
Jstp
Fast RPC for browser and Node.js based on TCP, WebSocket, and MDSF
Stars: ✭ 132 (-79.18%)
Mutual labels:  api, rpc, server, websocket
Zato
ESB, SOA, REST, APIs and Cloud Integrations in Python
Stars: ✭ 889 (+40.22%)
Mutual labels:  api, enterprise, cluster
Clusterws
💥 Lightweight, fast and powerful framework for building scalable WebSocket applications in Node.js
Stars: ✭ 868 (+36.91%)
Mutual labels:  server, websocket, cluster
Gonet
go分布式服务器,基于内存mmo
Stars: ✭ 804 (+26.81%)
Mutual labels:  rpc, server, cluster
X
新生命X组件,数据中间件XCode、日志、网络、RPC、序列化、缓存、Windows服务
Stars: ✭ 1,322 (+108.52%)
Mutual labels:  api, rpc, server
Gophergameserver
🏆 Feature packed, easy-to-use game server API for Go back-ends and Javascript clients. Tutorials and examples included!
Stars: ✭ 61 (-90.38%)
Mutual labels:  api, server, websocket
Micro
Micro is a distributed cloud operating system
Stars: ✭ 10,778 (+1600%)
Mutual labels:  api, cloud, server
Jsonrpcserver
Process JSON-RPC requests in Python
Stars: ✭ 126 (-80.13%)
Mutual labels:  api, rpc, server
Python Binance Chain
Binance Chain Exchange API python implementation for automated trading
Stars: ✭ 96 (-84.86%)
Mutual labels:  api, rpc, websocket
Watsontcp
WatsonTcp is the easiest way to build TCP-based clients and servers in C#.
Stars: ✭ 209 (-67.03%)
Mutual labels:  api, rpc, server
Fastd
🚀 A high performance PHP API framework.
Stars: ✭ 423 (-33.28%)
Mutual labels:  api, server
Midway
🍔 A Node.js Serverless Framework for front-end/full-stack developers. Build the application for next decade. Works on AWS, Alibaba Cloud, Tencent Cloud and traditional VM/Container. Super easy integrate with React and Vue. 🌈
Stars: ✭ 5,080 (+701.26%)
Mutual labels:  cloud, enterprise
Openpbs
An HPC workload manager and job scheduler for desktops, clusters, and clouds.
Stars: ✭ 427 (-32.65%)
Mutual labels:  cloud, cluster
New Website
🖥 cdnjs.com website
Stars: ✭ 449 (-29.18%)
Mutual labels:  api, server
Hydra
后端一站式微服务框架,提供API、web、websocket,RPC、任务调度、消息消费服务器
Stars: ✭ 407 (-35.8%)
Mutual labels:  rpc, websocket
Happypandax
A cross-platform server and client application for managing and reading manga and doujinshi
Stars: ✭ 432 (-31.86%)
Mutual labels:  rpc, server
Awesome Openapi3
😎 A list of awesome projects related to OpenAPI 3.0.x, curated by the community
Stars: ✭ 469 (-26.03%)
Mutual labels:  api, server
Glass Isc Dhcp
Glass - ISC DHCP Server Interface
Stars: ✭ 486 (-23.34%)
Mutual labels:  server, websocket

impress logo

ci Status codacy snyk npm downloads/month npm downloads license

Enterprise application server for Node.js: secure, lightweight, interactive, and scalable.

Description

First Node.js server scaled with multithreading and extra thin workload isolation. Optimized for high-intensive data exchange, rapid development, and clean architecture. Provides everything you need out of the box for reliable and efficient backend, network communication with web and mobile clients, protocol-agnostic API, run-time type validation, real-time and in-memory data processing, and reliable stateful services.

Weak sides: not a good choice for content publishing including blogs and online stores, server-side rendering, serving static content and stateless services.

Strong sides: security and architecture for enterprise-level applications, long-lived connections over websocket to minimize overhead for cryptographic handshake, no third-party dependencies.

Quick start

API endpoint example: application/api/example.1/citiesByCountry.js

async ({ countryId }) => {
  const fields = ['cityId', 'name'];
  const where = { countryId };
  const data = await domain.db.select('City', fields, where);
  return { result: 'success', data };
};

You can call it from client-side:

const res = await metacom.api.example.citiesByCountry({ countryId: 3 });

Metarhia and impress application server way

  • Applied code needs to be simple and secure, so we use sandboxing with v8 isolated contexts, worker threads and javascript closures;
  • Domain code should be separated from system code; so we use DDD, layered (onion) architecture, DI, SOLID and GRASP principles, contract-based approach;
  • Impress supports stateful applications with RPC and client-session sticky to servers; microservices, centralized or distributed architecture;
  • No I/O is faster even than async I/O, so we hold state in memory, share it among multiple threads and use lazy I/O for persistent storage;
  • We use just internal trusted dependencies, no third-party npm packages; total Metarhia technology stack size is less than 2mb.

Features

  • Auto API routing, just create endpoint files as an async function;
  • Code live reload with file system watch (when files change on disk);
  • Graceful shutdown and application state recovery after reload;
  • Minimal dependencies and code size;
  • Can scale with multiple threads and servers;
  • Code sandboxing for security and context isolation;
  • Auto module loader with dependency injection for namespaces;
  • Layered architecture out of the box: core, domain, API, client;
  • 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;
  • Rapid API development support: AJAX RPC and Websocket;
  • 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);
  • Concurrency control: 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: <[email protected]>

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].