Как стать автором
Обновить
77.25
Skillfactory
Онлайн-школа IT-профессий

Как визуализируют своевременность данных в Airbnb

Время на прочтение 7 мин
Количество просмотров 2.8K
Автор оригинала: Chris Williams

Команды Airbnb собрались вместе, чтобы за год создать SLA Tracker – визуальный аналитический инструмент, помогающий формировать культуру своевременности данных. Этот информационный продукт позволил нам разрешить и систематизировать следующие вопросы своевременности набора:

  1. Когда считать, что набор опоздал?

  2. Какие данные часто опаздывают?

  3. По какой причине набор опоздал?

Трекер – важная часть усилий в достижении высокого качества данных, и, чтобы создать его, потребовалось преодолеть многие технические, организационные проблемы и проблемы продукта. Здесь остановимся на дизайне: расскажем, как проектировали и создавали визуализацию о своевременности данных.


Данные запаздывают

Своевременность данных крайне важна для бизнеса, однако поставлять их вовремя трудно: путь от сбора до конечного вывода содержит множество шагов. В Airbnb – и везде, где работают большие конвейеры, – сырые наборы данных очищаются, объединяются и преобразуются в структурированные данные, затем эти данные улучшают функции продукта, позволяя аналитикам принимать обоснованные решения.

Для своевременной поставки данных Airbnb мы стремимся к тому, чтобы владельцы каждого промежуточного шага фиксировали соглашения об уровне обслуживания (SLA) по доступности данных к конкретному времени. Например, владелец набора обещает, что метрика "бронирование" будет содержать самые актуальные данные к 5 утра по UTC, и если набор к этому времени недоступен, то он опоздал.

Как часто наборы опаздывают?

Сначала мы решили, что, опираясь на представление отчёта, Report поставщики данных должны понимать, когда данные выгружены и как часто они соответствуют SLA (рис. 1). 

В этом представлении поставщики в реальном времени отслеживают ситуацию и видят тенденции по нескольким наборам, которыми владеют или которым уделяют внимание. 

Мы также позаботились о том, чтобы инструмент был полезен даже при отсутствии формального заданного SLA, когда проявится типичное время выгрузки. При первом запуске инструмента SLA ещё не было, кроме того, есть наборы, которые используются не очень широко, то есть SLA им не требуется.

Рис. 1 – SLA Report предоставляет высокоуровневый обзор производительности SLA по спискам наборов. Каждая строка содержит индикатор состояния последнего раздела данных, а также гистограммы, отражающие данные о времени выгрузки (красные столбцы показывают дни, когда время выгрузки не соответствует SLA).
Рис. 1 – SLA Report предоставляет высокоуровневый обзор производительности SLA по спискам наборов. Каждая строка содержит индикатор состояния последнего раздела данных, а также гистограммы, отражающие данные о времени выгрузки (красные столбцы показывают дни, когда время выгрузки не соответствует SLA).

В Report используются традиционные списки объектов данных и небольшие визуальные эффекты, которые кратко обобщают типичное время выгрузки и исторические данные. Поставщики могут организовать наборы по спискам и работать со списками командно. Благодаря такому обобщению данных время выгрузки и производительность SLA понять так же просто, как курировать список наборов.

Отчётность – только вершина айсберга

Хотя Report сильно упрощает понимание того, действительно ли набор опаздывает, это представление не решило главные проблемы SLA:

  • Каково разумное SLA набора?

  • Как понять причину опоздания?

Это проблемные вопросы, потому что наборы зависят друг от друга и возникают последовательно: сначала одно преобразование, затем другое (рис. 2).

Рис. 2 – Пример происхождения данных набора "A". "A" зависит от "B", который зависит от "C" и "D", и так далее.
Рис. 2 – Пример происхождения данных набора "A". "A" зависит от "B", который зависит от "C" и "D", и так далее.

Таким образом, наличие одного набора неразрывно связано с иерархически сложным  "происхождением" других наборов. Чтобы установить реалистичное SLA, нужно учитывать дерево зависимостей, которое иногда состоит из 100 сущностей, а также их SLA.

Добавим к этому сложности: когда что-то идёт не так, попытка сопоставить иерархические зависимости со временной последовательностью даёт результат: SLA упущено и ничего не видно. Трудно рассуждать о причинах в такой ситуации. Инструментальная оснастка Airbnb позволила дата-инженерам выявлять проблемы в конвейере одной команды; сделать то же самое на конвейерах нескольких команд экспоненциально сложнее.

