Вспомним, как это было на DevOps&TechLead в прошлом году?

Это маленькая, но полезная ретроспектива двух профессиональных конференций по интеграции процессов разработки, тестирования и эксплуатации. До совместного мероприятия DevOps&TechLead Conf 2022 осталась всего пара месяцев, поэтому самое время восстановить в памяти то, что было раньше.

Каждый год спикеры делятся своим опытом, новыми полезными инструментами и практиками, рассказывают о последних тенденциях. Что-то уходит в прошлое, меняется, апгрейдится, но наработки, касающиеся подбора персонала, как правило, остаются надолго. На прошлом DevOps Conf Рушана Каюмова в докладе «It’s a MATCH! Как тому самому инженеру и той самой компании найти друг друга» поделилась, как раз таким долгоиграющим материалом. Рушана 7 лет строит процессы найма и адаптации в IT, и уверена, что нет плохих и хороших компаний, как и плохих и хороших кандидатов. Есть более и менее подходящие друг другу. Всё зависит от подхода. Поэтому ее доклад полезен обеим сторонам.

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

Если вас больше интересуют дальнейшие этапы развития в организации, то можно посмотреть «Как обучать разработчиков, когда они уже не джуны». Вероника Самохина из Контура 8 лет пишет фронтенд, занимается обучением, наймом и развитием, поэтому не понаслышке знает, к чему приводит несистемный подход. Когда начинающие мидлы начинают курсы — и бросают их. Открывают книги — и читают лишь первые полглавы. Включают стрим конференции — и проматывают её на двойной скорости. Так они разочаровываются в идее последовательного, проактивного обучения — и плывут по течению, реактивно обучаясь на рабочих задачах. Доклад помогает разобраться, как решать такие проблемы и как опытным разработчикам прокачивать свои навыки.

Правда, прокачать их еще полдела, надо уметь об этом рассказать. И если вы еще не знаете, зачем техническому специалисту выступать, то посмотрите доклад Романа Поборчего из JetBrains «Как найти в своей работе то, о чём не стыдно рассказать». Он долгое время занимался разработкой, а теперь проводит тренинги для IT-шников и делится накопленным опытом. Например, своим алгоритмом поиска в работе того, что может быть интересно другим. В конце его выступления у вас обязательно появится хотя бы одна идея для своего доклада. Это поможет преодолеть внутренний барьер, который мешает выходить к зрителям. А среди них можно найти единомышленников и будущих коллег. Выступления позволяют строить личный бренд, добавлять в резюме значимые строки не только со ссылкой на профиль на github, но и на выступления в youtube.

Но одних навыков тоже мало. Со временем привычные инструменты больше не дают того, чего от них ожидаешь. Так произошло с ведущим разработчиком Виталием Филипповым. Он так разочаровался в Ceph и SDS, что реализовал собственную систему Vitasor. Она аналогична Ceph-архитектуре и имеет потенциал развития в его полную замену. Для тех, кто не погружен в тему, это хороший экскурс в программные СХД, которые используют такие «облачные» провайдеры, как Amazon, Google, Yandex, mail.ru. А еще его доклад «Vitastor, или Как я написал свою хранилку» это — реально руководство к действию. Если что-то не нравится, не ругай это в чатах, а возьми и сделай сам, только лучше!

На конференции был еще один пример правильного применения инструментов. Своеобразный лайфхак, как сэкономить деньги на использовании облачной архитектуры. В своём докладе «AWS Spot Pricing with Terraform. Как AWS зарабатывает на Spot Instance, и как не остаться без спотов в праздники» инженер по облачным сервисам и архитектор Amazon Web Services Владимир Самойлов рассказывал про модуль Terraform. Его рекомендации по настройке и использованию стратегий для получения самых дешевых и стабильных спотов можно применять практически везде. От ECS Capacity провайдера, EKS-worker нод, GitLab runners, любой нагрузки, которую можно прервать до билд-машины, побочных вещей мониторинга и DevTest окружения. А для тех, кто пока мало знает о спотах, есть много полезных ссылок, чтобы во всем подробно разобраться.

Инструменты вообще бывают разные. Иногда даже не надо искать новые, достаточно иначе посмотреть на свои проблемы и по-другому использовать то, что уже есть. Команда Хекслета переехала на разработку через Docker. Но у него были проблемы с производительностью в macOS, поэтому они начали пробовать разработку на удаленных машинах. Оказалось, что у такого подхода есть масса неочевидных плюсов. Если интересно узнать историю их перехода, адаптации и использования разных редакторов, Кирилл Мокевнин описывает ее в своем докладе «Как мы ушли от локальной разработки в облака и что выиграли». Осторожно! Это настоящая пропаганда инженерных практик!

Задачи тоже могут быть абсолютно разными, но порой самое сложное — совместить множество разных активностей в рамках своей работы. Когда приходится одновременно разрабатывать новый продукт, дорабатывать и развивать существующий, осуществлять третью линию поддержки, исправлять дефекты, совершенствовать подход к разработке, рефакторить старье, то отделаться фразой «лучше расставляйте приоритеты» уже не получится. Алексей Пименов из RealResult в своем докладе «Capacity Allocation — как совмещать работу по разработке продукта, поддержке, выплачивать технический долг без СМС и регистраций» подскажет, как не разорваться. И поделится, как сам справляется с подобными задачами на примерах, но с теоретическими обоснованиями.

Как бы иногда ни хотелось, заниматься только разработкой архитектуры и подобными задачами. Чаще всего работа девопса — это сопровождение инфраструктуры разработки и проекта, бесконечные запросы пользователей, и сиюминутные задачи от других участников команды. Случается, что несколько человек просят что-то одновременно и хотят чего-то невыполнимого, а потом ещё и остаются недовольными. Как организовать свое время, рабочий процесс и работу с руководством, чтобы не заниматься бесконечным затыканием дыр? Ответы на все эти вопросы есть в докладе «Как жить, если ты DevOps?» генерального директора ITSumma Евгения Потапова.

Если хочется поменять всё и сразу, то можно обратиться к опыту Head of Development Александру Клюшкину из Самоката. Его доклад «Меняем стек на продакшне в сжатые сроки» посвящен их переходу с Python на Kotlin. Перетаскивать пришлось «на живую», с реальными пользователями, курьерами, дарксторами, логистикой, инфраструктурой и партнерами. Процесс занял 9 месяцев, но помог узнать много интересного. Например, как найти баланс между «всё-всё заранее перепроверим» и «сначала всё взорвём, а там посмотрим». Или как планировать бэклог, чтобы уложиться к дедлайну. И в том числе — как работать с недокументированными частями системы и не сжечь команду высоким темпом. Опыт ребят из Самоката позволит не наступать на грабли, а добиться цели меньшими жертвами.

