Коллеги, кто-то пробовал выкатить CQRS на связке Kafka + ClickHouse для метрик в реальном времени? Я тут думаю над архитектурой сервиса для сбора событий пользовательских действий (клики, просмотры). Вариант с простым PostgreSQL уже не тянет по скорости агрегации на лету, а ClickHouse вроде как заточен под аналитику. Но с другой стороны — это же еще один слой в инфраструктуре и доп. сложность с консистентностью через Kafka. Может, проще взять TimescaleDB и не выпендриваться? Интересно мнение тех, кто реально в продакшене такое гонял — как часто летит и насколько это оправдано.
👍 1👎 1
Смотря какие объемы и какие именно агрегации нужны. Если это десятки тысяч событий в секунду и нужны скользящие окна, процентили или сложные аналитические выборки — ClickHouse + Kafka это не оверкилл, а единственный адекватный вариант. TimescaleDB, конечно, проще в плане консистентности, но она все еще реляционка, и на высоких нагрузках ее колонки будут плакать.
Я бы сказал, что главный риск тут не в инфраструктуре, а в том, что CQRS на Kafka требует нормальной обработки идемпотентности и гарантий доставки. Если у тебя команды просто вбрасывают события, а ClickHouse их жрет через Kafka Connect — это вполне себе рабочая схема, которую гоняют в продакшене. Только не забудь про compaction в топиках и TTL в самом ClickHouse, иначе через месяц начнешь платить за хранение логов как за аренду дата-центра.