# ADR-006 — چه زمانی CDC و Kafka لازم می‌شوند؟

When are CDC and Kafka justified?

Status: proposed · Date: 2026-10-15

## مسئله / Context

تازه‌ماندن context و چند consumer مستقل در مراحل بعد لازم می‌شوند؛ در اولین call مدل الزامی نیستند.

Fresh context and independent consumers matter later, not for the first model call.

## گزینه‌ها / Alternatives

polling با cursor؛ outbox polling؛ log CDC و Kafka.

Cursor polling, outbox polling, or log CDC with Kafka.

## انتخاب فعلی / Choice

فاز context: برای منبع تحت مالکیت، business+outbox اتمی و سپس CDC؛ Kafka وقتی replay/fan-out مستقل ارزشش را نشان دهد.

Context phase: atomic business/outbox changes with CDC for owned sources; Kafka when independent replay/fan-out justifies it.

## چرایی و trade-off / Rationale and trade-off

dual write می‌تواند شکاف یا ترتیب متفاوت بسازد؛ افزودن broker بدون نیاز، هزینهٔ نگهداری دارد.

Dual writes can leave gaps or divergent ordering; an unnecessary broker adds operational cost.

## فرض‌ها / Assumptions

E07 پنج event/ثانیه و دو KB/event؛ E08 هفت روز replay همگی فرض‌اند.

E07 assumes five events/second and 2KB/event; E08 assumes seven days of replay.

## روش آزمون / Validation

snapshot هم‌مرز، overlap/delete/replay و cursor expiry؛ مقایسهٔ freshness/هزینه با polling ساده.

Boundary-aligned snapshots, overlap/deletion/replay/cursor expiry; compare freshness/cost with polling.

## بازنگری / Revisit

اگر polling نیازِ تازگی را با هزینهٔ کمتر جواب داد، CDC/Kafka را به مرحلهٔ بعد منتقل کن.

If polling meets freshness needs more cheaply, defer CDC/Kafka.

DDIA: 1, 6, 11, 12, 13
