Добро пожаловать в Kruma Data Contracts¶
Платформа контрактов данных для SMB¶
Data Contracts as Code — качество данных, доступное каждой компании
Что такое Data Contracts?¶
Контракт данных — это формальное соглашение между издателем данных и потребителем, которое определяет:
-
Схему данных
Какие поля, типы, обязательность
Apache Avro + Git-версионированные схемы
-
Правила качества
10 типов валидации, маппинг на DMBOK
WAP (Write-Audit-Publish)
-
Владельца данных
Кто отвечает, кому писать
SLA на реакцию, матрица RACI
-
Версионирование
SemVer, breaking changes
Автоматическое обнаружение в CI/CD
Зачем это нужно?¶
Проблемы без контрактов¶
Типичные боли
- «Цифры не сходятся» — неконтролируемые изменения в источниках
- Постоянные инциденты — отсутствие ответственности за качество
- Долгое время до инсайта — ручная проверка и согласование
- Невозможность масштабирования — хаотичные процессы
Решение: Data Contracts¶
Преимущества
- ↓ 70% сокращение инцидентов с данными
- ↓ 40% времени аналитиков на валидацию
- Автоматическое обнаружение breaking changes
- Прозрачная ответственность за качество
- Quality Validator — автоматическая маршрутизация валидных/невалидных записей
Архитектура¶
graph LR
A[Producer<br/>1C, CRM] -->|Avro| B[API Gateway<br/>mTLS]
B -->|201 Created| A
B --> C[Kafka .raw]
C --> D[Quality<br/>Validator]
D --> E[Kafka .prod]
D --> F[Kafka .dlq]
F --> G[Alerts]
E --> H[Consumers<br/>BI, ML]
style B fill:#4CAF50,color:#fff
style D fill:#FF9800,color:#fff
style F fill:#F44336,color:#fff Ключевой принцип¶
API Gateway НЕ валидирует данные!
- Принимает данные "as-is"
- Сразу возвращает
201 Created - Не блокирует издателя
- Валидация происходит асинхронно в Quality Validator
Для кого эта документация?¶
-
Руководители
-
Разработчики
-
Data Engineers
-
Аналитики
Быстрый старт¶
1. Создайте контракт¶
spec_version: "1.0.0"
contract_version: "1.0.0"
metadata:
name: "orders"
namespace: "sales"
display_name: "Заказы клиентов"
owner:
team: "sales-integration"
email: "sales-data@company.ru"
schema:
file: "./schema.avsc"
format: "avro"
quality_rules:
file: "./quality_rules.yml"
2. Определите правила качества¶
version: "1.0"
rules:
- name: "order_id_not_null"
field: "order_id"
type: "not_null"
severity: "error"
- name: "total_amount_positive"
field: "total_amount"
type: "range"
min: 0
severity: "error"
3. Отправьте данные¶
import requests
import avro.io
# Сериализация в Avro
avro_payload = serialize_to_avro(record, schema)
# Отправка в API Gateway
response = requests.post(
"https://gateway.kruma.io/api/1.0/sales.orders",
data=avro_payload,
headers={
"Content-Type": "application/avro",
"version": "1.0.0",
"batch": "1",
},
cert=("sales.orders.crt", "sales.orders.key"),
)
# Получаем 201 Created - издатель свободен!
Что нового¶
Quality Validator v1.0.1
Исправлено именование топиков (.prod/.dlq), уязвимость custom-выражений, поддержка Python 3.12+. Подробнее →
Технологии¶
Core¶
- Apache Avro
- Apache Kafka
Storage¶
- SeaweedFS
- Apache Iceberg
- Apache Parquet
- Gravitino Catalog
Validation¶
- Quality Validator
- 10 типов правил (DMBOK)
- WAP Pattern
Governance¶
Контакты¶
Нужна помощь с внедрением?
- Email: hello@kruma.io
- Telegram: @kruma_io
- GitLab: git.kruma.io
Kruma — Trusted Adviser в мире данных