Технологии 29 мая 2024

Анализ данных в высоконагруженных инфраструктурах — опыт лида из Wildberries и VK

Далее

При выборе онлайн-образования в сфере IT исключительно важно учитывать уровень знаний и опыта преподавательского состава. Чем более крутые лекторы и наставники вам достанутся, тем больше ценных практических нюансов они смогут вам передать в ходе обучения. Одним из лидеров рынка в этом отношении является Центр непрерывного образования факультета компьютерных наук Высшей школы экономики.  В нем преподают исследователи с научными степенями, руководители IT-отделов крупнейших компаний и другие топовые эксперты.

Один из них — Ян Пиле, преподаватель Data Science и Python в Центре непрерывного образования факультета компьютерных наук НИУ ВШЭ. Ян руководит командой анализа данных маркетплейса Wildberries. До этого он лидировал схожие команды в VK и работал аналитиком в Яндексе. Мы поговорили с Яном о его опыте работы и мотивации преподавать в Вышке.

Справка: Анализ данных позволяет находить закономерности и взаимосвязи в потоке информации, а также осуществлять статистическое моделирование бизнес-процессов и действий пользователя. Сложность анализа данных зависит, в том числе, от нагрузки на IT-инфраструктуру компании. Примером систем с высокой нагрузкой являются сайты и базы данных маркетплейсов, которыми пользуются миллионы пользователей в день. В число задач специалистов по анализу данных входит обеспечение стабильности корпоративной системы сбора и обработки данных, а также релевантность итоговых результатов анализа.

Опишите, пожалуйста, до пяти ключевых принципов организации эффективного анализа данных в высоконагруженной инфраструктуре.

Во-первых, для аналитики должен быть заведен отдельный «слой» с данными, с быстрым доступом и возможностью для быстрой фильтрации и агрегации. Если это есть, то результаты аналитики не придется «варить» часами.

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

Третье — это хорошая команда Data-инженеров (на это можно было бы заменить и первые два пункта). Для аналитики «плохие» данные — главная боль, потому что если «на вход» аналитику пришел мусор, то и «на выходе» ничего лучше ожидать не приходится. 

Далее, аналитика должна концентрироваться на результате (например для бизнеса, если вы «в индустрии»), а не на процессе. Это, конечно, так себе совет, но менее правдивым от своей очевидности он не становится. 

И не стоит забывать о принципе Парето. Большую часть результата почти всегда можно получить меньшими вложениями. Если что-то пошло не так, стоит начать с более простых гипотез, буквально посмотреть на данные глазами. Если вы считаете метрику, попробуйте «собрать» ее сначала на маленьком сэмпле, а не гоняйте терабайты данных туда-сюда.

Каковы преимущества микросевисной архитектуры в контексте управления данными?

Я бы сказал, что плюсы те же, что у «микросервисов» в принципе.

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

Кроме того, сервисы легче заменять/подменять и масштабировать, чем куски одного монолита. Скажем, вы можете выстроить новую версию личного кабинета с новым способом разметки аналитических событий, не «убивая» старую версию и, если что-то с новой версией пойдет не так, плюс-минус быстро переключиться на старую, не слишком потеряв данные.

Позволю себе сказать и о минусах. С микросервисами тяжелее работать в том смысле, что это разрозненные звенья одной связанной системы. Если сам по себе сервис работает, это вовсе не означает, что он «дружит» со всей остальной системой. Тестирование ошибок в такой системе будет значительно сложнее плюс технологическая реализация труднее.

Вы преподаете Python. В связи с этим вопрос: Каковы границы применимости этого языка программирования в анализе данных? Правда ли, что после некоторых предельных показателей нагрузки решения на Python теряют эффективность и приходится переходить на R?

Да, в течение довольно длительного промежутка времени я его преподаю и почти ежедневно пишу на нем на работе, но программистом так и не стал. Пожалуй, мне трудно ответить на вопрос о том, где границы применимости, если я сам в них никогда не упирался. На курсах я люблю говорить, что Python так распространен потому что используется не «сам по себе», а в роли этакой «клавиатуры». Поясню: чтобы работать на компьютере, вы должны подавать команды процессору, однако вместо явного управления процессором вы что-то набираете на клавиатуре. В этом смысле используется и Python: для него написано огромное количество библиотек, внутреннее устройство которых «сделано» на намного более «быстрых» языках типа C++, Java, Go или Fortran, а Python только «вызывает» из них какие-то процессы. Так что с точки зрения аналитики данных (в которой я , собственно, и работаю), мне еще ни разу не доводилось сталкиваться с задачей, которую не получилось бы решить по алгоритмической причине. Ну а на R я вообще не пишу.

Расскажите, пожалуйста, о вашей мотивации в преподавании на курсах ЦНО ФКН ВШЭ? Что вас вдохновляет в этой работе?

Как бы патетично это ни прозвучало, в преподавании для меня есть элемент детской мечты — в какой-то момент я мечтал стать профессором. Может быть, когда-то и стану, но для начала нужно хоть кандидатскую дописать. Учить людей чему-то, рассказывать им что-то интересное кажется мне чем-то очень вдохновляющим, мне нравится это «само по себе» и дополнительной мотивации, как мне кажется, не требует. Кроме того, я считаю, что получается это у меня неплохо, а позитивные отзывы от студентов очень сильно мотивируют. Кстати, отрицательные отзывы тоже мотивируют, хотя и воспринимаю я это болезненно! Но только отрицательные отзывы «по делу», когда человек может объяснить, что именно не понравилось и что можно было бы изменить. 

Ну и еще, конечно, вдохновляют сами студенты — курсы ЦНО часто проходят взрослые люди с совсем не профильным образованием, и когда видишь, что человек преодолевает себя, достигает чего-то нового (а это, в общем-то, не слишком просто), пытается что-то новое понять, а самое главное — задает вопросы, на которые у тебя «с ходу» нет ответа, тогда понимаешь, что и тебе самому надо «получше разобраться» в чем-то. А такое я люблю.

От редакции:

Если вам понравилось это интервью, запишитесь на программу «Аналитик данных», на которой преподает Ян:

Или на короткие курсы по отдельным предметам:

Python для автоматизации и анализа данных

Прикладная статистика для машинного обучения

Математика для анализа данных

Если вам ближе онлайн образование, вы можете записаться на онлайн-курс:

Программирование на Python

Обложка — downloaded from Freepik.

Реклама. Национальный исследовательский университет «Высшая школа экономики» ИНН 7714030726. Erid:  2VfnxwhMYTa

Читайте также:

О том, как «Вышка» заряжает вашу карьеру в IT

Что общего у мозга и нейронных сетей? Мнение ученого и преподавателя ВШЭ.