CCDAK is a certification focused on Kafka application development: Producer/Consumer, Schema Registry, Kafka Streams, Kafka Connect, and security/observability. It tests design decisions (delivery guarantees, schema evolution, parallelism, and operational trade-offs) rather than rote terminology.
This guide is based on the stable specs in the official documentation and explains the most frequently tested topics from a hands-on perspective. Always confirm the latest exam specifications on the Confluent certification page.
CCDAK is a certification for developers building Kafka-based applications. It evaluates correctness in data design and API usage, plus your ability to reason about availability, fault tolerance, and consistency. Its main focus areas are Producer/Consumer implementation, schema management with Schema Registry, stream processing with Kafka Streams, and data integration with Kafka Connect.
The exam covers vendor-neutral Kafka core concepts (topics/partitions, replication, ISR, leader election, consumer groups), delivery guarantees (at-most/at-least/exactly-once), security (TLS/SSL and SASL concepts), and monitoring (key broker and client metrics), along with practical usage of the Confluent platform (Schema Registry, Connect, Streams).
The exact weighting is adjusted by exam version. The ranges below are estimates based on the official domains. Questions rarely stay inside a single domain (for example, Producer retry control combined with the broker's min.insync.replicas), so you need to be able to reason across domains.
Streams and Schema Registry/SerDes are tested at the design level: state management, repartitioning, and compatibility strategies. Operational commands stay within a developer's perspective: checking consumer groups and reading latency and throttle metrics.
Register through the Confluent certification page. After creating an account, select CCDAK from the exam catalog and book your delivery mode (online proctored or test center) and time. Complete the environment requirements (camera, microphone, stable connection, ID) and the system check in advance.
Exam length, question count, and passing criteria are adjusted by version. The exam is primarily delivered in English. Always check the official policies for retakes, cancellations/reschedules, expiration, and the handling of fees and vouchers.
Build up in a focused sprint: fundamentals first, then APIs, then the processing platform. Every week, include hands-on exercises (running locally or in containers, breaking things and then fixing them) and tie each configuration to the behavior you observe.
Aim to explain how behavior changes when you tweak configuration (duplicates, ordering, latency, rebalancing, throughput/fault-tolerance trade-offs) rather than memorizing facts.
Producer delivery guarantees emerge from the interaction of acks, retries, enable.idempotence, max.in.flight.requests.per.connection, and delivery.timeout.ms. Combining an idempotent producer with transactions (transactional.id) gives you duplicate-free, commit-level atomicity inside Kafka. On the consumer side, set isolation.level=read_committed so you only read committed records, completing the EOS picture.
In Kafka Streams, use processing.guarantee=exactly_once_v2. It bundles the underlying producer/consumer settings (transactions and idempotence) correctly and guarantees consistency between state stores and output topics. End-to-end EOS that includes external systems is system-dependent: if a sink outside Kafka is not idempotent or transactional, design for at-least-once at minimum.
| Delivery guarantee | Key configuration | Duplicates on retry | Typical use cases |
|---|---|---|---|
| At-most-once | acks=0, or advance processing before committing | Cannot occur, but data loss can | Some telemetry, loss-tolerant one-way notifications |
| At-least-once | acks=all, retries>0, relaxed ordering requirements | Possible (handle dedup downstream) | Many business events; processing whose aggregations are idempotent/commutative |
| Exactly-once (within Kafka) | enable.idempotence=true, transactional.id, read_committed, or Streams with exactly_once_v2 | Logically impossible inside Kafka | Preventing double-counting of money movements; stateful stream processing |
Data flow and consumer-group parallelism
Configuration example: Idempotent Producer and Kafka Streams EOS
// Java Producer (idempotence + transactions)
Properties p = new Properties();
p.put("bootstrap.servers", "localhost:9092");
p.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
p.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
p.put("acks", "all");
p.put("enable.idempotence", "true");
p.put("retries", Integer.toString(Integer.MAX_VALUE));
// Use 1 for strict ordering, <=5 for throughput
p.put("max.in.flight.requests.per.connection", "1");
p.put("transactional.id", "orders-txn-001");
KafkaProducer<String, String> producer = new KafkaProducer<>(p);
producer.initTransactions();
try {
producer.beginTransaction();
producer.send(new ProducerRecord<>("orders", "k1", "v1"));
// Bundle multiple records into a single transaction
producer.commitTransaction();
} catch (Exception e) {
producer.abortTransaction();
}
producer.close();
// Java Consumer (read committed)
Properties c = new Properties();
c.put("bootstrap.servers", "localhost:9092");
c.put("group.id", "orders-app");
c.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
c.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
c.put("isolation.level", "read_committed");
// Kafka Streams (EOS v2)
Properties s = new Properties();
s.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
s.put(StreamsConfig.APPLICATION_ID_CONFIG, "payments-streams");
s.put(StreamsConfig.PROCESSING_GUARANTEE_CONFIG, StreamsConfig.EXACTLY_ONCE_V2);
StreamsBuilder b = new StreamsBuilder();
KStream<String, String> in = b.stream("payments");
in.groupByKey().count(Materialized.as("cnt")).toStream()
.to("payments-agg", Produced.with(Serdes.String(), Serdes.Long()));
KafkaStreams app = new KafkaStreams(b.build(), s);
app.start();Many questions ask "which configuration best satisfies these requirements?". Fix your reading order (eliminate unrealistic options first), then between the remaining two pick the one closest to the requirements. For numeric and timeout settings, keep their interactions in mind (for example delivery.timeout.ms with retries x linger x batch.size).
Build your own mocks as requirement → configuration → observation triples. For example, compare Producer configurations under three constraints (no duplicates, strict ordering, high throughput) and observe the failure modes when you change the broker's min.insync.replicas. Be ready to use the CLI to check consumer-group lag and to verify a topic's partition count and assignment.
CCDAK
問題 1
You write from a producer to Kafka, and consumers should only read records from committed transactions. Which configuration combination is most appropriate?
正解: A
To achieve exactly-once, you need idempotence and transactions (transactional.id) enabled on the producer, and read_committed on the consumer so it only reads committed records. acks=all is a fault-tolerance prerequisite. B and C do not meet the requirements, and D is a fetch-size setting unrelated to EOS.
Does CCDAK ask about ksqlDB implementation details?
The exam focuses on Producer/Consumer, Schema Registry, Kafka Streams, and Connect. ksqlDB tends to appear only at the conceptual level; detailed syntax and operations are usually out of scope. Always confirm the final scope against the official blueprint.
Can I take the exam if I work in a language other than Java?
Yes. The exam tests API semantics and design decisions and is language-agnostic. Most documentation and samples are in Java, but you can pass with Python or Go as long as you understand the underlying behavior and how configuration choices affect it.
How should I handle differences between Kafka versions?
Study against the stable specs in the official documentation. For example, idempotent producers and transactions (0.11+) and Streams' exactly_once_v2 are the current recommendations. Operational values and UI elements can change, so focus on the cause-and-effect relationships between concepts and properties to stay resilient to version differences.
Practice with certification-focused question sets
無料で問題を解いてみるNicheeLab Editorial Team
NicheeLab editorial team focused on data engineering and cloud certification learning. Content is structured around practical study needs and official exam domains.
Kafka Topics & Partitions: Distribution Fundamentals (2026)
How Kafka topics and partitions enable scale — ordering guar...
CCDAK Exam Guide: Confluent Certified Developer (2026)
Complete prep for the CCDAK exam — Producer/Consumer API, St...
CCAAK Exam Guide: Confluent Certified Administrator (2026)
Pass the CCAAK exam — cluster management, partitions, securi...
Kafka Replicas & ISR: Fault Tolerance Explained (2026)
Replica placement, in-sync replicas (ISR), leader election. ...
Kafka Offsets: Commit Modes & Consumer Position (2026)
Offset semantics — auto vs. manual commit, __consumer_offset...