Еще можно попилить монолит вместе с Олегом Федоткиным из СберМаркета. Его доклад «Микросервисы: проблемы, которые мы не замечаем» звучит как фантастика, но они ее сделали реальностью за два месяца. Из его доклада можно узнать про запуск новых микросервисов за четыре минуты, про всегда актуальную карту микросервисов, про выкатку на определенный процент пользователей или только для QA. В общем — всё о построении платформы с нуля до MVP. Вас ждет много полезных вещей, которыми стоит воспользоваться.

В целом ретроспектива позволяет оглянуться назад и проанализировать, что уже было сделано и как это сделать еще лучше. Подготовиться к достижению новых результатов. Только лучше заниматься этим в крупнейшем комьюнити senior-инженеров DevOps&TechLead Conf 2022. Так проще и быстрее получить адресные ответы на вопросы, исходя из вашей роли и ситуации.

13 и 14 июня конференция TechLead Conf 2022 пройдет совместно с конференцией DevOpsConf 2022. Место проведения — кампус Сколково, самая инновационная и технологичная площадка в Москве.

Обсудим инженерные процессы в IT от XP до DevOps & Beyond, must have инструменты и практики изменений в командах для быстрых и качественных релизов. Программа практически сформирована. Билеты можно купить здесь.


ссылка на оригинал статьи https://habr.com/ru/company/oleg-bunin/blog/658363/

Надгробья современного геймдева. Избыточная безопасность

«Сесюрности мало не бывает!» (с) Джейсон Стетсон

Чем больше мер безопасности, тем реже у пользователей что-то пропадает, тем меньше техподдержка тратит время на рутину, тем спокойнее проходят внутриигровые события, тем надёжнее блокировки учётных записей…

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

Сегодня в прицеле — безопасность. Что с ней не так?


Начнём наш очередной цунами критики с какого-то подобия интерактива.

В начале статьи я помещу скрин-шот с неким очередным проявлением нездоровой активности игроделов и издателей, вы попробуете угадать, кто это у нас такой умейка, — а ответ сверим вместе в конце статьи.

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

Подсказка: эта игра на Unity на протяжении шести лет не может выйти в релиз!
Подсказка: эта игра на Unity на протяжении шести лет не может выйти в релиз!

И да угадает мудрейший…

Незванный мужчина в трико

Меры безопасности — это такой Робин Гуд, который:

  • отбирает у богатых (разработчиков, время и ресурсы на реализацию);

  • и отдаёт бедным (игрокам, иллюзию заботы и защищённости).

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

В качестве образцово-показательного примера последнего можно было бы вспомнить релиз замечательной игры World of Tanks: Generals, сопровождавшийся беспрецедентным событием: поголовной блокировкой оплативших предзаказ игроков на неопределённый срок.

Можно было бы, если бы не оказалось, что все упоминания проблем с предзаказами на релизе были либо превентивно вычищены, либо не проиндексированы вовсе пресловутой wayback machine. Жаль, самих предзаказавших вычистить удалось только после закрытия проекта…

…Тем не менее, запомните, дорогие читатели: блокировать ВСЕХ ПОДРЯД, особенно в самом начале полноценной жизни проекта, — нельзя НИКОГДА. Независимо от причины. И вышеуказанная притча тому яркий пример.

К счастью, не все меры принудительной безопасности настолько деструктивны. Чаще всего, невезучий пользователь отделывается лёгким испугом и тратой некоторого количества времени, от пяти секунд до двух недель за раз.

А всё потому, что используемые средства индивидуальной защиты не отличают правильного пользователя от неправильного. Совсем. И в геймдеве на самом деле никому даром не нужно отличать, кто тут хозяин учётной записи и платящий агнец — а кто хакер и неплатящее козлище.

Даже если ты — хозяин учётной записи, становись в общую очередь и долби каптчу наравне с хакерами и просто опечатавшимися людьми с похожим логином. Ведь это легкореализуемо и дёшево!

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

В качестве примера последнего я могу привести PlayStation Network, на веб-сайте которого я смог авторизоваться только 1 (один) раз за два полных года. И то только потому, что догадался использовать прямую ссылку на страницу профиля вместо магазинного лендинга.

При обработке перехода обратно на магазинный лендинг после авторизации, похоже, где-то слетает кука или производится не тот запрос и пользователь деавторизуется по итогу — но всем, в общем-то, наплевать. Особенно консольщикам на ПКшные проблемы. Хотя, казалось бы, если выставляете консольную витрину напоказ ПКшникам — то надо её по уму сделать и протестировать. Надо же? Правда?

Но довольно удивительных историй из прошлого, вернёмся в настоящее — к менее сказочным, но не менее стабильно вредящим общепринятым приёмам обеспечения безопасности пользователей без их согласия.

ПОРОЛЬ !!

Пароль. Универсальное стоп-слово, которым мы, игроки, подтверждаем, что мы, во-первых, те, за кого себя выдаём, а, во-вторых, согласны подвергнуться тому, что ждёт нас внутри нашей учётной записи…

Что с ним может быть не так? Помимо вынесенной в заглавный комикс ситуации, которая настолько набила оскомину, что лишний раз тратить на неё буквы совершенно не хочется.

«Не так» может быть, например, необходимость вводить пароль. На любое действие.
Как у лаунчера Bethesda.net (да упокоится он с миром наконец), который, помимо прочих изъянов, имел вредную привычку после каждого запуска запрашивать пароль.

  • Компьютер перегрелся, ушёл в перезагрузку, игрок всё перезапустил и пытается вернуться в игру поскорее? Пароль!

  • Просто вспомнил, что «а у меня была игра, а не сыграть ли…»? Пароль!

  • Случайно закрыл лаунчер после N часов простоя и захотел открыть снова? Пароль!

С одной стороны, это мелочь. Побегали пальцы по клавиатуре лишний раз, ввели привычную комбинацию, вошли, сыграли, вышли…

