Модуль 0. Зачем k8s в BI/DWH — и когда он не нужен
Наша задача — научиться принимать взвешенное решение «идем в Kubernetes или нет» применительно к BI/DWH. Мы разберем экономику (TCO/ROI), эксплуатационные выгоды (масштабирование, релизы, устойчивость), технологическую совместимость со стеком (в т.ч. российские решения), анти-кейсы, а на выходе — соберем скоринговую матрицу и шаблон бизнес-кейса.
Когда Kubernetes дает ценность
Бизнес-критерии
- Вариативная нагрузка. Есть ETL-окна и ночные пики, дневные спады, всплески поиска/отчетов — выгодно автоматическое масштабирование воркеров/сервисов.
- Много компонентов. Оркестратор, шины, CDC, витрины, каталог, MDM, BI – десятки сервисов. K8s упрощает запуск/обновление/наблюдаемость.
- Требования к доступности. SLO по витринам и BI ≥ 99.5–99.9%; нужны быстрые выкаты без простоя, автоматический self-healing.
- Частые релизы. Изменения трансформаций/моделей/дашбордов выходят еженедельно/ежедневно; важен GitOps, канареечные выкаты и rollback.
- Гетерогенность стеков. Разные СУБД (Postgres/ClickHouse/Trino), очереди (Kafka), трансформации (dbt), каталоги — K8s стандартизует доставку.
Технические признаки зрелости
- Приняты практики IaC/GitOps; есть CI/CD.
- Команда готова поддерживать наблюдаемость (Prometheus/Grafana/логирование/трейсинг).
- Есть хранилище, совместимое с контейнерами (CSI-драйвер: Ceph/Rook, NFS, локальные диски; объектное S3/MinIO).
Когда Kubernetes не нужен (пока)
- Малый масштаб. 1–3 виртуалки, одна БД, одна BI-система, редкие релизы (раз в квартал). Оверхед платформы будет дороже выгоды.
- Монолит с жесткими Windows-зависимостями. Продукт не контейнеризуется, требует Windows-служб/COM/толстых клиентов. Реалистичнее VM/«рядом с кластером».
- Отсутствие DevOps-процессов. Нет CI/CD, IaC, мониторинга — сначала навести порядок в процессах, потом оркестрация.
- Лицензирование «на сокет/узел» или «на сервер». Может удорожать k8s (больше «узлов» в смысле лицензий). Считаем экономику до миграции.
- Жесткие регуляторные ограничения без платформенной команды. Air-gapped, импортозамещение, но нет экспертизы по k8s — начинать с простого/гибрида.
Экономика: TCO и ROI без иллюзий
Из чего складывается TCO
CapEx/OpEx инфраструктуры:
- Узлы k8s (CPU/RAM/диски/сеть), отдельные пулы под stateful/стейтлес, GPU (если нужно).
-
Хранилище: блок/файловое (RWO/RWX), объектное S3 (MinIO/Ceph RGW).
Платформа и ПО: - Поддержка ОС/контейнеров/Container Runtime, Ingress-контроллер, регистры образов, бэкапы (Velero/Stash), сервис-мэш (по необходимости).
-
Наблюдаемость (Prometheus/Grafana/Loki/Tempo) — ресурсы + поддержка.
Люди и процессы: - Команда платформы (2–4 FTE на прод-кластер среднего размера), DevOps у команд данных, on-call.
- Обучение и время на внедрение практик (GitOps, SLO, DR).
Где формируется экономия
- Автоскейлинг и плотность. HPA/VPA + кластерный автоскейлер повышают утилизацию, уменьшая «запас на пике».
- Скорость релизов. Меньше «ручного» труда при выкатывании/возврате — экономия человеко-часов и времени простоя.
- Устойчивость. Self-healing и PDB/TopologySpreadConstraints сокращают незапланированные простои.
- Стандартизация. Единые шаблоны Helm/Kustomize для десятков сервисов — меньше «зоопарка конфигураций».
Как посчитать
- Соберите «как есть»: ресурсы VM, лицензии, часы администрирования/релизов, простои.
- Смоделируйте «как будет»: зафиксируйте добавки (платформенная команда, наблюдаемость) и вычеты (меньше простоя, быстрее релизы, выше утилизация).
- Рассчитайте порог окупаемости и чувствительность (если автоскейлинг «даёт» лишь 10–15%, окупится ли?).
- Примите решение по сценариям: ничего не менять / VM-стек / гибрид / full k8s.
Практический совет: не подменяйте экономику «идеологией». Сначала черновой «калькулятор» в Excel: строки затрат/выгод, диапазоны значений, диаграмма чувствительности.
Масштабирование для BI/DWH на практике
Типовые паттерны
- ETL/ELT-пайплайны: стейтлес-воркеры Airflow/Dagster. Масштабирование: HPA по метрикам очередей/длительности задач; KEDA — по Kafka/лейблам.
- Запросный слой: Trino/Presto — coordinator + масштабируемые workers (Deployment/DaemonSet).
- СУБД аналитические: ClickHouse — шардинг/репликация через StatefulSet; Postgres Pro — Patroni + pgpool/HAProxy, читающие реплики для BI.
- BI-фронтенды: Metabase/Superset — стейтлес, масштабируются по CPU/латентности; кэш/connection pool — отдельный объект.
Технические настройки, которые влияют на результат
- Requests/Limits и QoS-класс, чтобы исключить троттлинг критичных подов.
- Node Affinity/Taints — разведение тяжелых stateful сервисов на выделенные ноды.
- PDB и TopologySpreadConstraints — выдержать SLO при эвакуациях/обновлениях.
- PersistentVolume выбор: локальные NVMe под журналы БД vs сетевое хранилище под реплики; объектное S3 — под слои lakehouse.
Гибкость релизов и миграции схем
- GitOps (Argo CD/Flux). Все манифесты и Helm-чарты — в git, промо Dev→Stage→Prod через PR.
- Стратегии развертывания: Blue/Green/Canary для фронтов BI; для воркеров — rolling update с PDB.
- Миграции схем: Liquibase/Flyway; правило «сначала back-compatible изменения, потом код», feature flags для опасных трансформаций.
- Rollbacks: храните версии чартов и SQL-миграций, проверяйте обратимость.
Гетерогенные стеки и российские продукты: реальные варианты
- PIX BI / Visiology / Модус BI. Если вендор дает контейнеры — хорошо; если нет — оставляем BI на VM, а данные и интеграции (Kafka, Airflow, Trino/ClickHouse, Postgres Pro, объектное S3) — в k8s. Интеграция: SSO (OIDC/SAML) через Ingress-proxy, доступ к витринам по внутренней сети/Firewall, выгрузки в объектное хранилище.
- Arenadata (ADQM/ADPG, Data Catalog). Компоненты хорошо вписываются в паттерн «сервисы + объектное S3», публикуются Ingress’ами, метрики — в Prometheus, логи — в EFK/Loki.
- Postgres Professional. Паттерн StatefulSet + Patroni, отдельные пулы нод, бэкапы (pgBackRest, WAL-архив в S3), PITR.
- Гармония MDM / Arenadata Data Catalog. Типовая связка: web-приложение, БД, поиск/очереди. В k8s — NS-изоляция, SSO/LDAP, API-интеграции с DWH и каталогом, audit-лог.
Вывод: даже если BI остаётся «вне k8s», перенос данной платформы (ингест, хранение, трансформации) в k8s уже дает управляемость и масштабируемость.
Риски и как их снижать
-
Хранилище и IO. Недостаточная пропускная способность сетевого storage ломает ETL/запросы.
Митигировать: профилировать IO; NVMe/локальные PV под журналы БД; выделенные storage-ноды; S3 для холодных/слоистых данных. -
Stateful-сложность. Перенос СУБД без Patroni/операторов = боль.
Митигировать: пользоваться операторами, готовить DR-план, тестировать PITR. -
Сеть и безопасность. Без NetworkPolicy кластеры «прозрачны».
Митигировать: default-deny egress/ingress, Secrets через External Secrets + Vault, RBAC по ролям. -
Командные риски. Нет опыта on-call, нет GitOps, нет SLO.
Митигировать: ввести SLI/SLO, runbooks, дежурства, тренировки DR/chaos-days. -
Стоимость «набора обвязки». Образы, регистр, мониторинг, бэкапы — это ресурсы и люди.
Митигировать: начать с минимально достаточного набора (Ingress + мониторинг + бэкапы), расширять по мере зрелости.
Практика: скоринговая матрица целесообразности
Оцените каждый критерий по шкале 0–5 и умножьте на вес. Сумму интерпретируйте по порогам ниже.
Критерии и типичные веса:
- Вариативность нагрузки (вес 3)
- Количество сервисов/компонентов (2)
- Требуемая доступность/SLO (3)
- Частота релизов/изменений (2)
- Зрелость DevOps (CI/CD, IaC, мониторинг) (3)
- Совместимость со стеком (контейнеризация, Linux-поддержка) (3)
- Экономический потенциал (ожидаемая экономия от автоскейлинга/релизов) (3)
- Наличие платформенной команды/ресурсов (2)
- Регуляторные ограничения, совместимые с k8s (1)
- Лицензирование (не ухудшается при k8s) (2)
Интерпретация:
- ≤ 40: пока рано — остаемся на VM/монолите, улучшаем процессы.
- 41–70: гибрид: платформа данных в k8s, BI/MDM по мере готовности.
- > 70: есть смысл в полном внедрении k8s (этапами, начиная с ingest/ELT).
Рекомендация: заполняйте матрицу для 3 сценариев («как есть», «гибрид», «full k8s») и приложите к бизнес-кейсу.
Мини-кейсы (как могла бы выглядеть архитектура)
-
Open-source end-to-end:
Kafka/Debezium → S3/MinIO + Iceberg → Trino → dbt → ClickHouse (для быстрых витрин) → Superset/Metabase.
В k8s: все компоненты, кроме, возможно, выделенного блочного хранилища под журналы ClickHouse. Масштабирование KEDA по очередям Kafka, HPA для Trino workers. -
Гибрид с российским BI:
Данные в k8s (Airflow, Trino/ClickHouse, Postgres Pro, S3); Visiology/PIX BI/Модус BI — на VM.
Интеграции: Ingress OIDC-proxy для SSO, доступ BI к витринам через отдельную сеть/Firewall, экпорт отчетов в S3, задачи BI-крона дергают API в k8s. -
Arenadata + Postgres Pro:
ADQM/ADPG в k8s с объектным хранилищем, Patroni для Postgres Pro, каталог данных в отдельном NS, централизованные метрики, бэкапы в S3, DR-план со вторым регионом.
Артефакты модуля
Шаблон бизнес-кейса (структура)
- Проблема/цель: где болит (простои, медленные релизы, ручной труд, «зоопарк» сервисов).
- Альтернативы: оставляем VM; частично автоматизируем; гибрид; full k8s.
- Технологическая пригодность: контейнеризация, Linux-поддержка, зависимость от Windows, сетевые/хранилищные требования.
- Экономика: TCO сейчас и при каждом сценарии, допущения, чувствительность, сроки окупаемости.
- Риски и планы смягчения: хранилище, команда, лицензии, безопасность.
- Этапный план: пилот (ingest/ETL), расширение (запросный слой), подключение BI/MDM, консолидация.
- SLA/SLO: что именно улучшаем (доступность, время выката, RTO/RPO).
- Решение/метрики успеха: что считаем успехом через 3–6–12 месяцев.
Таблица критериев (что собрать перед решением)
- SLA/SLO: доступность витрин, RTO/RPO, Recovery Time Objectives для БД.
- Нагрузка: пиковые/средние значения, ETL-окна, конкуренция запросов, сезонность.
- Компетенции: кто есть сейчас (DevOps, DBA, SRE), готовность к on-call, опыт GitOps.
- Лицензии: как считаются у текущих продуктов (узлы/сокеты/ядра/пользователи), не ухудшится ли счет при k8s.
- Совместимость: контейнеры/образы, Linux-поддержка, требования к Windows.
- Безопасность: требования сегментации, аудита, секретов, криптографии.
- Хранилище/сеть: доступные CSI-драйверы, IOPS, пропускная, задержки, отдельные пулы нод.
Что делать прямо сейчас (пошагово)
- Заполните таблицу критериев по текущему ландшафту.
- Оцените три сценария (VM / гибрид / full k8s) по скоринговой матрице.
- Выберите пилот (наименее рисковый участок): ingest/CDC или оркестрация ETL.
-
Подготовьте минимальный платформенный контур:
- кластер (3 master + 3–6 worker),
- Ingress, регистр образов, мониторинг (Prometheus/Grafana), бэкапы (Velero),
- SSO/Secrets (External Secrets + Vault либо Secret Manager).
- Зафиксируйте SLO/метрики успеха: длительность ETL-окон, время выката, простои.
- Проведите ретроспективу пилота и обновите бизнес-кейс.