Почему набор опоздал?

Ранний дизайн

Чтобы поставщики данных видели зависимости набора и временные рамках этих зависимостей, разработано представление о происхождении набора – Lineage. 

Информация о происхождении данных – это от 10 до 100 таблиц, а каждая таблица – это 30 дней исторических данных, а также SLA и связей между ними, поэтому мы нуждались в краткой форме представления, а это от 1,000 до 10,000 отдельных точек данных.

В наших первоначальных исследованиях акцент делался на происхождении выгрузки, но не на последовательности во времени (рис. 3). Несмотря на то что зависимости небольших участков линии происхождения понять было легко, не получалось выделить те из них, что вызывали задержки выполнения в общем конвейере, а также было трудно понять, сколько времени создавался набор.

Рис. 3 – Ранняя разведка с акцентом на происхождение набора. В каждой графе указано историческое время выгрузки каждого набора данных в более крупном конвейере.
Рис. 3 – Ранняя разведка с акцентом на происхождение набора. В каждой графе указано историческое время выгрузки каждого набора данных в более крупном конвейере.

Фокус на времени с помощью представления Timeline

Затем мы сместили акцент на последовательности во времени. Чтобы представлять последовательности, мы создали диаграмму Ганта, включающую зависимости (рис. 4) с такой функциональностью:

  • Каждая строка представляет набор в смысле происхождения, конечный набор расположен наверху.

  • У каждого набора есть горизонтальная полоса, отображающая начало, продолжительность и время окончания задачи обработки данных в пределах выбранных дат или времени.

  • Если набор имеет SLA, время обозначается вертикальной линией.

  • Распределения типичного времени начала и окончания помечены, чтобы помочь поставщикам данных оценить, опережают ли они график или не успевают и подвергают риску следующий набор.

  • Между родительскими и дочерними наборами рисуются дуги, чтобы поставщики данных прослеживали происхождение и смотрели, не вызваны ли задержки зависимостями.

  • Выделенные дуги представляют важнейшие “узкие” места.

Рис. 4 – Timeline даёт чёткое представление о последовательности и продолжительности преобразований данных, сохраняя при этом важные иерархические зависимости, которые дают последовательности контекста. Исторические данные о времени выгрузки отображаются для каждой строки набора слева от промежутка.
Рис. 4 – Timeline даёт чёткое представление о последовательности и продолжительности преобразований данных, сохраняя при этом важные иерархические зависимости, которые дают последовательности контекста. Исторические данные о времени выгрузки отображаются для каждой строки набора слева от промежутка.

С таким дизайном легко найти проблемный шаг (это часто длинный красный столбик) или определять общесистемные задержки, когда все шаги занимают больше времени, чем обычно (много жёлтых полос, каждая из которых длиннее типичного времени выгрузки). С помощью этой визуализации многие команды Airbnb сегодня отлаживают задержки в данных.

Ищем иголку в стоге сена – "узкие" места

В наборах с очень большими деревьями зависимостей было трудно найти релевантные медленные «узкие» места, которые задерживают весь конвейер. Мы смогли существенно снизить уровень шума и выделить эти проблемные наборы, разработав концепцию «узкого» места – последовательности последних полученных наборов-предков, препятствующих запуску преобразования дочерних данных и тем самым задерживая весь конвейер (рис. 5).

Рис. 5 – Сравнение всей линии происхождения (слева, n=82) и отфильтрованного пути к "узкому" месту (справа, n=8). Пути «узких» мест значительно улучшают соотношение  «сигнал – шум» и облегчают поиск проблемных этапов больших конвейерах.
Рис. 5 – Сравнение всей линии происхождения (слева, n=82) и отфильтрованного пути к "узкому" месту (справа, n=8). Пути «узких» мест значительно улучшают соотношение  «сигнал – шум» и облегчают поиск проблемных этапов больших конвейерах.

Погружение в историческое представление (Historical)