С другой стороны, эта мелочь — формально принадлежащая к мерам безопасности — защищает игрока от… кого и чего?

  • Если у постороннего появился доступ к компьютеру игрока — то кейлоггер наверняка уже подброшен. В этой ситуации вводить пароль каждый раз — вредно.

  • Если у постороннего появилась первая половина данных для входа (логин) — то и пароль тоже как-нибудь подберётся. Оттуда же, откуда и логин, например.

  • Если игрок сам забыл вылогиниться из лаунчера на незнакомом компьютере — кнопка «прекратить все остальные сессии» в профиле игрока на сайте разве не справится лучше?

  • Да и что защищать в этом лаунчере? Бутылочные крышки в Fallout 76?!

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

Может, и к лучшему, что этот лаунчер умирает. Вместе с «лягушкой», которая успела порядком подъесть нашего с вами времени.

Ещё интересный вариант проблем с паролем возникает, когда у разработчика/издателя что-то ломается в голове, из-за чего приходится вводить пароль по несколько раз за одну сессию.

Например, что у Google Play, что у Microsoft Store по умолчанию ВКЛЮЧЕН запрос пароля на каждую покупку.

Даже на бесплатную (совсем бесплатную).

Даже если бесплатные покупки идут подряд (скажем, две за три минуты).

Формально, причина благородная: оградить кошельки родителей от лишних трат их любимых чад. Ну и если кто-то украдёт телефон (или приставку, хех), то не успеет накупить лишнего.

Но бесплатные игры то зачем так ограничивать? Борьба за свободное место в памяти устройства (и против здравого смысла)? Ещё одна «лягушка» в наш импровизированный «пруд»…

2FA, OTP и другие неприличные трёхбуквия

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

Проблема в том, что методы, которыми реализуется этот функционал, зачастую крайне грубы и бессмысленны.

Более того, это один из наиболее надёжных способов потерять свою учётную запись! Ведь формально если способ получения 2FA кодов не находится у игрока — значит, этот игрок не хозяин этой учётной записи. А факт поломки устройства, подключенного для этого функционала, ещё попробуй докажи.

Помнится, я так потерял свою учётную запись Battle.net (телефон с их фирменным приложением просто умер), техподдержка запрашивала всё, что угодно, кроме того, что нужно.

И учётную запись Steam чуть не потерял (тогда же и потому же) — светлая голова, которая вела мою заявку на восстановление, запросила документы на покупки, совершённые до 2012 года… к счастью, уж это у меня нашлось, хехехе. Здоровая паранойя и сохранение ВСЕХ чеков и квитанций — лучшая мера безопасности!

Ввиду нынешних интересных событий, я с лёгкой паникой думаю о том, что будет, если придётся скоропостижно менять номер телефона: всё-таки дал слабину, привязал пару сервисов к нему — и эти сервисы, как оказалось впоследствии, не предусматривают отвязку (а в некоторых случаях — и смену, привет, Kufar!) телефона! #спасибо2fa #сесюрность #трезвыелюдитакнеделают

«Ква» по кулдауну

Хуже, чем использование 2FA, может быть только постоянно напоминание о необходимости подключения 2FA.

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

One more with passion!
One more with passion!

Неминуемое окно-напоминайка при КАЖДОМ открытии лаунчера, неотключаемое уведомление в меню профиля, какие-то уведомления в уведомлениях, какие-то… письма?

Не помню и не вспомню — мои мозги уже давно кладут образ этой напоминалки в общую мусорную корзину с нигерийскими письмами и баннерами о непрошеном выигрыше в лотерею.

А вкупе с привычкой UPlay «забывать» про введённый пароль раз в N дней и нынешним нехорошим трендом пускать после внутриигровых заставок экран вида «Нажмите любую клавишу, если точно хотите сыграть в нашу игру», получается форменный кошмар… как для игрока, так и для издателя!

Давайте представим такую ситуацию.

  1. Игрок запустил с ярлыка на рабочем столе какой-нибудь For Honor и пошёл заваривать чай, пока игра грузится.

  2. Игрок вернулся с чаем, на экране вместо игры — лаунчер с требованием ввести пароль потому, что UPlay показалось, что уже пора.

  3. Игрок плюёт, вводит пароль и уходит делать бутерброды, пока игра грузится.

  4. Но по возвращении игрок видит лаунчер с напоминайкой «А может, всё-таки, сделаешь себе 2FA?» вместо игры!

  5. Игрок крякает с чувством, отказывается от 2FA и идёт насыпать себе конфет к чаю после бутербродов, пока игра грузится.

  6. Когда игрок приходит обратно (опять…), монитор приветливо мерцает в ответ: «А вдруг ты передумал играть? Нажми-ка any key».

  7. И только после нажатия any key игрока начинает протаскивать через загрузку ресурсов, авторизацию и вторую половину пачки вступительных видео…

С одной стороны, это просто смешно и вообще, невелика проблема, потратить три раза по пять секунд.

С другой стороны, давайте спросим лично Маркетингового Молоха или любого его адепта о том, почему три разных отвлечения по пять секунд подряд — это очень, очень плохо для прибыли в проекте, использующем free-to-play-образную монетизацию.

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

И тут какие-то дипломированные ослы вставляют ТРИ препятствия для игроков в САМОМ НАЧАЛЕ воронки. Причём, таких препятствия, что даже если игрок не решит «нафиг надо, пойду в другую игру», то к моменту, когда «воронка» снова его попытается «засосать», он будет немного не в настроении что-то оплатить. Да и играть без токсичности — тоже…

Но может быть и ещё хуже!

Безопасность превыше дохода
Безопасность превыше дохода

В этом окне прекрасно всё. Начиная с ярко выраженного нежелания брать деньги у клиента. Заканчивая кликабельной кнопкой перехода к настройке 2FA, которая не выглядит, как кнопка. И ведёт в 404 ошибку, к слову…

Повторю ещё раз для страдающих синдромом Баден-Баден. Ничто. Никогда.

Не. Должно. Мешать. Клиенту. Дать. Вам. Денег.

Ни. Ког. Да.

Особенно если это высосанная из пальца (или иного идентичного по функциональности органа) забота о безопасности.

Впрочем, эти же издатели ранее (Star Conflict) отметились нежеланием продавать крупняк игроку до тех пор, пока он хорошенько не прокачается. Им нормально. На хлеб хватает. Значит, зачем что-то улучшать? Ммммм?

Кстати, забавный факт: клиент более склонен подключать лишние услуги, преподносимые под соусом безопасности, после совершения первого платежа, а не до. Причём, СРАЗУ ПОСЛЕ первого платежа, пока ещё не улеглись эйфория и предвкушение.

