Представьте, что две версии системы работают параллельно, но реальный трафик обрабатывается только версией v1. В отличие от канареечного развертывания или feature flags, где небольшая часть запросов переключается на новую версию, dark reads ориентирован на обработку данных и стриминг.
Главная идея в том, что версия v2 получает трафик, но её результаты не используются в реальном проде. Вместо этого они сравниваются с v1 — если результаты корректны, можно плавно переключиться на новую версию.
Где используется Dark Read:
⚪️ Стриминг данных → Kafka, Flink, Spark: когда сложно разделить поток на % для тестирования.
⚪️ Базы данных → проверка корректности новой схемы или структуры данных перед переключением.
⚪️ Миграция API → тестирование новой реализации без влияния на пользователей.
⚪️ Финансовые системы → критически важные расчёты, требующие полной валидации перед переходом.
📑 Важные нюансы:
— Дедупликация сообщений → при параллельной обработке возможны дубли, важно учитывать это в логике.
— Логирование и метрики → необходимо отслеживать различия между v1 и v2, чтобы выявить проблемы.
— Сложность реализации → требует дополнительных ресурсов, так как обе версии системы работают одновременно.
Реализация Dark Reads зависит от вашей инфраструктуры, но в общем это про дублирование трафика, обработку обеими версиями и валидацию результатов.
@DevOpsKaz 😛
