Перейти к содержанию

Добро пожаловать в 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

Для кого эта документация?


Быстрый старт

1. Создайте контракт

domains/sales/orders/contract.yaml
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. Определите правила качества

domains/sales/orders/quality_rules.yml
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


Контакты

Нужна помощь с внедрением?


Kruma — Trusted Adviser в мире данных