1. For a given entity, is the same team that owns that entity’s service the team that must implement the CDC connector? As in, if a CDC connector does not exist for an entity, do you need to wait for the service-owning-team to implement one?
>> No. CDC connector is provided by a centralized database team(link to blog). Also we have a general framework for connectors, so there’s no need to write any code - deployment of a connector for a database is configuration-based. In case the CDC connector is not available teams publish their own application events. We also recommend using the outbox pattern.
2. Do the CDC connectors expose the underlying db model, or are they configured by the implementing team to publish a specific interface? For example: A Foo table might have Foo.private_col which is a private column that only the service knows about, and is not part of any API/graph interface - is Foo.private_col published by CDC or hidden?
>> CDC connector interface is agnostic of underlying db model. But the connector has its own interface(schema). Also during creation of a CDC connector there’s a functionality to specify a list of included/excluded fields, so it’s easy to skip fields that shouldn’t be exposed.
3. Could you share an example of what you mean by an application event? Webhooks?
>> We provide 2 ways of publishing application events: library + simple API that ensures that event is in correct format. All our streams are schematized, so it’s up to the client to define the fixed Avro schema of an event (while CDC connector automatically infers Avro schema based on table schema)