76 подписчиков
Достучаться до истины (часть 2)
Вчера поднял тему доверия к данным. Основная причина почему доверия нет - низкое качество данных.
Пример:
У компании есть сайт, на котором она продает товары покупателям. Компания отслеживает когда покупатель на сайте просматривал карточку товара и нажал на кнопку "В корзину". Считаем конверсию сколько людей просмотрели карточку -> сколько из них положили товар в корзину.
Проблема на Frontend (пользовательский интерфейс сайта)
Всегда клик по кнопке "В корзину" учитывался корректно, а в один из дней вдруг взяло и перестало считаться. Заметил это бравый разработчик через пару дней и поправил баг.
➡️ Из-за такого инцидента пока ошибка не была устранена - данным в этот период доверять нельзя.
Проблема на Backend (логика приложения и база данных)
С новым релизом приложения поменялся API метод и принимаемый формат сообщения данных, благодаря которому данные о клике пользователя записываются в базу данных. Из-за скрытого и трудно воспроизводимого бага не заметили проблему и в итоге часть сообщений записывалось в базу успешно, а часть записывалось с дублированием данных, но под разным временем записи события. В итоге: клик клиент сделал один раз - а в базе на этот клик оказалось 2 события
Проблема в ETL при передачи из БД в Аналитическое Хранилище
Есть поток данных, который каждый день выгружает пачку накопившихся событий о кликах за сутки и записывает это в аналитическое хранилище. Выгрузка идет ночью, чтобы не нагружать системы в рабочее время. И вот представим такое правило: сколько данных в пачке забрали из базы -> столько и должны положить в хранилище (пусть трансформаций никаких не будет).
И вот представьте, наступает время выгрузки ночью, запускается процесс, и в это время возникает проблема с внутренней сетью и инструмент просто отваливается и перестает грузить пачку данных. Сбой в одну ночью, через неделю еще сбой, через месяц еще похожая ситуация. Если такие сбои не улавливать и не прогружать части данных после них корректно - в итоге многое можно потерять.
Проблема при расчетах на аналитическом слое
Здесь не буду усложнять и растягивать. Пусть мы на эту задачу поставили не очень внимательного аналитика, не провалидировали его расчеты и отдали это бизнес-пользователям. А потом через время получили от них ***, потому что цифры с реальностью вообще никак не бьются.
Кто виноват?
- невнимательный аналитик?
- frontend-разработчик?
- тестировщики?
- backend-разработчик?
📍Каждый конечно отвечает за свою зону ответственности, но как правило чем ближе ты находишься к слою аналитики и видишь перед собой длинный поток данных до тебя, тем больше вероятность того, что тебе и предстоит помогать другим коллегам отлавливать ошибки, баги, сбои и т.д.
Здесь прям хочется дать сравнение с рекой . Если кто-то наверху течения кинул мусор в реку, то его увидят все кто стоит ниже по течению. А тому кто выше будет пофиг на это, ведь у него все чисто)
Не мусорите ни в природе, ни в потоках данных 😃
2 минуты
12 января 2024