Альтернативные реестры схем
Confluent Schema Registry — де-факто стандарт, но не единственный вариант. С 2019 года (когда Confluent перевёл Schema Registry с Apache 2.0 на Confluent Community License) появились open-source альтернативы, а облачные провайдеры создали managed-сервисы.
Четыре основных альтернативы:
| Реестр | Лицензия | Ключевая идея |
|---|---|---|
| Apicurio Registry | Apache 2.0 | Multi-format, enterprise, Red Hat backed |
| AWS Glue Schema Registry | Managed (AWS) | Serverless, IAM-native, AWS-ecosystem |
| Karapace | Apache 2.0 | Drop-in Confluent replacement, Aiven backed |
| buf BSR | Commercial + OSS CLI | Protobuf-first, breaking detection без Registry |
Apicurio Registry
Apicurio Registry — это open-source реестр от Red Hat, ориентированный не только на Kafka-схемы, но и на API-дизайн в целом.
Архитектура и возможности
Apicurio Registry 3.x
Apicurio Registry 3.x — Quarkus-based Java-приложение. Поддерживает три storage backend: in-memory (dev), KafkaSQL (production Kafka-native), PostgreSQL (production SQL-native). Один Docker-образ для всех вариантов.Ключевые особенности Apicurio 3.x:
- Multi-format: Avro, Protobuf, JSON Schema + GraphQL, OpenAPI, AsyncAPI, XML Schema (XSD), WSDL
- Confluent API compatibility: эндпоинт
/apis/ccompat/v7/реализует Confluent REST API → можно подключить существующие Kafka-клиенты с Confluent SerDes без изменения кода - Иерархические правила (3.x): Global → Group → Artifact rules. Группа правил наследуется и может быть переопределена на уровне конкретного артифакта
- Artifact branching: семантическое версионирование веток (v1.x, v2.x) для параллельных линий эволюции
- Kiota SDK: автогенерированные клиенты для Java, Python, Go, TypeScript
- Лицензия: Apache 2.0 — можно использовать без ограничений, включая production
Apicurio Registry 3.x — major release с breaking changes относительно 2.x. Новый namespace конфигурации (apicurio.* вместо registry.*), переписанный KafkaSQL слой, новая модель данных. Миграция через export/import ZIP.
Когда выбирать Apicurio
- Нужна Apache 2.0 лицензия (без Confluent Community License ограничений)
- Нужна поддержка не только Kafka-схем — OpenAPI, GraphQL, AsyncAPI
- Инфраструктура на Red Hat / OpenShift — есть enterprise-версия (Red Hat build of Apicurio Registry)
- Команда хочет PostgreSQL как storage вместо Kafka
AWS Glue Schema Registry
AWS Glue Schema Registry — serverless managed-сервис, встроенный в экосистему AWS.
Архитектура и особенности
AWS Glue Schema Registry (Serverless)
Glue Schema Registry — serverless, бесплатный (без дополнительной оплаты сверх AWS Glue). Авторизация через IAM policies. Storage — managed, не нужно настраивать Kafka или БД.Ключевые особенности:
- Форматы: Avro, JSON Schema (Draft-04/06/07), Protobuf (proto2/proto3)
- 8 режимов совместимости: NONE, DISABLED, BACKWARD, BACKWARD_ALL, FORWARD, FORWARD_ALL, FULL, FULL_ALL (DISABLED — уникальный для Glue: запрещает новые версии)
- Serverless: нет инфраструктуры для управления — ни Kafka, ни PostgreSQL
- Бесплатный: включён в AWS Glue без дополнительной оплаты
- IAM-native: авторизация через стандартные AWS IAM policies
- ZLIB compression: опциональное сжатие при передаче schema body
- SDK: Java (основной), C# (добавлен в 2025)
AWS Glue Schema Registry не имеет Confluent-compatible API. Миграция с Confluent SR требует замены SerDes библиотек во всех producers/consumers. Нельзя просто поменять URL — нужно менять код.
Ограничения
- Лимиты: 10 registries, 1000 schema versions per region (soft limits, можно увеличить через support)
- Только AWS: нет on-premises варианта
- Нет GraphQL/OpenAPI: только data serialization форматы
- Java-first: C# добавлен недавно, Go/Python/Node — через REST API вручную
Когда выбирать Glue
- 100% на AWS — MSK, Kinesis, Flink, Lambda
- Не хотите управлять инфраструктурой Schema Registry
- IAM-native авторизация важнее Confluent API совместимости
Karapace
Karapace — open-source (Apache 2.0) drop-in replacement для Confluent Schema Registry и Kafka REST Proxy от Aiven.
Ключевая идея
Karapace стремится к 1:1 совместимости с Confluent Schema Registry API. Это значит:
- Существующие Kafka-клиенты с Confluent SerDes работают без изменения кода — достаточно поменять URL
- Тот же
_schemascompacted topic как storage backend - Те же subject naming conventions
- Те же compatibility levels
Форматы: Avro, JSON Schema, Protobuf (Protobuf добавлен Instaclustr).
Лицензия: Apache 2.0.
Deployment: Docker-образ, standalone Python-приложение. Встроен в каждый Aiven for Apache Kafka сервис.
Авторизация: ACL-based — настраивается через конфигурацию или Aiven API.
Karapace — лучший выбор для миграции с Confluent Schema Registry без изменения клиентского кода. Меняете URL в конфигурации producer/consumer — и готово.
Когда выбирать Karapace
- Нужен open-source Confluent-compatible реестр (Apache 2.0)
- Используете Aiven for Apache Kafka — Karapace встроен
- Миграция с Confluent SR с минимальными изменениями в клиентах
- Не нужен multi-format (GraphQL, OpenAPI) — только Kafka-схемы
buf BSR (Buf Schema Registry)
buf BSR — специализированный реестр для Protobuf, часть экосистемы buf.
Отличие от Kafka-centric реестров
buf BSR — это не Kafka Schema Registry. Это реестр Protobuf-модулей с dependency management, breaking change detection и code generation:
- Dependency management:
.protoфайлы могут импортировать модули из BSR (аналог Maven Central для Protobuf) - Breaking detection:
buf breakingсравнивает.protoфайлы и находит wire-incompatible изменения без обращения к Registry - Remote code generation: BSR генерирует SDK на Go, Java, Python, TypeScript из зарегистрированных модулей
- Lint:
buf lintпроверяет naming conventions, documentation, package structure
buf BSR и Confluent SR решают разные проблемы. Confluent SR — runtime schema management для Kafka. BSR — build-time Protobuf governance и distribution. Они не конкурируют — они дополняют друг друга. В Protobuf-heavy организации обычно используют оба.
Сравнительная матрица
Дерево решений: какой реестр выбрать?
100% AWS?
Первый вопрос: вся инфраструктура на AWS (MSK, Kinesis, Lambda)?AWS Glue SR
AWS Glue Schema Registry — serverless, бесплатный, IAM-native. Минимум операционной нагрузки.Нужна Apache 2.0?
Нужна ли Apache 2.0 лицензия? (Confluent Community License запрещает SaaS на базе продукта)Multi-format?
Нужны ли форматы помимо Avro/Protobuf/JSON Schema? (GraphQL, OpenAPI, AsyncAPI)Apicurio 3.x
Apicurio Registry — 7+ форматов, PostgreSQL backend, Red Hat enterprise supportKarapace
Karapace — 1:1 Confluent-compatible, Apache 2.0, минимальная миграцияИтоги
Выбор Schema Registry зависит от контекста:
- Confluent SR — стандарт де-факто, максимальная экосистема и документация
- Apicurio 3.x — Apache 2.0, multi-format (7+), PostgreSQL backend, Red Hat support
- AWS Glue SR — serverless, бесплатный, IAM-native, но locked-in в AWS
- Karapace — Apache 2.0 drop-in replacement для Confluent SR с минимальной миграцией
- buf BSR — дополнение (не замена) для Protobuf governance: lint, breaking detection, code gen
В следующем уроке — как schema evolution работает в table formats: Delta Lake, Iceberg, Hudi, Paimon.