Открытый AI-инфраструктурный комбайн: как заменить Vercel, Sentry, PostHog и Resend одним self-hosted агентом на Rust
Я — Denis Shokhirev, Enterprise AI architect из Эрлангена. За последние 6 месяцев я внедрил 14 production AI-агентов для B2B-клиентов в DACH, весь стек — Claude, Supabase, n8n, Doppler, self-hosted Postgres. На прошлой неделе опять словил три разных инцидента: один — отвалился email-отправщик, второй — лагал трекинг действий пользователей, третий — потерялись метрики ошибок. Все это — на разных SaaS, с разными интерфейсами и billing. В какой момент хватит платить за четыре дублирующих сервиса, к
Я — Denis Shokhirev, Enterprise AI architect из Эрлангена. За последние 6 месяцев я внедрил 14 production AI-агентов для B2B-клиентов в DACH, весь стек — Claude, Supabase, n8n, Doppler, self-hosted Postgres. На прошлой неделе опять словил три разных инцидента: один — отвалился email-отправщик, второй — лагал трекинг действий пользователей, третий — потерялись метрики ошибок. Все это — на разных SaaS, с разными интерфейсами и billing. В какой момент хватит платить за четыре дублирующих сервиса, когда можно поднять всё в одном Rust-агенте?
Почему SaaS-стек уже не тянет: реальные боли
1. Сложность и фрагментация
Vercel для деплоя, Sentry для ошибок, PostHog для аналитики, Resend для email. Каждый сервис требует отдельного аккаунта, API-ключа, интеграции, мониторинга и оплаты. Если одна из сторон падает — вы теряете часть цепочки. На реальном проекте для транспортного логистического клиента я потратил 4 часа только на расследование, где «потерялся» alert — оказалось, webhook не дошёл из одного сервиса в другой.
2. Cost-эффективность и GDPR
При объёмах больше 10K событий в сутки SaaS начинает стоить сопоставимо с зарплатой middle-инженера. В DACH клиенты требуют DSGVO/GDPR-соответствия — хранить данные в Европе, полный контроль над аудитом. SaaS на американских серверах часто не проходит security review.
Паттерн "Self-hosted AI Infra Agent"
Зачем Rust?
Rust — это не хайп. За последние полгода на Rust поднял три продакшн-сервиса: latency ниже 30ms на API-запрос, падений — 0. Сложность кода оправдана стабильностью и безопасностью (отсутствие null, borrow checker). Для AI-инфраструктуры где важна скорость и memory-safety, альтернатив нет.
Какие компоненты реально заменить?
| Сервис | Self-hosted Rust альтернатива | Кратко |
|---|---|---|
| Vercel (deploy, edge functions) | Axum, Shuttle, Docker Compose | API сервер, edge-функции на Rust, деплой через Compose |
| Sentry (error tracking) | Sentry self-hosted, tracing + opentelemetry | Локальный инстанс, интеграция через Rust crates |
| PostHog (analytics) | ClickHouse, RudderStack, custom events | Храним и анализируем события сами |
| Resend (email) | Mailpit + lettre | Локальный SMTP relay + рассылка с Rust |
Как собрать одного агента: главный workflow
1. Архитектура
Один бинарник на Rust (например, на базе Axum или Actix), в котором:
- REST/GraphQL API для получения событий
- Обработка ошибок и логирование (через tracing, sentry)
- Отправка email (через lettre, Mailpit)
- Сбор и запись аналитики (ClickHouse, Postgres, event-queue через RabbitMQ или native async)
- UI для просмотра метрик (через Tauri или webview)
2. Пример кода: event ingestion и email
use axum::{Router, routing::post, extract::Json};
use serde::Deserialize;
use lettre::{Message, SmtpTransport, Transport};
#[derive(Deserialize)]
struct Event {
user_id: String,
event_type: String,
payload: serde_json::Value,
}
async fn ingest_event(Json(event): Json) {
// Запись события в ClickHouse/Postgres
// Логирование ошибок через sentry
// Отправка email при необходимости
let email = Message::builder()
.from("[email protected]".parse().unwrap())
.to("[email protected]".parse().unwrap())
.subject("New Event")
.body(format!("Event: {:?}", event))
.unwrap();
let mailer = SmtpTransport::relay("localhost").unwrap().build();
mailer.send(&email).ok();
}
// main, router, etc.
3. Интеграция с аналитикой
Для сбора событий — пишу их напрямую в ClickHouse. Для визуализации — Metabase self-hosted или Superset. Это снимает ограничение на кастомные event-схемы.
Безопасность: статический и runtime-анализ
1. Статический анализ
Для Rust-кода — clippy, semgrep, bandit (для Python-частей, если используются). На трёх последних проектах semgrep ловил потенциальные XSS-инъекции в auto-generated UI.
2. Runtime sandbox
Docker Compose, ограничение сетевых прав, отдельные volume для логов. Для AI-агентов — изоляция через namespaces. Логи сразу уходят в централизованный storage, чтобы не утерять при падении контейнера.
Продакшн-контур: автоматизация и мониторинг
n8n + Doppler для orchestration
n8n — для автоматизации действия после события (например, alert в Telegram или Slack при ошибке). Doppler — для управления secrets, чтобы не хранить токены в коде.
version: '3.9'
services:
ai-infra-agent:
build: .
ports:
- "8080:8080"
environment:
- RUST_LOG=info
- DATABASE_URL=postgres://user:pass@db/aiagent
- CLICKHOUSE_URL=http://clickhouse:8123
depends_on:
- db
- clickhouse
db:
image: postgres:15
clickhouse:
image: clickhouse/clickhouse-server:23
FAQ
Можно ли всё это поднять на одном сервере?
Да, если не перегружать event rate (>10K/sec). Для большинства B2B-агентов хватает одной машины с 8ГБ RAM.
Чем self-hosted отличается от SaaS по SLA?
Вы сами отвечаете за аптайм и бэкапы. Но зато нет vendor lock и просадок из-за внешних проблем SaaS.
А как с legal/audit?
Все данные на ваших серверах, можно хранить логи 2+ года для аудита. В Европе — это must-have для GDPR/DSGVO.
Что с обновлениями и CVE?
Rust-контейнеры редко уязвимы, но автоматические обновления образов надо настроить через watchtower или CI/CD.
А если нужна интеграция с внешними SaaS?
Через REST/webhook, изолируя sensitive данные. Но ядро лучше держать у себя.
В каком месте вашей AI-инфраструктуры чаще всего отваливается мониторинг или алерты — ошибки данных, сбои email, или лаги аналитики? Я реально хочу понимать, где у вас болит.
Я провожу бесплатный 30-мин аудит стека для DACH-команд, кто строит AI в регулируемых отраслях. Напишите в LinkedIn или в @ger_dennis_ai.
Turn your process into an AI system
Fixed price. Production quality. DACH B2B focus.