Потому, что ему теперь есть что терять. Неочевидно, но факт.

Но UX-дизайнеры, получившие свою специальность по статьям типа «20 способов сделать продающий дизайн» из Яндекс.Дзена, а не из мудрых (и, что важнее, научно валидных, поверяемых) книг от специалистов, всё равно продолжают добровольно лишать себя дохода, заставляя клиента предохраняться до первой покупки, а не после, как же жь так то…

Но и это ещё не крайняя нижняя точка в нашем путешествии!

Представьте себе, что вам выдали доступ к документу. Вы вольны писать в нём всё, что угодно, сколько угодно. А удалять — нет, удалить из этого документа можно только пять строчек в сутки. Потому, что безопасность.

«Бред сивой кобылы», скажете вы? Бэкапы, версионность, премодерация правок, да мало ли как можно сделать то же самое дружелюбнее к пользователю (и ещё безопаснее)?

Но именно такой невероятно стрёмный способ мэйнстримен — даже Wargaming.net делает это! Делает это в виде ограничения на продажу техники в World of Tanks — причём, даже бесплатная техника всё равно тратит этот лимит! Хотя, казалось бы, от кого защищать бесплатное…

Бытует мнение, что это намеренный, осознанный шаг, стимулирующий игрока приобретать новые места в ангаре. Но для дешёвого трюка, обеспечивающего потребу в не менее дешёвом премиум-контенте (цена вопроса: полдоллара!) на протяжении стольких лет, вокруг него наверчено слишком много легенд и мифов, нараставших, кажется, с самого релиза игры в далёком 2010 году.

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


Кстати, о глупости. Мы продрались сквозь дрянной текст и стрёмные полунамёки к концу статьи — а значит, пора явить миру, кто у нас самое слабое звено.

И это Escape from Tarkov (Побег из Таркова)!
И это Escape from Tarkov (Побег из Таркова)!

Они делали ошибки, чтобы мы их не повторили. Смотрите внимательно. Не делайте, как они. Никогда.


26 килобайт боли, ненависти, насилия над здравым смыслом — но мы же только начали…
Увы, из уважения к Вам, О, Читатель, мне придётся заткнуть фонтан. По крайней мере, на сегодня. Чтобы не услышать в очередной раз ненавистное «многотекста леньчитать».

В следующий раз мы, возможно, узнаем, что общего у Escape from Tarkov и World of Tanks (спойлер: ничего хорошего для игрока), почему Heroes of the Storm всё ещё жив вопреки всем стараниям Blizzard-Activision по его закапыванию, как CDPR добровольно портила себе прибыль экспериментами с основными механиками в Гвент — и многое, многое другое…

Как обычно, во всех случаях вредоносные последствия этих удивительных решений самоочевидны любому человеку, не до конца утратившему способность мыслить логически и оценивать критически.

Как обычно, почему-то в релиз всё равно попало то, что попало…

Вот он, непризнанный феномен геймдева: поодиночке все мы адекватные здравомыслящие люди, действующие продуктивно и по уму. Но когда мы собираемся вместе — от вида и устройства наших творений орут в голос призраки Платона, Фрэнсиса Бэкона и Стива Джобса…

Возможно, в следующий раз вместо того, чтобы смеяться над последствиями, мы порассуждаем о причинах? Настоящих причинах, о которых стыдятся писать крупные компании и боятся мелкие?

Увидим на следующей неделе (или как RNG рассудит).

Спасибо за прочтение — и приятного вам дня!


ссылка на оригинал статьи https://habr.com/ru/post/658367/

Российские компании для разработчиков: куда и почему стоит устроиться на работу в 2022 году

Несмотря на очевидные проблемы для IT-сектора в России в текущих условиях, потребность в IT-специалистах продолжает расти. По данным Минцифры, в различных сферах информационных технологий в РФ дефицит квалифицированных кадров составляет от 500 тыс. до 1 млн человек. Речь идет не только о профессионалах узких специальностей, но и об «универсальных солдатах». По уровню заработной платы представители отрасли выходят на первые места среди всех прочих профессий.

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

Авито

Одна из наиболее известных в России компаний, разработчик одноименного интернет-сервиса для размещения объявлений о товарах, недвижимости, вакансий и резюме на рынке труда. Кроме того, на Авито можно выложить информацию  об услугах частных лиц и компаний. Количество сотрудников превышает 4000 человек, разработчиков — свыше 1000, причем недавно в команду набрали большое количество новых специалистов. 

Несмотря на кажущуюся простоту, сервис Авито — очень сложный проект. В целом, в компании высокий профессиональный уровень разработчиков. Основа — мидлы и сеньоры. Уровень бюрократии низкий.

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

«Под капотом» у Авито есть несколько проектов, которыми команда гордится.

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

В минуту обрабатывается в среднем 25 тысяч поисковых запросов — днём в разы больше, чем ночью. Поиск должен отрабатывать их практически мгновенно, чтобы свежие опубликованные объявления сразу попадали в выдачу.

Автоматическая система модерации. До 5 миллионов версий объявлений в день проходят через автоматическую систему модерации, причем около 700 000 из них — новые объявления. Все объявления проверяются на соответствие законодательству и правилам платформы до публикации с использованием ИИ и ML. На ручную модерацию отправляется меньше 10% объявлений.

Опенсорсные решения для мобильного тестирования. Платформенные мобильные команды разработали два опенсорсных продукта, которые помогут инженерам других компаний. Это тест-раннер Emcee для iOS и CI/CD и тестовая инфраструктура Авито для Android.

Платформа для A/B-тестирования. Сейчас развивается платформа для запуска A/B-тестов и формирования realtime-аналитики.

Мессенджер с чат-бот платформой. Продолжает совершенствоваться собственный мессенджер, количество активных чатов в котором выросло на 95% с момента пандемии. Недавно был запущен конструктор чат-ботов для мессенджера, где любой сотрудник может собрать и запустить чат-бота своими силами, без привлечения разработчиков.

Вот что предоставляет специалистам Авито при устройстве на работу: 

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

  • Возможность реализовать свои идеи в проекте с многомиллионной аудиторией.

  • Личный бюджет на обучение.

  • Достойную зарплату и прозрачную систему премий.

  • Компенсацию обедов.

  • ДМС со стоматологией и страховку от несчастных случаев.

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

