Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Доверяй, но проверяй

MatMerd
December 04, 2024

Доверяй, но проверяй

Рассказываю о том, как мы обрабатываем пользовательские события и почему для этого понадобился свой сервис

MatMerd

December 04, 2024
Tweet

More Decks by MatMerd

Other Decks in Programming

Transcript

  1. О себе Скирда Матвей Ведущий Python разработчик Разрабатываю стартап по

    управлению своим временем и эмоциональным состоянием Fullstack: python, JS (TS), DevOps (капельку) Занимаюсь спортом, читаю комиксы В качестве хобби изучаю C, Rust и исходники Cpython
  2. О чём поговорим ➔ Путь события от пользователя к нам

    ➔ Свой сервис приема и обработки событий ➔ Выбор технологии: Go vs Python ➔ Уровни обработки и повышения качества данных ➔ Что используем для повышения качества данных ➔ Добиваемся высокой скорости приёма данных ➔ Немного бенчмарков нашей валидации: Pydantic vs Pydantic v2
  3. А так же ➔ Как мы реагируем на ошибки валидации

    ➔ Проверка валидации при релизе ➔ Мониторинг ошибок ➔ Пощадите ваш процессор
  4. Как выглядит событие Информация об устройстве Информация о пользователе Список

    экспериментов Информация о действии пользователя Метаданные
  5. Какие бывают события? Продуктовые Персональная витрина А/B эксперименты Скорость Ресурсы

    Улучшаем продукт Обучение ML Технические UX-исследования Логи Отладочные Разбор проблем
  6. Client request Get/Post Http server приемник Consumer 1 … Consumer

    N Consumers Kafka Clickhouse GUI Redash/Superset/SQL Product manger 1 Product manger N User Topic parsed events Topic raw events Архитектура своего приемника
  7. Client request Get/Post Consumer 1 … Consumer N Consumers Clickhouse

    GUI Redash/Superset/SQL Product manger 1 Product manger N User Kafka Topic parsed events Topic raw events Http server приемник Http server Резервный приемник Kafka Topic raw events Архитектура своего приемника
  8. Client request Get/Post Consumer 1 … Consumer N Consumers Clickhouse

    GUI Redash/Superset/SQL Product manger 1 Product manger N User Kafka Topic parsed events Topic raw events Http server приемник Http server Резервный приемник Kafka Topic raw events Архитектура своего приемника
  9. Архитектура консьюмера Kafka consumer Парсер Remote конфиг Гео-обогащение Дедупликация Kafka

    producer Topic 1 Kafka … TopicN DLQ kafka продюсер Очередь событий после парсинга Очередь событий после дедупликации
  10. Golang 1.17 confluent-kafka-go.v1 v1.8.2 ask=0 WRK Python 3.11 Fastapi 0.103.2

    Сравнение приёмника на Python и Go
  11. Уровни In schema Физический уровень Event валидация Out schema Контроль

    поступления данных Логический уровень Контроль отклонений Как мы обеспечиваем качество данных:
  12. Мониторинг — Алертинг Дедуплицирование Отстрел раз в сутки Consumer Event

    валидатор In memory дедупликатор Redis TTL время до 0 часов Telegram