Pull to refresh
52
26.8
Send message

От хаоса к инфраструктуре

Level of difficultyMedium
Reading time12 min
Views13K

Всем привет. Сегодня я хочу рассказать о том, как мы прошли наш путь от хаоса к нашим Paas внутри нашего внутреннего облака. Меня зовут Михаил Марченко, я руководитель центра компетенций, сопровождения и построения процессов разработки. Это наше подразделение, где мы сосредотачиваем экспертизу DevOps. В девопсе я уже семь лет, из них последние три года в билайне. 

В большой бренд билайна входят достаточно большое число юрлиц, такие как Вымпелком, Датафорт, который реализует публичное облако билайна, и другие. И мы поняли, что IT у нас абсолютно распределённая и существует во всех юрлицах, во всех подразделениях и во всех командах, которые внутри этих юридических лиц. И внутри Вымпелкома есть отдельное подразделение, которое  возглавляю я, в котором сосредоточена экспертиза DevOps, мы его называем "DevOps Governance".

Делим мы его на две части. 

Читать далее
Total votes 7: ↑7 and ↓0+13
Comments0

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

Level of difficultyHard
Reading time19 min
Views18K

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

Об одном таком направлении мы (команда ИИ и BigData в билайне) и расскажем в этом посте, а именно о том, как при помощи ИИ и цифровой патологии можно значительно расширить классические возможности лечения рака почки.

Под катом будет много врачебных терминов, но без этого никак.

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

Мы - это команда билайна: Александр Арутюнян и Виктор Гринин.

И наши коллеги-ученые из Сеченовки: Елена Иванова, Алексей Файзуллин, Пётр Тимашов и Анатолий Шехтер. 

Начнем.

Читать далее
Total votes 15: ↑14 and ↓1+20
Comments8

Как искусственный интеллект  помогает лечить рак почек. Патология, диагностика, прогноз (часть 2)

Level of difficultyHard
Reading time23 min
Views42K

Привет, это команда МедТех ИИ и дирекции по искусственному интеллекту и цифровым продуктам билайна и врачи-учёные из Сеченовского университета. И это вторая часть нашей статьи из журнала  Biomedicines про применение искусственного интеллекта в диагностике рака почки. Первую часть можно прочитать тут.

Дифференциальный диагноз почечно-клеточной карциномы

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

Читать далее
Total votes 16: ↑15 and ↓1+21
Comments1

Как настроить ETL с json’ами в Apache NiFi

Level of difficultyEasy
Reading time9 min
Views2.7K

Привет, Хабр! Меня зовут Сергей Евсеев, сегодня я расскажу, как в Apache NiFi настраивается ETL-пайплайн на задаче с JSON’ами. В этом мне помогут инструменты Jolt и Avro. Пост пригодится новичкам и тем, кто выбирает инструмент для решения схожей задачи.

Что делает наша команда

Команда работает с данными по рекрутингу — с любой аналитикой, которая необходима персоналу подбора сотрудников. У нас есть различные внешние или внутренние источники, из которых с помощью NiFi или Apache Spark мы забираем данные и складируем к себе в хранилище (по умолчанию Hive, но есть еще PostgreSQL и ClickHouse). Этими же инструментами мы можем брать данные из хранилищ, создавать витрины и складывать обратно, предоставлять данные внутренним клиентам или делать дашборды и давать визуализацию.

Описание задачи

У нас есть внешний сервис, на котором рекрутеры работают с подбором. Сервис может отдавать данные через свою API, а мы эти данные можем загружать и складировать в хранилище. После загрузки у нас появляется возможность отдавать данные другим командам или работать с ними самим. Итак, пришла задача — нужно загрузить через API наши данные. Дали документацию для загрузки, поехали. Идем в NiFi, создаем пайплайн для запросов к API, их трансформации и складывания в Hive. Пайплайн начинает падать, приходится посидеть, почитать документацию. Чего-то не хватает, JSON-ы идут не те, возникают сложности, которые нужно разобрать и решить.