Средняя оценка компании на сервисе «Хабр.Карьера» составляет 4.6 из 5. Разработчикам необходимо развивать и управлять сотнями микросервисов на Python, Go и PHP, фронтенд на JavaScript, базы данных PostgreSQL, MongoDB и Redis, автоматические тесты, обученная на данных система модерации и поисковый движок Sphinx.

VK

Крупнейшая технологическая компания, которая продолжает активно развиваться. Экосистема VK включает сервисы, которые позволяют общаться, играть, продавать и находить товары и услуги, заказывать еду, искать сотрудников, откликаться на вакансии. Это еще и платежная система, голосовой ассистент, платформа мини-приложений. Для бизнеса компания развивает специализированную экосистему продуктов и услуг для цифровизации бизнес-процессов.

Один из наиболее известных сервисов VK — социальная сеть «Вконтакте». За последние несколько недель она фиксирует резкий рост активности аудитории и количества пользователей. Во многом это обусловлено блокировкой Facebook и продуктов зарубежной компании в РФ. С 21 февраля по 27 февраля средняя ежедневная аудитория платформы выросла на 200 тыс. пользователей. За последние пару недель ежедневная аудитория социальной сети выросла еще на 300 тыс. пользователей, эксперты прогнозируют дальнейший рост, поскольку число ежедневных регистраций пользователей выросло на 20%.

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

Сейчас в VK работает свыше 10 000 сотрудников в 200+ разных проектов.

Совокупная оценка VK на сервисе «Хабр.Карьера» составляет 4,35 балла из 5. Оценка формируется на основе текущих и уже ушедших из компании сотрудников. Штаб-квартира организации расположена в Москве, кроме того, есть представительства в 14 городах по всему миру. Выбрать можно удаленный или гибридный график, работая из удобного для себя места. 

Яндекс

Компания «Яндекс» — одна из самых первых IT-организаций, которые появились в РФ. Несмотря на то, что ей исполнилось четверть века, она продолжает расти. Так, в 2022 году она прогнозирует рост выручки до 490–500 млрд руб (прогноз составлялся до спецоперации). Вполне достижимая цель, поскольку в 2021 году она увеличила выручку на 54% до 356,2 млрд руб. Что касается направлений бизнеса, которые развивает «Яндекс», то проще перечислить то, чем компания не занимается. Ведь у нее есть все — от роботов-курьеров и «Алисы» до веб-поиска.

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

Сотрудникам предлагают:

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

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

  • Корпоративное питание, врача, психотерапевта, массаж в офисе.

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

  • Хороший доход, который состоит из трех частей — зарплаты, премии и опционов.

Оценка компании на «Хабр.Карьере» составляет 4.25 балла из 5. Сейчас в штате более 10 000 человек.

Сбер

Это один из наиболее высокотехнологичных банковУ Сбера обширная экосистема онлайн-сервисов в самых разных сферах, от онлайн-кинотеатра и сервиса доставки еды до службы такси. Соответственно, как и во всех компаниях, перечисленных выше, у Сбера огромное количество задач, к решению которых привлекаются разработчики — от IoT до искусственного интеллекта и машинного обучения.

Своим сотрудникам Сбер, кроме хорошей зарплаты, предлагает такие возможности:

  • обучение в Университете Сбербанка в течение нескольких дней. Необходимо для дополнительной подготовки специалистов.

  • Виртуальная школа Сбера. Масштабная подбора профессиональных курсов дополнительного образования.

  • Подписки на профессиональные журналы, включая Harvard Business Review, DS&AI Community, EduTech и многие другие.

  • Система скидок.

  • Бесплатный психолог с неограниченным количеством обращений.

  • Пенсионная программа для сотрудников.

  • Удобные офисы, хорошее оборудование.

  • Спортзал и конференц-залы.

На Хабре оценка компании составляет 3.98 баллов из 5. Количеств сотрудников огромное — свыше 270 тысяч, причем оно продолжает увеличиваться.

Ozon

Одна из крупнейших компаний в РФ, в ней на данный момент работает 45 тысяч сотрудников, продается около 80 млн наименований товаров. База покупателей — 25 миллионов человек. Конечно же, у Ozon есть над чем поработать IT-специалисту. Это нейросети, высоконагруженные проекты, сама онлайн-платформа, включая бэкенд и фронтенд, и масса всего прочего. Вот лишь небольшая часть описания инфраструктуры компании:

  • 2500+ микросервисов, высокая доступность, отказоустойчивость, горизонтальное масштабирование, распределение нагрузки.

  • Хайлоад: до 5K заказов в минуту и до 38К RPS к бэкенду с мобильных приложений и сайта в дни распродаж, нагрузка в некоторых сервисах достигает 300К RPS.

  • 230 млн метрик с наших сервисов и систем.

  • 3 ЦОДа и 2500 серверов — у нас одна из крупнейших в РФ IT-платформа.

  • Суммарный объем аналитических хранилищ 30+ PB.

А вот технологии, с которыми работает Озон:

  • Backend: Go, С#, C++, Java

  • Frontend: Vue.js, TypeScript, JSX, Node.js

  • Mobile: Swift, Kotlin

  • QA: Go, Python, C#, TypeScript, Allure

  • Data: PostgreSQL, ClickHouse, Memcached, Redis, MSSQL, Ceph, Vertica, Hadoop, Airflow, Kafka, а также собственные технологические решения

  • Infrastructure: Docker, K8s, S3, NGINX, CI/CD

  • Observability: Prometheus, Thanos, OpenTelemetry, Jaeger, Grafana, Graylog, Opsgenie

  • Процессы: Scrum, Kanban, Jira, Confluence, GitLab, Slack, Microsoft Teams

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

Оценка на Хабр.Карьере — 4.28.

Это только малая толика компаний, которые готовы принять тысячи разработчиков. А ведь еще огромное количество других — от крупных корпораций до небольших стартапов. Многим бизнесам постоянно требуются все новые и новые IT-специалисты. В ближайшее время дефицит будет сохраняться, так что хороший разработчик сможет выбрать компанию себе по вкусу. Только у банков, не говоря уже об организациях из других отраслей, с 24 февраля по 15 марта 2022 г. выросло  число открытых ИТ-вакансий в 2,2 раза год к году.


ссылка на оригинал статьи https://habr.com/ru/post/658375/

ML-митап команды AliTech

Поговорим о том, как готовить данные и обучать алгоритмы, чтобы находить совпадения среди миллионов товаров (а на AliExpress их больше 2 млрд), причем разберем не только истории успешного успеха, но и попытки, которые ни к чему не привели — на первом митапе команды AliTech 7 апреля, в 18:00.

