Impress Application Server
Сервер приложений Metarhia — управляет инфраструктурой (HTTP, sandbox, sessions, threads, hot reload), а разработчик пишет только доменную логику.
Что это
Аналог Tomcat/JBoss для Java, но для Node.js. До Impress в Node такого почти не было — все писали «голый процесс».
Impress поднимается из конфига: HTTP-сервер, балансер тредов, sandbox per app, sessions, статика, логер. Программист не пишет require для инфраструктуры — сразу бизнес-логика.
Структура приложения
applications/
myapp/
api/ # GSTP/Metacom RPC endpoints
www/ # статические HTTP-ресурсы
domain/ # бизнес-логика
lib/ # утилиты
cert/ # сертификаты
config/ # конфигурация
Multi-app в одном сервере
- Один Impress-процесс хостит несколько приложений.
- Каждое приложение — изолированный sandbox.
applications/foo/api/v1/users/get.js— RPC-методfoo.users.get.
Sandbox per app
- На каждое приложение свой V8 context (
vmmodule). - Утечка памяти лечится пересозданием sandbox без рестарта процесса.
sandbox-fsзапирает приложение в его каталоге — не выйдешь выше.- Библиотеки прописываются в sandbox-конфиге; даже встроенные модули Node — только разрешённые.
Контейнеризация
«Impress сам делает контейнера. Внутри одного процесса может быть много приложений и внутри одного приложения много процессов — много ко многим. С Docker так не сделаешь.»
- Один процесс — N приложений.
- Один app — M процессов (worker threads).
Что Impress берёт на себя
- HTTP/HTTPS-сервер
- WebSocket (через Metacom)
- Routing → автогенерация из ФС
- Sessions и authentication
- Sandbox-изоляция
- Hot reload (подгрузка изменённых модулей в sandbox)
- Многопоточность (балансер + воркеры)
- Логирование (metalog)
- Валидация (metaschema)
- Sandbox-FS — безопасная файловая система
🎓 Источники
- 🎓 Архив 2017 — Impress Application Server · 2019-12-28
- Цитата: «Все вещи, связанные с инфраструктурой, соединениями с базой, управлением памятью, сессиями, парсингом берет на себя Impress. Нигде вы не пишете даже require.»
- 🎓 Многопоточность в Metarhia · 2021-10-03
- 🎓 GRASP Decomposition of the Application class from impress · 2021-03-31