Ответы приходят в формате JSON. Документации достаточно для начала загрузки, но для полного понимания структуры и содержимого ответа — маловато. 

Мы решили просто загружать все подряд — на месте разберемся, что нам нужно и как мы это будем грузить, потом пойдем к источникам с конкретными вопросами. Так как каждый метод API отдает свой класс данных в виде JSON, в котором содержится массив объектов этого класса, нужно построить много таких пайплайнов с обработкой разного типа JSON’ов. Еще одна сложность — объекты внутри одного и того же класса могут отличаться по набору полей и их содержимому. Это зависит от того, как, например, сотрудники подбора заполнят информацию о вакансии на этом сервисе. Этот API работает без версий, поэтому в случае добавления новых полей информацию о них мы получим только либо из данных, либо в процессе коммуникации.

Читать далее
Total votes 12: ↑11 and ↓1+15
Comments6

Оптимизируем параметры запуска приложения Spark. Часть первая

Reading time5 min
Views14K

Привет! Меня зовут Андрей Чучалов, я работаю в билайне, и в этом посте я расскажу про оптимизацию параметров запуска приложений в Spark, поиск проблем и повышение производительности. Разберем запуск приложений Spark в базовой и расширенной версиях, покажу методы расчёта основных параметров работы приложения для производительности и эффективности использования доступных ресурсов кластера. Бонусом — о том, как всё это привязано к деньгам, и где сэкономить можно, а где — не стоит.

Для чего это вообще нужно

Спараметризировать приложение — это не такая уж грандиозная задача, а вот попытаться понять взаимосвязь эффективности работы приложения со стоимостными параметрами такой работы — это уже сложнее. Тут вам пригодится своеобразное «боковое зрение».

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

Читать далее
Total votes 14: ↑13 and ↓1+17
Comments1

О пройденном пути, полученных результатах и наших планах в мониторинге

Level of difficultyEasy
Reading time15 min
Views2.9K

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

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

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

Читать далее
Total votes 13: ↑12 and ↓1+16
Comments4

Как за 30 минут улучшить свое резюме?

Level of difficultyEasy
Reading time3 min
Views22K

Если вы читаете это, то скорее всего, поиск нового (или даже первого) места работы вызывает стресс, требования в вакансиях на HeadHunter кажутся невыполнимыми,
а свое резюме не то что не хочется никуда отправлять — есть желание никогда его не открывать.

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

Да, мы не сможем за 30 минут повысить ваш опыт работы на 3 года, но даже в банальном оформлении своего резюме многие делают (или не делают) достаточно странные вещи.

Перейдем к пункту 0...

Меня зовут Дмитрий Иванов, я старший аналитик данных компании билайн, и первое правило хорошего резюме — это простота. Пока мы не идём на позицию ТОПа или вице-президента, давайте оставим излишний формализм за пределами того PDF-файлика, который вы будете рассылать рекрутёрам.

0. Пишите просто и понятно

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

Читать далее
Total votes 29: ↑18 and ↓11+13
Comments22

Что находится внутри физического Архива Интернета

Reading time4 min
Views14K

Когда я был в Сан-Франциско на AI Engineer Summit, то воспользовался возможностью посетить Архив Интернета — физический архив в калифорнийском городе Ричмонде примерно в двадцати минутах езды от Сан-Франциско.

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

Я попросил водителя Uber подбросить меня до парковки со знаком Internet Archive. Но оглядевшись, я не смог найти публичного входа на склад. Рядом стояло ещё несколько озадаченных фанатов истории Интернета, мы неуклюже поздоровались и начали обсуждать, там ли находимся. Вскоре нас заметила пара людей в конце улицы и помахала нам.
Читать дальше →
Total votes 77: ↑77 and ↓0+77
Comments14

Анализ отличий в работе системного и бизнес-аналитика через призму процессного подхода

Reading time4 min
Views13K

