Представьте себе Cloudflare Workers, который посмотрел на ваш сервер, на ваш Kubernetes, на ваш Docker Compose и сказал: «Ладно, буду жить у тебя, но без капризов и почасовой оплаты». Примерно так и выглядит OpenWorkers — открытый рантайм для JavaScript на базе V8, написанный на Rust и созданный для тех, кто хочет serverless‑удобство без облачных оков.
Что это вообще такое
OpenWorkers приносит привычную модель Cloudflare Workers в вашу инфраструктуру. Пишете знакомый worker.ts:
export default {
async fetch(request, env) {
const data = await env.KV.get("key");
const rows = await env.DB.query(
"SELECT * FROM users WHERE id = $1",
[1]
);
return Response.json({ data, rows });
}
};
Тот же DX, те же Web API (fetch, Request, Response, ReadableStream, crypto.subtle, TextEncoder/Decoder, Blob, setTimeout, AbortController), но всё выполняется в ваших V8‑изолятах под вашим контролем.
Биндинги как у взрослых
OpenWorkers сразу даёт нужный минимум для реального продакшена:
- KV‑хранилище (get, put, delete, list) для мелких быстрых данных;
- PostgreSQL в качестве основного хранилища;
- S3/R2‑совместимое хранилище для файлов;
- сервис‑биндинги для общения между воркерами;
- переменные окружения и секреты без акробатики.
Каждый воркер живёт в изоляте V8 с лимитом по CPU (100 мс) и памяти (128 МБ), так что runaway‑скрипты не отправят сервер в нокаут.
Архитектура без тайной магии
Поверх nginx‑прокси крутится понятный набор сервисов: дашборд, API, подсистема логов, несколько runner‑ов, NATS для коммуникации и PostgreSQL в центре событий. Добавьте к этому встроенный планировщик с поддержкой 5‑ и 6‑полей cron — и можно поднимать регулярные задачи без внешних костылей.
Деплой в три команды
Самостоятельный хостинг специально сделан простым:
git clone https://github.com/openworkers/openworkers-infra
cd openworkers-infra && cp .env.example .env
docker compose up -d postgres
# миграции, токен и всё остальное
docker compose up -d
Одна база PostgreSQL, один docker-compose.yml — и у вас свои Cloudflare Workers, только без счётчика «за каждый запрос».
Зачем всё это
Автор шёл к проекту лет семь: от vm2 к Cloudflare Workers, затем к deno-core, и в итоге — к rusty_v8 (при поддержке ИИ). Линия одна: запускать JavaScript на своих серверах, с комфортом облака, но без вендор‑лока и утечки данных.
Ваши данные не покидают инфраструктуру, расходы предсказуемы, а совместимость с синтаксисом Cloudflare Workers даёт мягкую посадку тем, кто устал жить «по подписке на каждый миллисекунд».
Дальше — ещё интереснее: в планах запись и повтор исполнения для детерминированного отладки. Репозиторий и подробности — на GitHub и в документации.