В программе:

Как мы сделали матчер: тайтлы, берты и две сестры, Андрей Русланцев, AliExpress Россия

Расскажу о том, как нам удалось подступиться к задаче матчинга в AliExpress Россия. Вы узнаете, что делать, если у конкурентов короче, о том, как мы боролись за наших сестер, а также почему наш матчинг действительно супер.

Как мы не сделали матчер: тайтлы, чехлы и близнецы, Денис Ивашков, AliExpress Россия 

Этот доклад о проблемах, с которыми мы столкнулись, когда писали матчинг в AliExpress. О чем это будет: почему красная таблетка на самом деле синяя, а синяя больше, чем красная, и к чему приводят выпадения из автобуса.

Prod2vec: три в одном! Объединяем всю информацию о товаре в один вектор, Александр Голубев, Ozon 

А что, если вместо архитектуры, где каждый вектор описывает отдельную часть товара, мы получим один вектор для всего товара сразу? Звучит неплохо, только как бы это грамотно реализовать… Об этом и поговорим!

Прикладные задачи матчинга и способы оценки качества, Макар Красноперов, Яндекс.Маркет

Макар расскажет, как алгоритм матчинга может быть внедрен в разные процессы маркетплейса на примере Яндекс.Маркета и о способах оценки новых моделей перед внедрением.

Q&A сессия о матчинге и не только!

Встречаемся в 18:00 в четверг, 7 апреля, в новом офисе AliExpress в башне «Империя» в Сити — и, конечно, в трансляции на YouTube. Регистрироваться тут (это обязательно!)


ссылка на оригинал статьи https://habr.com/ru/company/aliexpress_russia/blog/658387/

Как нейронная сеть поддерживает репутацию бренда

Рассказываем, как RDL by red_mad_robot помогли АО «Арнест» решить проблему неполной комплектации продукции при работе конвейера с помощью компьютерного зрения. 

АО «Арнест» больше пятидесяти лет производит и упаковывает косметическую продукцию и товары бытовой химии известных брендов. В арсенале предприятия 600+ товаров, которые продаются в 50 000 городов России, стран СНГ и Европы. 

Каждый второй аэрозольный распылитель в России производится на площадях АО «Арнест», а в 2018 году был выпущен 3,5-миллиардный баллон. 

Эти баллоны иногда выпадали с автоматической конвейерной ленты, поэтому «Арнест» сталкивался с недокомплектацией коробов и, как следствие, недовольством предприятий-заказчиков. 

Перед rdl by red_mad_robot стояла задача найти решение, которое бы минимизировало недовложение продукции. Команда за несколько месяцев разработала систему на основе компьютерного зрения, которая детектирует некомплект упаковки и отправляет управляющие сигналы на конвейер, чтобы устранить проблему. 

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

В статье подробно рассказываем об оригинальном решении автоматизации процесса мониторинга, проектировании, нюансах разработки, тестировании и результатах работы.

Проблема: риски недовложения продукции в коробках

На автоматическом конвейере аэрозольные баллоны пакуются в картонную тару. Количество предметов в упаковке варьируется от 6 до 24 баллонов в коробке — в зависимости от требований предприятия-заказчика.

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

Цель создания системы:

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

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

*руководитель — пользователь системы, которому доступны отчеты по работе.

Упаковка баллонов в короб происходит автоматически. На входе в машину упаковки, баллоны формируются в блоки по 6 или 12 штук, а потом под блок «подъезжает» картонная заготовка будущего короба. Специально расположенные направляющие формируют короб, и на выходе из машины получается крепко склеенная групповая упаковка. К сожалению, иногда в момент объединения баллонов и заготовки короба, один баллон может выпасть и на выходе получится короб с недостающей единицей. Мы обратились к red_mad_robot для решения этой проблемы. Необходимо было со 100% точностью выявлять короб с выпавшим баллоном и дать об этом сигнал обслуживающему персоналу. 

Олег Питько, начальник цеха наполнения «Арнест»

Любые вопросы, влияющие на качество выпускаемой продукции, подлежат глубокому разбору. Мы должны найти коренные причины тех или иных несоответствий и разработать ряд ответных мероприятий. Одной из таких проблем с долгой историей было выявление недокомплекта, которую мы и доверили специалистам rdl by red_mad_robot.

Олег Питько, начальник цеха наполнения «Арнест»

Решение: система контроля комплектации, которая считает сама

Как это сделать

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

Проект состоял из 3 этапов — проверки гипотезы, прототипа и MVP-версии.

1 этап. Проверка гипотезы 

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

Провели предпроектные исследования 

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

Перед нами стояла непростая задача, которая требовала решения сразу в нескольких специализациях: Data science, embedded systems и web-разработка. Наибольший риск виделся в определении баллонов, так как они различаются по форме, цвету и количеству в упаковке — это был настоящий вызов. Потребовались нестандартные решения и сплоченная командная работа, чтобы справиться с ним.

Тимофей Михайлов, менеджер проектов rdl by red_mad_robot

Для первичной съемки на конвейере использовали стереокамеру, которую установили в оптимальном месте для фиксирования выпадания баллонов из короба.

Выявили ограничения

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

  • Класс противопожарных датчиков, работающих в УФ-спектре. Это могло препятствовать распознаванию и обнаружению «дефектных» объектов с заданными параметрами (гипотеза не подтвердилась).

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

  • Большой объем данных, которые генерирует камера. Нужно было найти решение, которое позволило бы передавать для анализа не весь поток информации, а только релевантные кадры выпадения баллонов. 

Собрали исходные данные 

В первую очередь сняли на видео работу двух конвейерных линий при максимальной скорости — 40 коробок в минуту. 99% съемки оказалось однообразной фиксацие нормального производственного процесса, потому что баллоны при движении сохраняли устойчивость и ничего особенного не происходило. Поэтому сделали вывод, что количество падений — не постоянная величина и зависит от разных причин. 

Для первичного обучения модели нейросети выбрали 123 изображения, которые были размечены в программе SuperAnnotate (платформа полуавтоматического аннотирования изображений) по трем классам объектов:

  • крышка баллона;

  • баллон целиком;

  • коробка с упакованными баллонами.