Всем привет!

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

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

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

Читать далее
Total votes 19: ↑16 and ↓3+16
Comments11

Об одном способе реализации архитектуры крупного Flutter-приложения

Level of difficultyMedium
Reading time8 min
Views5.1K

Привет! Меня зовут Олег Скирюк, я лидирую контент-разработку в одной из команд билайна. Сам я перешёл в мобильную разработку из веба три года назад, после чего собрал и обучил одну из первых Flutter-команд в компании. Вместе с этой командой мы постоянно экспериментируем и пробуем различные решения, чтобы совершенствовать наши приложения.

В этом посте я хочу рассказать про архитектуру Flutter-приложений, о том, как мы в билайне это делаем, чего мы достигли и как это у нас работает. Поговорим о создании архитектуры, организации управления состояниями и зависимостями, о привычных и не очень методах и концепциях, затронем Mobx, GetX и Flutter modular, а также разберём всё это на живом примере — на нашем мобильном приложении для дилеров.

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

Читать далее
Total votes 16: ↑16 and ↓0+16
Comments14

Особенности подготовки текстов для правильного воспроизведения в программах для незрячих

Reading time11 min
Views1K

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

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

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

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

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

Набором этих правил я и хочу поделиться.

Читать далее
Total votes 15: ↑15 and ↓0+15
Comments9

Использование ML для прогнозирования CLTV

Level of difficultyMedium
Reading time10 min
Views2.9K

Из прошлой статьи мы узнали, что CLTV (customer lifetime value) — метрика, используемая для оценки прибыли, которую компания может получить от своего клиента за время его пользования продуктами и сервисами компании.

Разберем, что означает каждая буква в определении CLTV (customer lifetime value). Кто такой клиент, что мы понимаем под lifetime и ценностью, которую приносит нам клиент. 

CLTV строится для клиента, а не для номера телефона, так как мы не хотим терять историю взаимодействий с ним. Мы учитываем, что абонент может сменить номер телефона и/или может измениться номер договора. Также билайн — это не только мобильная связь, но и домашний интернет, которым наши абоненты могут пользоваться в рамках одного договора. Поэтому мы сразу решили собирать информацию и по этим услугам в рамках одной записи по клиенту. В будущем мы планируем прогнозировать CLTV уже на уровне физического лица и домохозяйств, объединяя историю пользования всех сим-карт клиента.

Под lifetime мы понимаем не полный жизненный цикл клиента от момента заключения договора до момента его закрытия, а пятилетний горизонт, который мы отсчитываем от текущего момента времени. То есть, если мы строим прогноз от января 2023 года, то прогноз будет построен помесячно до декабря 2027 года. Почему 5 лет? Этот срок был определен опытным путем — при нем достигается баланс между качеством предсказаний и потребностью в бизнес-процессах.

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

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments2

Как сделать UI тестируемым и легкоизменяемым?

Reading time14 min
Views7.7K

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

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

Читать далее
Total votes 20: ↑20 and ↓0+20
Comments4

Почему код становится legacy?

Reading time7 min
Views11K

Написание кода похоже на соединение двух точек. Ожидаемо, что самым простым путем будет нарисовать прямую линию между точками А и Б. 

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

Давайте увеличим количество препятствий на порядок. Линия становится все более извилистой.

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

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

Читать далее
Total votes 18: ↑17 and ↓1+20
Comments16

Что такое CLTV и как мы в билайне с ним работаем

Level of difficultyMedium
Reading time7 min
Views7.7K

Немного душная, но важная вводная часть

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

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

• Какую сумму инвестировать в бизнес-направление и когда вложения окупятся?

• Сколько мы зарабатываем на продукте A, и не каннибализирует ли он доходы с продукта B?

• Насколько капитализация нашего бизнеса изменилась за последний год?

Помимо этого, мы принимаем (преимущественно в автоматизированном режиме) множество операционных решений:

• Информацию о каком продукте направить клиенту в SMS-рассылке?

