Привет, Хабр! Недавно прошёл Хакатон ЕВРАЗа 2.0, посвящённый аналитике и веб-разработке в горно-металлургическом секторе. Это уже второй наш хакатон, и мы использовали опыт предыдущего мероприятия, чтобы новый получился ещё лучше. Кажется, с этими задачами мы справились и хотим поделиться результатами хакатона, рассказать о победителях и о том, как всё было. Так что если вам интересна тема цифровых технологий в металлургической промышленности — заглядывайте под кат.
Эксгаустер и его двойник
Основной задачей хакатона стала разработка цифрового двойника эксгаустера агломашины. Ну эксгаустер, вы же знаете… Нет? Тогда вот вам короткое — на 2,5 минуты — видео, поясняющее понятным языком, что это такое.
А если совсем в двух словах, то эксгаустер — это часть агломерационной машины, он постоянно втягивает горячий воздух и выпускает его в трубу. Внутри него расположен ротор — своего рода вентилятор, который прогоняет раскалённый воздух. Если этот ротор выходит из строя, то перестаёт работать и эксгаустер, и вся агломашина. Поэтому ротор важно вовремя заменять по мере износа, предупреждая поломки.
Участникам нужно было разработать и реализовать алгоритм, прогнозирующий дату выхода ротора эксгаустера из строя. А также придумать, как улучшить визуальный контроль за эксгаустером с рабочего места оператора. При этом в качестве основной информации, на которую могли опереться участники, выступал поток реальных данных с датчиков агрегата.
Хотя основная задача была одна, мы разбили её на подзадачи:
Разработать сервис для приёма и сохранения потока данных с эксгаустера и предоставления интерфейса доступа к этим данным.
Разработать веб-интерфейс для рабочего места машиниста эксгаустера, при этом интерфейс должен позволять как минимум:
отображать текущее состояние всех эксгаустеров на одном экране;
визуализировать детальные данные по конкретному эксгаустеру;
визуализировать поток данных во времени для анализа трендов;
Разработать алгоритм определения даты замены ротора эксгаустера и отображение результатов его работы в веб-интерфейсе (эту подзадачу оценивали только при условии реализации двух предыдущих подзадач).
Команды могли решать задачу целиком или только несколько подзадач — баллы они получали за каждую. Оценивая работы, жюри опиралось на такие критерии, как:
фронтенд — внешняя, презентационная часть программной системы;
бэкенд — внутренняя реализация программной системы;
алгоритм, который команда использует для определения, когда ротор выйдет из строя.
И чтобы не оставлять участников один на один с эксгаустером, на протяжении всего срока хакатона их сопровождали эксперты ЕВРАЗа — консультировали, отвечали на вопросы, поддерживали. А ещё организовали митап с мастер-классом по фронтенду на реальных примерах из ЕВРАЗа.
Нововведения
Хотя формат хакатона в целом не изменился, мы опробовали в его рамках пару экспериментов:
Не стали ограничиваться Zoom’ом для связи с участниками — трансляцию вели из оборудованной студии, а наши эксперты выступили ведущими.
Привлекли к состязанию не только внешних разработчиков, но и сотрудников ЕВРАЗа. Для этого мы разделили потоки участников: в одном потоке соревновались команды из внешних участников, во втором же — наши собственные разработчики. Разделение должно было создать равные возможности для людей, знакомых с металлургией — и не знакомых (внешние участники). Правда, работа в ЕВРАЗе на деле не особенно помогла нашим внутренним командам: компания так велика и задач у IT-подразделений так много, что большинство разработчиков точно так же впервые столкнулись с поставленной на хакатоне задачей, как и люди извне.
Хакатон в цифрах
Призовой фонд в этом году вырос и достиг 700 000 рублей. Мы разделили его на две части — по 350 000 на каждый из потоков. Внутри потока призовые составили:
200 000 рублей — команде, занявшей первое место;
100 000 рублей — за второе место;
50 000 рублей — за третье место.
Небольшие изменения коснулись и составов команд: если в прошлый раз можно было участвовать в хакатоне в одиночку, то теперь допускались команды минимум из 2 человек (и до 5). А если кто-то был один и без команды, организаторы помогали участнику найти место в какой-либо из других команд.
Всего на хакатон зарегистрировали 874 человека, а в состязание в итоге вступили 356 участников, сформировавших 94 команды. Онлайн-формат позволил принять участие людям из 77 городов России и других стран — Узбекистана, Казахстана, Беларуси. Даже разница часовых поясов не напугала айтишников, и хакатон собрал богатый урожай решений — 54 проекта.
Хакатон длился 40 часов, по итогам каждая команда должна была в течение 8 минут представить презентацию своего решения. В финал вышли 13 команд, и 6 из них стали призёрами.
Кто победил
Как мы уже говорили, в хакатоне было два потока, и в каждом мы определили своих победителей.
Внешние разработчики
1-е место: команда АБ
Состав команды:
Описание проекта: команда создала архитектуру на кластере Kubernetes с сервисом авторизации, с внутренними сервисами API, Kafka consumer.
Участники заметили восходящий тренд по вибрации подшипников и на основе этих данных спрогнозировали количество дней замены ротора.
Команда о хакатоне: «Очень понравилась подготовка хакатона, организация — на высоте. И кейс для реализации был выбран отличный, со вполне понятным ТЗ».
2-е место: команда Old School
Состав команды:
Описание проекта. Двое разработчиков создали сайт evraz-it.ru на стеках CSS, HTML, Javascript, SCSS, PHP, Python с меню и разделами мониторинга, графики и прогнозов. Сайт включал множество дашбордов с большим количеством функций, в том числе с описанием, как раскладываются данные и количество предупреждений.
Команда о хакатоне: «Понравилась задача, а ещё — подробное и понятное ТЗ. Плюс ко всему — настоящие данные с Kafka в режиме реального времени. И не можем не упомянуть полезную и объёмную связь от экспертов — их вовлечённость в тестирование нашего продукта была на высоком уровне».
3-е место: команда 16К20
Состав команды:
Описание проекта. Мини-аналитическая система с возможностью мониторинга состояния эксгаустеров агломашины, которая считывает данные из Kafka и сохраняет промежуточную БД в реальном времени.
Команда о хакатоне: «Кейс был проработан, всё разложено по полочкам, а если возникали вопросы, то ответы на них в 99% случаев были в ТЗ. И работать с реальными данными — это всегда удовольствие. Организация хакатона просто на высоте: задержек, лагов не было».
Разработчики из ЕВРАЗа
Участников и команд из ЕВРАЗа было немного (около 70 человек), но сотрудники компании ещё только пробуют свои силы на наших хакатонах. Для них тем более был интересным этот опыт, если учесть, что раньше они с эксгаустером дела не имели — задача хакатона позволила им узнать что-то новое о работе коллег.
Так или иначе, в потоке для наших разработчиков случилось неожиданное: две команды поделили первое место. Но давайте по порядку.
1-е место: команда ЕВРАЗ Маркет
Состав команды:
Павел Бабич — капитан, backend
Дарья Агафонова, backend
Надежда Кокорина, аналитика
Описание проекта. Автоматизированное рабочее место оператора агломерационной машины. Разработали модуль Bitrix24 с подключением открытых линий, разграничением доступа, масштабированием, подключением заявок в САП.
Команда о хакатоне
Дарья Агафонова, Москва:
«Не ожидала, что станем победителями. Поначалу было страшно смотреть на задачу. Мы даже слов таких не знали — “эксгаустер”, “агломашина”. Но потом осознали, что надо делать и как реализовать решение. Появился азарт успеть в срок и сделать всё максимально эффективно.
Надежда Кокорина, Санкт-Петербург:
«Сложно было конкурировать с коллегами, которые разбираются в показателях агломашин. Но у нас подобралась достойная команда, и мы справились».
Павел Бабич, Калининград:
«Несмотря на усталость, получили позитивный опыт. С субботы на воскресенье я даже спать не ложился. Успех принесли упорный труд и командная работа: мы декомпозировали задачу на маленькие кусочки и каждый занимался тем, что на него возложили».
1-е место: команда best_team_et
Состав команды:
Александр Толмачев — капитан, backend
Андрей Косинцев — DS
Сергей Кутовой — fullstack, генератор идей
Игорь Камынин — frontend
Антон Евсеев — backend
Описание проекта. Панель для оповещения и информирования работы эксгаустеров и агломашин. Считывают данные с Kafka в реальном времени и показывают на главном экране панели.
Команда о хакатоне
Игорь Камынин, Новочеркасск:
«Заинтересовала возможность разработать достойное приложение в команде с профессионалами. Ставку сделали на максимальную приближённость к бизнес-решению: разработанный нами цифровой продукт можно взять в любой момент и запустить на поток».
Александр Толмачев, Красноярск:
«Формат хакатона обычно не подразумевает чистый код, главное — это предложенные идеи и реализованный функционал. Для меня стало вызовом написать качественный код в сжатые сроки и решить поставленные задачи. А ещё мы использовали новую для нас технологию InfluxDB для хранения значений с датчиков».
Сергей Кутовой, Тобольск:
«У меня DevOps-направление. В хакатоне реализация таких процессов была необязательной, но это стало нашим козырем и помогло сильно упростить работу всем участникам команды».
Андрей Косинцев, Томск:
«Я Data Scientist, поэтому задание по прогнозу выхода из строя оборудования для меня было новым. Ещё до старта почитал, какие есть лучшие мировые практики работы в этом направлении. Сложнее оказалось реализовать решение в кратчайшие сроки».
Антон Евсеев, Екатеринбург:
«Самое интересное — посмотреть, как внешние команды справляются с поставленными задачами. Хочу отметить, что специалисты ЕВРАЗа — отличные профессионалы. У нас высокий уровень и основательный подход».
3-е место: команда RCD Moscow
Состав команды:
Иван Исупов — капитан, frontend
Александр Петров — backend
Алексей Кадылев — frontend
Описание проекта. Цифровой двойник эксгаустера с общей информацией по эксгаустерам. Имеется сокет-подключение, которое показывает в актуальном времени, с детальной информацией по каждому эксгаустеру.
Команда о хакатоне
Алексей Кадылев, Москва:
«Мы все участвовали в хакатоне впервые. Приятно, когда тебя не назначают на проект, а ты сам делаешь свой выбор. Когда общаешься с коллегами 40 часов подряд, выходишь на новый уровень общения: диалоги сокращаются до 2–3 слов — и ты понимаешь человека. Максимальное погружение в коллектив».
Александр Петров, Москва:
«Мы сразу поняли, что не добьёмся суперрезультата, потому что в команде только трое. Но не сложили руки и пошли до конца. Принимали стратегические решения что-то не брать в работу, а делать упор на конкретные направления. И уже здесь выполняли задачи аккуратно, с любовью».
Иван Исупов, Москва:
«Ставку делали на то, чтобы наше решение могло пригодиться в реальности. Пусть продукт будет готов не на 100%, но максимально приближён к техзадаче и действительно облегчит работу людям на производстве».
Если кому-то интересно посмотреть на работу участников в живом режиме, оценить нашу работу в студии и подачу материалов, мы припасли для вас видеозапись хакатона. А для тех, кто хочет тоже глянуть, как всё выглядело, но не располагает временем, — есть короткий ролик на полторы минуты.
Теперь в нашем распоряжении есть новый опыт проведения хакатонов и множество интересных проектов участников, которые нам ещё предстоит оценить с точки зрения возможностей использования в реальной работе. А ещё мы увидели интерес собственных разработчиков к таким мероприятиям, и как знать, вполне возможно, что придём и к практике внутренних хакатонов в ЕВРАЗе.