Но после первичного осмотра появились сомнения в том, что обычная нейронная сеть сможет распознать ошибку в реальной производственной ситуации. Продукция компании очень разная: баллоны отличаются формой и цветами крышек, которые на стандартной камере воспринимаются набором пикселей. Для измерения предметов в пространстве нужна была улучшенная классическая 3D-камера, которая совмещает функции стереокамеры и датчика глубины. Результаты съемки камеры должны были помочь в дальнейшем обучении и тренировке нейронной сети. 

Выбрали камеру Intel RealSense Depth Camera D455

Решили использовать камеру, совмещенную с камерой глубины (камера с двумя типами изображения). 

Чтобы результаты опытов были точнее, провели дополнительные испытания и задействовали 3D-камеру Intel RealSense Depth Camera D455:

  • с двумя датчиками для определения глубины сцены,      

  • кадровым затвором,

  • инфракрасным проектором,

  • отслеживанием движения,

  • разрешением 1280х720,

  • трехмерным полем зрения 860. 

Датчики глубины камеры располагаются на расстоянии 95 мм друг от друга. Это снижает погрешность до 2% на расстоянии 4 метров. Скорость стереосъемки до 90 fps, апертура (диафрагма) карты глубиной 870х680. Провели работу по разбору методов принятия информации с камеры и собрали тестовые материалы.

Так выглядит 3D камера Intel RealSense Depth Camera D455
Так выглядит 3D камера Intel RealSense Depth Camera D455

Использование 3D-камеры позволило видеть не стандартную картинку, а 3D-проекцию предмета, «добраться» до каждого пикселя в изображении нужного баллона. Этот прием позже помог обучить нейронную сеть.

Пример размеченной фотографии для обучения нейронки
Пример размеченной фотографии для обучения нейронки

Предыдущий опыт команды с распознаванием похожих объектов показал, что для работы нужна модель быстрой нейронной сети, которая позволит различать баллоны по контуру. 

Выбрали нейронку ResNet50

Выбрали быструю модель нейронной сети ResNet50 с возможностью распознавания объектов по форме. Для реализации взяли феймворк PyTorch с набором библиотек. 

Архитектура состоит из трех блоков:

  • Backbone Network. Извлечение информации из входного изображения в различных масштабах.

  • Region Proposal Network. Обнаружение области объекта с различных масштабов с оценкой достоверности.

  • Box Head. Объединение информации предыдущих блоков, определение границ объектов.

Архитектура нейронной сети

Схема архитектуры, используемой нейросетью
Схема архитектуры, используемой нейросетью

Методика поиска объектов разноразмерными срезами значительно увеличивает точность распознавания объектов средних и небольших размеров. Срезы пяти уровней (от P2 до P6) последовательно передаются в сеть, на каждом уровне срезы накладываются на входное изображение. Точки Р2, Р3 находят маленькие объекты, точки Р4-Р6 — более крупные. 

Мультимасштабная сеть позволяет обнаружить самые миниатюрные объекты — одномасштабный детектор на такое не способен. 

Вот как отображается обнаружение объектов при помощи разных срезов
Вот как отображается обнаружение объектов при помощи разных срезов

Совместили три канала изображений перед обработкой данных

Так как заказчик работает с множеством брендов, оформление баллонов разного цвета. Нейронная модель ResNet50 как раз успешно применяется при работе с цветными изображениями, но в нашем случае этого было недостаточно — нужно было настроить модель не только на цвет.  Для этого совместили три канала изображений.

  1. Для первого слоя специалисты использовали преобразование в формат изображения различных оттенков серого цвета.

  2. Во второй слой поместили карту глубины, полученную со стереокамеры. 

Для третьего слоя использовали оператор Лапласа для выделения границ цветного изображения.

Итоговое изображение, полученное при совмещении 3 слоев
Итоговое изображение, полученное при совмещении 3 слоев

На этапе проверки гипотезы точность распознавания крышек  — 77,6%, баллонов — 73,6%, коробов — 66,2%. По результатам тренировки модели средняя точность распознавания достигла 72,5 (целевой показатель от 30% до 95%). Это подтвердило гипотезу успешности модели нейронной сети для решения задачи с недовложением продукции

Михаил Степанов, разработчик Data Science в rdl by red_mad_robot, тимлид проекта

На этом этап проверки гипотезы закончился, наступило время прототипа.

2 этап. Разработка прототипа 

Изготовили защитный корпус и установили камеру, собрали датасет для обучения нейронной сети, создали синтетический датасет, начали разработку веб-приложения. 

Сделали защитный корпус и установили камеру

Чтобы собрать датасет и использовать этот массив данных в дальнейшей работе, нужно было собрать и установить оборудование для постоянного доступа к конвейерной линии. А для монтажа камеры и доступа в сеть извне требовалось решить инфраструктурные задачи — учесть требования производства, класс материалов и защиты,радиосовместимость и прочее.

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

Валерий Ковальский, Hardware/TeamLead в rdl by red_mad_robot

Для дополнительной защиты поместили камеру 3D-камера Intel RealSense Depth Camera D455 в металлический корпус
Для дополнительной защиты поместили камеру 3D-камера Intel RealSense Depth Camera D455 в металлический корпус

Камеру в защитном корпусе установили на специальном кронштейне.

Расположение Intel RealSense Depth Camera D455 на производстве
Расположение Intel RealSense Depth Camera D455 на производстве

Итак, на конвейерной линии установили и подключили 3D-камеру. На этом этапе команда столкнулась с трудностями.

Проблема 1 

3D-камера использует карту глубины, из-за чего размер 10-минутного видео равен ≈ 10 Гб. Локальная сеть на производстве не передавала такие тяжелые файлы, поэтому каналы передач и нейронную сеть нужно было оптимизировать.

Как решили 

Использовали релевантные фотографии. На этапе MVP установили оптический датчик, который позволил делать снимки непосредственно перед закрытием коробки на конвейере.

Проблема 2 

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

Как решили

Воссоздали (смоделировали) реальную ситуацию. 

3D-моделирование сцен для создания синтетического датасета

К работе привлекли 3D-дизайнера Михаила Мартьянова. Он создал модель, воспроизвел реальную ситуацию и смоделировал сцену с нужных ракурсов. Методом генерации на выходе точно имитировали снимки выпадения в режиме реального времени. 

3D-моделирование сцен
3D-моделирование сцен

Эта трудозатратная работа позволила идеально воссоздать нужную ситуацию, чтобы обучить нейронную сеть. 

