February 19, 2020·4 min read·engineeringkafkaconnectintegrations

A larger connector catalog changes the work around Kafka integration

Confluent reports more than 100 supported connectors. The useful distinction is between a reusable integration framework, a connector's behavior and the support attached to a particular implementation.

An integration needs more than a client capable of producing or consuming Kafka records. It needs a definition of progress in the external system and a way to resume work. Confluent's 19 February connector announcement reports more than 100 supported connectors. The post says the company ended the previous year above that number, so today's event is the public account of the milestone rather than a claim that the hundredth connector arrived today.

Confluent says most are developed and supported by the company, with about a quarter coming through its partner verification program. Its catalog distinguishes support provider, license and managed-cloud availability. Those distinctions matter because a connector count alone does not describe who maintains an integration or how an application can deploy it.

I value Kafka's retained log because several consumers can interpret the same history independently. Connect makes that history accessible to more systems, but each integration still needs to define what it reads or writes. A larger supported catalog is useful when it supplies maintained implementations of those definitions, not merely more names for systems that can exchange bytes.

The connector divides work among tasks

The Kafka 2.4 Connect guide distinguishes a connector from its tasks. A source connector imports data into Kafka, while a sink connector exports records to another system. The connector describes and partitions the work. Tasks perform the copying on workers. This separates the system-specific assignment of work from the runtime that schedules its execution.

The guide gives a useful example of source progress. A file stream can identify progress with a byte offset. A relational-table integration may instead use a timestamp column and query for later rows. Both can fit the Connect record model, but their offsets mean different things. The framework cannot infer a valid source cursor merely from the fact that the destination is Kafka.

That is part of the engineering work a prebuilt connector supplies. Its implementation translates the external system into streams of records and a progress model. Supporting that implementation means dealing with the external system's behavior as well as the Connect interfaces. The maintained unit is consequently larger than a small wrapper around a Kafka producer.

Workers provide a common execution model

Connect's guide describes standalone execution in one process and distributed execution across workers. Distributed mode balances work and stores configuration, offsets and task status in Kafka topics. The documented configuration requires workers in one Connect cluster to agree on the internal topics. This gives connectors a common operational environment without requiring each connector to implement an unrelated management service.

That shared runtime is relevant to the catalog milestone. An organization can use several system-specific connectors through one framework for configuration and task management. It can also add workers to the distributed group. Those capabilities reduce repeated infrastructure work, while the connector remains responsible for what its tasks do against the external system.

The separation prevents an easy misunderstanding about scaling. Adding workers makes more execution capacity available to the framework. It does not establish that every source can split into an arbitrary number of independent assignments. The connector's task configuration describes the actual work available for distribution, so system-specific partitioning remains part of the implementation.

Serialization is another independent choice

The same guide describes key and value converters that translate between Connect's data format and the bytes stored in Kafka. It explicitly treats serialization as independent of the connector. That lets an integration participate in a common data format without implementing each serialization format itself. It also gives application authors a separate configuration responsibility.

A connector's availability does not by itself determine the record format downstream consumers receive. The converter settings and the connector's own record model contribute to that result. Choosing an integration therefore still includes understanding the representation that enters the retained log. Other consumers depend on that representation when they read or replay the topic.

I find this separation useful because it keeps the integration contract inspectable. The connector defines the external-system mapping. Converter configuration defines serialization. The worker runtime supplies execution and progress storage. A support agreement can cover a particular implementation without making those responsibilities disappear.

Support and availability describe different things

Confluent's announcement presents a catalog with filters for connector type and enterprise support alongside licensing and cloud availability. A supported connector is therefore not automatically a managed connector, and a freely available connector is not automatically covered by the same support provider as another entry. Those are properties to establish for the implementation being selected.

The catalog's growth broadens the set of integrations for which an engineer can obtain an existing implementation and an identified support path. Connect's framework supplies the common runtime, while source offsets and task assignments retain their system-specific meaning. That is the practical value behind the milestone, especially when an application's durable history needs to cross a boundary into another data system.