EDTL-интеграция для The Brand Collector: надежное решение на GO
The Brand Collector — международный реселлер pre-owned люксовых товаров с развитой партнёрской сетью поставщиков. Задача совпадала с кейсом eLADY: принимать крупные CSV-дампы от разных источников, приводить данные к единой таксономии, устранять дубли и отдавать чистый результат в целевые системы. Ключевое отличие — объём каждой поставки превышал 120 000 строк, что требовало особого внимания к производительности и стабильности.
Что такое eDTL и почему оно здесь критично
Мы использовали конвейер eDTL (Extract → Deduplicate → Transform → Load):
- Extract — потоковый приём CSV из HTTP/S, SFTP и облачных бакетов, без загрузки файла целиком в память.
- Deduplicate — удаление жёстких и «мягких» дублей (по SKU/EAN/ID, Brand+Model, близости названий), фиксация причин.
- Transform — нормализация полей (бренд/материал/размер/валюта), маппинг таксономий «источник → целевая», паттерн-матчинг и расчётные атрибуты.
- Load — выгрузка в целевую схему (CSV/NDJSON/API), статусы, отчёты и вебхуки.
Вставка блока D (Deduplicate) на таких объёмах существенно снижает «шум» и обеспечивает детерминированность результата при слиянии нескольких источников.
Первая версия: надёжный Fastify (Node.js)
Мы стартовали с сервиса на Fastify, сосредоточившись на устойчивости и предсказуемом поведении под нагрузкой:
- Стриминговый CSV-парсинг и батч-обработка (chunking) для 120 000+ строк.
- Очереди задач с контролируемым backpressure, идемпотентные джобы, DLQ для проблемных батчей.
- Кэширование соответствий таксономий и предварительная компиляция регулярных выражений.
- Наблюдаемость: структурированные логи, метрики по этапам eDTL, алёрты и аудит-трейл.
Эта версия доказала надёжность и выдерживала крупные поставки без деградации стабильно, но при росте частоты обновлений и числа правил потребовался дополнительный запас по скорости.
Ускорение: переписывание вычислительного ядра на Go
Сохранив Fastify как «оркестратор» (API, расписания, отчётность), мы вынесли тяжёлые вычислительные этапы в отдельные Go-воркеры:
- Потоковый парсинг (bufio + csv.Reader), pipeline/worker-pool для параллельной нормализации и маппинга.
- Кэш-слои (LRU/TTL) для горячих соответствий таксономий, компиляция регекспов один раз на прогон.
- Предсказуемое потребление памяти и стабильный GC под высокой загрузкой.
Результат: ускорение блоков «конвертация таксономии → маппинг → паттерн-матчинг» примерно на ~60% по внутренним бенчмаркам на идентичном железе и наборах данных (120 000+ строк).
Управление таксономиями и качеством
- Профили поставщиков и целевых получателей: версии правил, словари синонимов, исключения, каскад «категория → подкатегория → атрибуты».
- Паттерн-матчер: регулярные выражения, префиксы/суффиксы, разбор составных полей, эвристики для брендов/материалов.
- Отбраковка: отсутствие фото, ≥3 пустых критичных поля, аномалии цен/размеров, «мягкие» дубли.
- Отчётность: сводка причин отбраковки, дифф «до/после», показатели попаданий правил.
Надёжность и эксплуатация
- Идемпотентность: безопасные повторы задач, детектора дубликатов событий, порядковая фиксация снапшотов.
- DLQ и re-drive: управляемые сценарии повторной обработки проблемных батчей.
- Мониторинг: скорость парсинга, время на этапах, доля дублей/ошибок, SLA по поставкам.
- Контейнеризация и единые образы для stg/prod, canary-раскаты и план отката.
Что получил бизнес The Brand Collector
- Надёжную обработку массивных CSV (120 000+ строк) без ручных доработок и простоев.
- Единую таксономию для каталога партнёров, меньше дублей и мусора, предсказуемые результаты.
- Существенный прирост производительности благодаря Go-ядру (≈60% быстрее на ключевых этапах), при этом сохранилась управляемость и прозрачность Fastify-оркестрации.
Итог
Мы прошли путь от надёжного, быстро внедряемого Fastify-сервиса к гибридной архитектуре с вычислительным ядром на Go, которая уверенно «переваривает» поставки на 120 000+ строк. Конвейер eDTL обеспечивает детерминированное качество, а комбинация Fastify+Go даёт нужный баланс между скоростью, устойчивостью и удобством эксплуатации.
Использованные технологии
Достигнутые результаты
+60% скорости
Выдерживает csv 169.000+
Хотите создать похожий проект?
Расскажите о вашей идее, и мы поможем её реализовать