Синтетические данные — это данные, которые были получены в результате моделирования реальных объектов, их свойств с помощью компьютерной графики. Разработанная система в автоматическом режиме генерирует, создает изображения, подобные настоящим. Дополнительно она размечает нужные нам объекты по заданным правилам. Кроме этого программа умеет накладывать шумы, делать цветокоррекцию и имитировать хроматические аберрации (искажения), которые свойственны линзам в реальном мире. Этот подход позволяет не только продолжать обучение нейросети при нехватке вручную размеченных датасетов, но и в целом ускорить процесс развития проекта

Михаил Мартьянов, графический дизайнер, специалист 3D-моделирования сцен для создания синтетического датасета

При помощи синтетического датасета обученная нейронная сеть стала видеть все больше случаев выпадения баллонов. 

Параллельно вели работы по фронтенду — создавали публичную часть веб-приложения, которая показывала пользователю реальную ситуацию и давала взаимодействовать с системой.

Начало создания клиентской части веб-приложения

Веб-приложение должно быть развернуто в локальной сети с доступом только с рабочих компьютеров. Клиентская часть состоит из интерфейсов:

  • поддержка авторизации пользователей в системе;

  • установки количества баллов для производственной линии (для оператора);

  • формирования отчета о некомплекте для руководителя.

Фронтенд- и бэкенд-специалисты начали разработку веб-сервиса.

3 этап. MVP (техническая реализация) 

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

Архитектура аппаратной части системы

Перед тем, как создавать модуль для управления конвейером и сигнализации, разработали архитектуру.

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

Валерий Ковальский, Hardware/TeamLead в rdl by red_mad_robot

Структурная схема аппаратной части с перспективой расширения
Структурная схема аппаратной части с перспективой расширения

Изготовление и установка оборудования

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

Аналоговая плата функционирует так:

  • принимает физический сигнал от оптического датчика при прохождении короба с баллонами по конвейеру;

  • формирует команду в камеру для фотофиксации.

А так работает мини-ПК:

  • принимает сигнал от оптодатчика в цифровой форме;

  • отдает сигнал камере для фотофиксации;

  • передает фотоснимки в нейросеть (на сервер);

  • передает сигнал на остановку конвейера от нейросети в аналоговую плату.

Плата для связи с оптодатчиком, автоматикой конвейера и управления камерой
Плата для связи с оптодатчиком, автоматикой конвейера и управления камерой

В процессе монтажа установили кнопку блокировки и деблокировки — если нужно остановить или запустить конвейер. Установили оптический датчик с фотодетектором, который делал снимки в нужный момент времени, а данные с камеры обрабатывал сервис аналитики. 

Тут тоже не обошлось без сложностей, но их удалось успешно решить. 

  • Исходный вес кадров был слишком велик для локальной сети, поэтому их потребовалось сжимать и оптимизировать. 

  • Для анализа нужны были только релевантные кадры.

  • Было важно сократить время между фиксацией кадров с «дефектными» коробами и остановкой конвейера. 

До начала проекта при получении команды от нейронной сети временное ограничение для остановки конвейера составляло 0,5 сек. Наша команда добилась снижения этого показателя до рекордных 0,1 сек.

Создание полной версии веб-сервиса

На этом этапе мы закончили работы по разработке веб-сервиса — решили задачи по управлению интерфейсом конвейера, системе ролей и доступов, аутентификации и настройке событий. 

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

Главная страница пользовательского сервиса
Главная страница пользовательского сервиса

Оператор имеет право чтения, а права на редактирование и настройки таблицы есть только у администратора.

Включение/отключение конвейеров от системы с возможностью добавления новой линии
Включение/отключение конвейеров от системы с возможностью добавления новой линии

Реализовали возможность автокалибровки — автоматического распознавания продукции, т.е. система сама определяет разные формы и количество баллонов.

Внутри программы создали систему рассылок — отчетов на электронную почту обо всех случаях выпадения баллонов и некомплектах коробов. Можно настроить периодичность для автоматической рассылки или делать ее по инициативе администратора.

Функционал отчетов позволяет пользователю собрать таблицу в различных разрезах прямо в интерфейсе системы
Функционал отчетов позволяет пользователю собрать таблицу в различных разрезах прямо в интерфейсе системы
Система автоматических рассылок
Система автоматических рассылок

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

Изначальный некомплект баллонов
Изначальный некомплект баллонов
Выпадение баллона на работающем  конвейере
Выпадение баллона на работающем конвейере

В конце этапа MVP подключили оборудование и успешно проверили его. 

Точность распознавания обученной нейронной сетью случаев выпадения баллонов составила 99%.

Результат. Как это работает 

Команда rdl by red_mad_robot разработала комплексную систему компьютерного зрения для предотвращения недокомплекта на производстве. 

Короб с баллонами движется по конвейеру, а система считает количество предметов. Если баллонов не хватает или границы предметов выходят за допустимые параметры (например, коробка потеряла форму), то линия останавливается. Оператор получает сигнал о внештатной ситуации и реагирует — формирует коробку правильной формы с нужным содержимым. 

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

Модель протестировали и запустили на одной конвейерной линии. С января 2022 года систему мониторинга планируют расширить на пять производственных конвейеров АО «Арнест».

Что дальше

Компьютерное зрение помогает компьютеру видеть и извлекать информацию, анализировать образы. 

Эта технология умеет мгновенно «выхватить» брак, незаметный человеческому глазу, и существенно сэкономить время на его устранение. 

Систему можно использовать на любом конвейерном производстве-упаковщике штучной продукции с возможностью доработки под конкретные параметры, например:

  1. В пищевой промышленности для упаковки взбитых сливок в баллонах, чая, кофе в фигурных банках с неустойчивым дном.

  2. На заводах алкогольных и безалкогольных  напитков с последующей упаковкой в картонные коробы. Жестяные банки энергетиков, газированных напитков имеют конструкционные особенности — вогнутое  дно. Также в  пластиковых формованных бутылках дно изготавливается в форме нескольких объемных арок, что провоцирует падение на конвейере при упаковке.

  3. На парфюмерных и косметических фабриках. В процессе упаковки продукции в баллонах — пены для бритья, мусс для умывания  в виде аэрозольной пены, дезодоранты и антиперспиранты, шампуни, уходовые средства в фигурных пластиковых упаковках, кремы, помады в тубах, блески для губ и др.

  4. В химической промышленности (с учетом специфики производства). Лакокрасочные товары в аэрозольных баллонах, строительная, монтажная пена.


ссылка на оригинал статьи https://habr.com/ru/company/redmadrobot/blog/658395/