• С каким приоритетом обслужить клиентов в условиях ограниченных ресурсов?

• Какую оптимальную цену предложить клиенту за потребляемые услуги?

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

Читать далее
Total votes 16: ↑16 and ↓0+16
Comments6

Seldon в MLops-инфраструктуре beeline business

Level of difficultyMedium
Reading time7 min
Views2.9K

Привет, Хабр!

В этой статье затронем тему организации процессов Machine Learning Operations (MLops) в beeline business, особое внимание акцентируем на тестировании моделей машинного обучения. Тестирование мы построили с использованием Gitlab (CI/CD), Mlflow и open-source фреймворка Seldon Core для деплоя REST API или gRPC сервисов с моделями в среде Kubernetes. А пока… 

Читать далее
Total votes 13: ↑13 and ↓0+13
Comments0

Как тестировать не-REST-бэкенд. Часть вторая, WebSocket

Level of difficultyMedium
Reading time6 min
Views15K

Привет! Продолжаем цикл статей про тестирование не-REST-бэкенда, в прошлый раз мы говорили о GraphQL, теперь пришло время WebSocket.

Итак, что такое WebSocket?

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

Что тут важно — что это протокол (со всеми вытекающими последствиями для протокола), который использует постоянное соединение.

Работу по WebSocket в обычной жизни можно представить примерно так.

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

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

ОК, что вам делать в такой ситуации?

Читать далее
Total votes 21: ↑21 and ↓0+21
Comments4

DIY таймер кормления кота на Arduino Mega

Level of difficultyEasy
Reading time4 min
Views7K

Я разработчик, в то время работал в начальником отдела разработки в небольшой "компании одного продукта", пилил что-то типа ERP, посвященной ремонту больших парков грузовиков-бульдозеров-экскаваторов, учету съеденных на этот ремонт клиенских денег и контролю затраченного на него времени.

Как водится, у меня есть кот. Это не дань моде: коты у меня живут всю жизнь и всю жизнь они хотят есть (а некоторые даже ЖРАТЬ) что не проблема, когда ты живешь один и всегда знаешь, что ты либо покормил кота, либо еще нет — промежуточного состояния не дано.

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

Все ясно: кто-то недавно его покормил. Скорее всего потом потом кто-то еще покормил. А потом еще и ты. А потом...

Читать далее
Total votes 47: ↑47 and ↓0+47
Comments43

ASML выпустит «китайскую» версию литографической машины. Но у Китая есть и другие проблемы: некачественные чипы

Reading time4 min
Views9.5K
image

В связи с торговым конфликтом США и Китая у последнего проблемы с установками для EUV-литографии и DUV-литографии. В Поднебесную запрещены поставки современного оборудования подобного типа. Соответственно, китайцы не могут массово производить необходимые стране чипы, из-за чего страдает электронная отрасль. На днях появилась информация о том, что поставки систем такого рода все же наладят, хоть и в урезанном варианте. Но есть и другая проблема — предприятия КНР выпускают не самые качественные чипы. Подробности — под катом.
Читать дальше →
Total votes 37: ↑35 and ↓2+42
Comments7

Как писать по-настоящему масштабируемый код?

Reading time4 min
Views12K

Почему масштабировать вообще сложно?

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

Основная причина тут в том, что как только вы начинаете изменять какую-то большую систему, она начинает разваливаться. Ну, за исключением тех случаев, когда у вас вообще всё на 100% покрыто тестами. Однако, в реальном мире история с покрытием тестами такова, что код современных приложений покрыт (в лучшем случае) примерно на 1%.

Может быть, 100% покрытие тестами — это реальность не только для библиотек, утилит или компиляторов (ведь мы можем формализовать их поведение математически), но и для веб-приложения? Да не, фигня какая-то...

Читать далее
Total votes 17: ↑13 and ↓4+12
Comments4
1

Information

Rating
286-th
Works in
Registered
Activity