Представьте себе 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 и в документации.