# Решение: Вынос IoT в отдельную репу **Дата:** 2026-04-12 **Статус:** Принято и реализовано ## Контекст IoT managed service был частью sless (основной serverless operator). Код IoT жил в нескольких местах: - `iot/` — CRD types, controller, cmd (bridge, consumer) - `internal/storage/iotpg/` — Postgres store - `internal/api/handler/iot_*.go` — REST handlers - `internal/api/ui/iot-*.html` — UI - `main.go`, `Dockerfile` — IoT интегрирован в основной бинарник ## Проблемы 1. IoT и sless — разные домены с разными циклами разработки 2. Сборка sless включала IoT — лишние зависимости (Kafka, MQTT) 3. Деплой любого IoT изменения требовал пересборки всего sless ## Решение Вынести IoT в отдельную репу `gitea.services.ngcloud.ru/Nail/IoT`: - Свой Go модуль, go.mod, Dockerfile - 3 бинарника в одном образе (`naeel/iot-operator`) - Свой controller-manager + REST API (cmd/iot-operator) - Независимый CI/CD цикл ## Что перенесено - CRD types, controller, mqtt-bridge, kafka-consumer — as-is - Handler struct упрощён (убраны S3, PG от sless) - Router — только IoT маршруты - Middleware (auth, logging) — скопированы как есть - K8s manifests, CRD YAML, документация, примеры ## Риски - IoT код в sless нужно будет убрать (или оставить заглушки) - K8s manifests могут требовать обновления (новое имя образа)