Итак, «узкое» место выявлено. Теперь важный вопрос – вызвана задержка на этом этапе длительностью самой работы или замедлениями в зависимостях? Ответ на этот вопрос помогает поставщикам данных понять, нужно ли оптимизировать именно их конвейер, или, чтобы сократить время SLA, нужны переговоры с владельцами зависимостей. Чтобы позволить отслеживать причины, мы построили подробное представление выполнения выгрузки набора, показывающее длительность и выполнения, и задержки (рис. 6).

Рис. 6 – Исторические распределения времени выполнения и задержек помогают быстро отличить SLA (красным цветом) из-за позднего начала вверху и сравнить с длительным выполнением внизу. Объединив эти взаимодополняющие представления в SLA Tracker, мы получаем полную перспективу своевременности данных (рис. 7).
Рис. 6 – Исторические распределения времени выполнения и задержек помогают быстро отличить SLA (красным цветом) из-за позднего начала вверху и сравнить с длительным выполнением внизу. Объединив эти взаимодополняющие представления в SLA Tracker, мы получаем полную перспективу своевременности данных (рис. 7).
Рис. 7 – Трекер SLA состоит из нескольких представлений. Представление Report даёт обзор состояния набора данных, Lineage позволяет провести анализ первопричин времени выгрузки, а Historical фиксирует исторические тенденции в подробностях.
Рис. 7 – Трекер SLA состоит из нескольких представлений. Представление Report даёт обзор состояния набора данных, Lineage позволяет провести анализ первопричин времени выгрузки, а Historical фиксирует исторические тенденции в подробностях.

Процесс и оснастка

Почти год мы потратили на разработку концепции, проектирование, создание прототипов и внедрения SLA Tracker в производственную среду. Большая часть этого времени потрачена на разработку API данных в UI и на итерации Lineage.

Чтобы упростить Report, мы использовали статические конструкции и прототипы экранов с хот-спотами (инструмент Clickthrough Prototypes) и универсальные поддельные данные. В альфа- и бета-релизах мы выполняли итерации визуального языка, то есть визуализировали данные так, чтобы их было проще охватить и понять (рис. 8).

Рис. 8 – Эволюция визуального отображения времени выгрузки; отображены текущее и типичное время.
Рис. 8 – Эволюция визуального отображения времени выгрузки; отображены текущее и типичное время.

Совершенно иначе мы подошли к проектированию Lineage. Его информационная иерархия продиктована формой данных. Таким образом, критично прототипирование на выборках реальных данных. Мы разработали эти прототипы на TypeScript, используя низкоуровневый набор компонентов визуализации visx для React, этот набор позволяет повторно использовать код при внедрении в производственную среду (рис. 9).

Рис. 9 – Эволюция диаграммы Ганта Lineage (слева направо): первые ящики с усами, множество промежутков; простые промежутки с дугами зависимостей; упрощение поиска узких мест.
Рис. 9 – Эволюция диаграммы Ганта Lineage (слева направо): первые ящики с усами, множество промежутков; простые промежутки с дугами зависимостей; упрощение поиска узких мест.

После обретения уверенности в нашей визуализации, но до внедрения в производственную среду мы доработали визуальные элементы статических макетов в Figma (рис. 10).

Рис. 10 – Разработка простого, но согласованного языка дизайна (слева) во всех представлениях SLA Tracker (справа) помогла сбалансировать плотность информации, сделав элементы более понятными.
Рис. 10 – Разработка простого, но согласованного языка дизайна (слева) во всех представлениях SLA Tracker (справа) помогла сбалансировать плотность информации, сделав элементы более понятными.

Заключение

В этом проекте мы применили визуализацию данных и UI/UX-дизайн – междисциплинарную область, которую называем "Data Experience", в отношении важных проблем своевременности данных, требующих глубокого понимания сложной временной и иерархической информации. Это позволило сделать анализ своевременности данных доступным даже в сложной экосистеме данных крупной компании. Для разработки сложных инструментов визуального анализа требуются время и итерации, но результат работы может принести большую пользу.
Если хотите научиться работать с данными не хуже специалистов из Airbnb — то приходите учиться. Будет сложно, но интересно!

Узнайте, как прокачаться в других специальностях или освоить их с нуля:

Другие профессии и курсы
Теги:
Хабы:
+7
Комментарии 0
Комментарии Комментировать

Публикации

Информация

Сайт
www.skillfactory.ru
Дата регистрации
Дата основания
Численность
501–1 000 человек
Местоположение
Россия
Представитель
Skillfactory School