Как стать автором
Обновить
Онлайн-кинотеатр Иви
Мы открываем для людей многообразие мира кино
Сначала показывать

Как мы в IVI используем массивы в ClickHouse для подсчета продуктовых метрик

Время на прочтение6 мин
Количество просмотров4.4K

 IVI – кросс-платформенный сервис, а значит, мы должны анализировать метрики всюду: на вебе, телевизорах и мобильных приложениях. Продукт непрерывно развивается, чтобы стать максимально эффективным, удобным и повысить ценность и привлекательность подписки. Перед тем, как внедрить какую-то новую фичу, мы проводим a/b-тесты и исследуем, на сколько востребованным окажется нововведение и как оно повлияет на конверсию или смотрение. Одновременно у нас может проверяться до 70-ти гипотез, от которых непосредственно зависят планы по развитию продукта.

Для того, чтобы правильно оценить успешность или неуспешность теста, требовалось технологичное решение. Новая схема ETL позволила нам иметь хранилище, толерантное к дубликатам. При ошибке в коде мы всегда можем откатить consumer offset в kafka и обработать часть данных снова, не прилагая лишних усилий для движения данных. Хотим рассказать о том, как мы в IVI используем ClickHouse, чтобы посчитать метрики для решения разных продуктовых задач и понять, что мы действительно делаем продукт лучше, а не придумываем фичи, которыми никто не будет пользоваться.

Читать далее
Всего голосов 5: ↑3 и ↓2+1
Комментарии2

Автоматическая документация для Flask с использованием OpenAPI

Время на прочтение5 мин
Количество просмотров21K
image alt


Техническая документация, как известно, крайне важная часть любого проекта. До недавнего времени мы прекрасно жили с таким генератором документаций как Sphinx. Но наступил момент переходить на технологии с бОльшим набором возможностей, поэтому мы приняли решение переписать нашу документацию на более современный стандарт: OpenAPI Specification. Эта статья является скромным гайдом по такому переезду. Она будет интересна Python-разработчикам, особенно тем, которые используют Flask. После ее прочтения вы узнаете, как создать статическую OpenAPI документацию для Flask приложения и развернуть ее в GitLab Pages.

Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии11

Профессия СТО, часть 2

Время на прочтение7 мин
Количество просмотров6.7K

Недавно наш СТО Евгений Россинский @eross пообщался с ведущими подкаста  “Подлодка” про роль СТО. По мотивам этого общения мы подготовили две статьи с основными вопросами о СТО - как им стать и каково им быть, как его найти и сколько это стоит. Сегодня мы публикуем вторую часть этого интервью (первую часть можно прочитать тут).

Читать далее
Всего голосов 25: ↑25 и ↓0+25
Комментарии8

Профессия СТО

Время на прочтение7 мин
Количество просмотров8.7K

Недавно наш СТО Евгений Россинский пообщался с ведущими подкаста «Подлодка» про роль СТО. По мотивам этого общения мы подготовили две статьи с основными вопросами о СТО — как им стать и каково им быть, как его найти и сколько это стоит.

Читать далее
Всего голосов 21: ↑19 и ↓2+36
Комментарии7

Переброска данных между идентичными объектами метаданных базы 1С через подмену УИДов в базе SQL

Время на прочтение4 мин
Количество просмотров6.9K

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



Читать дальше →
Всего голосов 5: ↑5 и ↓0+5
Комментарии29

Внедрение IMA SDK в Android-приложениях

Время на прочтение4 мин
Количество просмотров2.8K
Предположим, что однажды вы решили создать приложение для детей и попробовать на этом заработать. Так как реклама — один из самых простых способов монетизации, то у вас возникает очевидная идея добавить в приложение одно из рекламных SDK и дальше только подсчитывать доход. Все могло быть именно так, если бы приложение было направлено на взрослую аудиторию. Если же оно предназначено для использования несовершеннолетними, то включаются разнообразные законодательные механизмы, которым подчиняются магазины приложений.

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

Наиболее логичным выходом из ситуации оказалось проигрывать рекламу, которую раздает сам Google с помощью сервиса Google Ad Manager. И делать это с использованием IMA SDK, которое также является продуктом Google.

В этой статье я расскажу о том, как мы внедряли IMA SDK в приложениях ivi и ivi kids и с какими ограничениями столкнулись.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+16
Комментарии0

Между дизайн-системой и Server Driven UI

Время на прочтение7 мин
Количество просмотров7.5K

Всем привет! Меня зовут Владимир Касаткин, и я работаю бэкенд-разработчиком в компании ivi.ru, в команде "UX". Цель этой статьи — показать, как мы уменьшили объём клиентской разработки, но при этом увеличили количество проводимых A/B-тестов.


Раньше вся продуктовая разработка была разбита на большие направления ("платформы"): бэкенд, Smart TV, iOS, Android, веб. При этом фичи пилились достаточно долго (по полгода), а побочным эффектом были заметные различия внешнего вида и функционала одной и той же фичи на разных платформах.


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


Читать дальше →
Всего голосов 35: ↑35 и ↓0+35
Комментарии5

Как мы научились делить видео на сцены с помощью хитрой математики

Время на прочтение7 мин
Количество просмотров17K
За 10 лет существования ivi мы собрали базу из 90000 видео разной длины, размера и качества. Каждую неделю появляются сотни новых. У нас есть гигабайты метаданных, которые полезны для рекомендаций, упрощают навигацию по сервису и настройку рекламы. Но извлекать информацию непосредственно из видео мы начали только два года назад.

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

image
Читать дальше →
Всего голосов 65: ↑65 и ↓0+65
Комментарии19

Как мы рекомендуем новинки каталога в онлайн-кинотеатре ivi (+ код на Python)

Время на прочтение4 мин
Количество просмотров5.1K
В блоге онлайн-кинотеатра ivi накопилось достаточно статей про архитектуру рекомендательной системы Hydra. Однако рекомендации — это не только внешний API, но и алгоритмы, которые живут «под капотом» и реализуют достаточно сложную бизнес-логику.

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


Статья будет содержать воспроизводимый пример кода на языке Python с использованием Keras.
Читать дальше →
Всего голосов 6: ↑5 и ↓1+6
Комментарии6

Спасти программиста Вову: как прошла HighLoad++ для стенда ivi

Время на прочтение3 мин
Количество просмотров2.1K
7-8 ноября на территории Школы управления СКОЛКОВО состоялась крупнейшая профессиональная конференция для разработчиков высоконагруженных систем — HighLoad++. В этом году она прошла в счастливый 13-й раз. Онлайн-кинотеатр ivi и HighLoad++ — давние партнёры, а наш CTO eross входит в программный комитет, задача которого выбрать самые актуальные и интересные доклады среди всех присылаемых на отбор.



Читать дальше →
Всего голосов 7: ↑5 и ↓2+6
Комментарии0

Компас команды

Время на прочтение5 мин
Количество просмотров3.3K
Привет! Меня зовут Маша, я Scrum Master в ivi. Работаю с командами биллинга и веб-разработки и помогаю ребятам организовывать рабочие процессы так, чтобы не только эффективно достигать целей, которые ставит бизнес, но и получать удовольствие от того, что ты делаешь. В своих статьях хочу делиться опытом, как настраивать свою собственную работу и работу команд, если вы Scrum Master или Team Lead. А в этой статье давайте поговорим о важности культуры обратной связи.

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


Читать дальше →
Всего голосов 19: ↑15 и ↓4+11
Комментарии14
Привет, Хабр! Меня зовут Александр Дружков, сейчас я работаю заместителем технического директора ivi, но помню наш сервис маленьким сайтом, который бесплатно показывал интересные фильмы в промежутках между рекламой. Я расскажу, как нам удалось проделать путь до сервиса на 50 миллионов пользователей, какие технологии и решения нам помогли, с какими трудностями сталкивалась наша команда и как менялись наши задачи.
Подробности – под катом
Всего голосов 33: ↑29 и ↓4+25
Комментарии6

Внедрение Airflow для управления Spark-джобами в ivi: надежды и костыли

Время на прочтение9 мин
Количество просмотров12K
Задача деплоя моделей машинного обучения в продакшн — это всегда боль и страдания, потому что очень некомфортно вылезать из уютного jupyter notebook в мир мониторинга и отказоустойчивости.

Мы уже писали про первую итерацию рефакторинга рекомендательной системы онлайн-кинотеатра ivi. За прошедший год мы почти не дорабатывали архитектуру приложения (из глобального — только перезд с устаревших python 2.7 и python 3.4 на «свежий» python 3.6), зато добавили несколько новых ML моделей и сразу столкнулись с проблемой выкатывания новых алгоритмов в продакшн. В статье я расскажу про наш опыт внедрения такого инструмента управления потоками выполнения задач как Apache Airflow: почему у команды возникла эта необходимость, чем не устраивало существующее решение, какие костыли пришлось запилить по дороге и что из этого получилось.

→ Видео-версию доклада можно посмотреть на ютубе (начиная с 03:00:00) здесь.


Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии7

От UI-kit до дизайн-системы

Время на прочтение8 мин
Количество просмотров13K
Опыт онлайн-кинотеатра Иви

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


Меж тем компания год от года удваивала штат — нужно было масштабировать отдел дизайна и оптимизировать процессы создания и передачи макетов в разработку. Умножаем всё это на «зоопарк» платформ, которые нужно поддерживать, и получаем подобие вавилонского столпотворения, которое просто не способно «нормально делать» и приносить доход. Развитие платформ часто шло параллельно, и один и тот же функционал мог выходить на разных платформах с лагом в несколько месяцев.
Читать дальше →
Всего голосов 38: ↑35 и ↓3+32
Комментарии22

Фасилитатор с дипломом

Время на прочтение2 мин
Количество просмотров4.9K
На случай, если вы не знаете, кто такой фасилиатор
Фасилитатор (англ. facilitator, от лат. facilis «лёгкий, удобный») — это человек, обеспечивающий успешную групповую коммуникацию (wiki)

TL;DR: с сентября 2018 года стартует магистерская программа, созданная ivi совместно с МАИ — «Управление процессом разработки ПО».


На сегодняшний день IT – одна из самых быстроразвивающихся и востребованных отраслей с постоянно меняющимся ландшафтом. Спрос на рынке труда в данном направлении уже давно превышает предложение, и наряду с этим, молодым специалистам зачастую сложно адаптироваться в реалиях современных компаний имея за спиной хорошее академическое образование. Получается, что сегодня самое эффективное IT-образование должно качественно балансировать между академической частью и опытом практических компаний с реальными успешными кейсами. Только это гарантирует быструю адаптацию и эффективность молодого специалиста на рынке. Надоело писать код? Хочешь, чтобы это делали другие? Добро пожаловать под кат.
Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Комментарии1

Персональные рекомендации в ivi: Hydra

Время на прочтение6 мин
Количество просмотров7.4K
В онлайн-кинотеатре ivi десятки тысяч единиц контента и задача «выбрать, что посмотреть» становится нетривиальной.


О рекомендательной системе в ivi, которая занимается подбором контента на основе пользовательских интересов (внутреннее название — Hydra) мы писали тут и тут. Прошло уже много времени и код проекта значительно изменился: оффлайн часть переехала на Spark, онлайн часть адаптировалась к высоким нагрузкам, Hydra начала использовать другую рекомендательную модель — все эти изменения будут освещены в статье.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии6

Авиахакатон

Время на прочтение3 мин
Количество просмотров2.8K
6-8 апреля на территории Московского авиационного института прошел хакатон, организованный IT-центром МАИ, на котором были представлены задачи от IT-компаний и представителей авиационной индустрии.

Онлайн-кинотеатр ivi выступил партнёром хакатона: предоставил набор данных о контенте, а также осуществил менторскую поддержку команд. Финальные презентации оценивало независимое жюри, в которое вошли представители it-центра МАИ. Немного подробностей под катом.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии0

«Мамкин архитектор». Часть 1: Взлеты и падения программной инженерии

Время на прочтение8 мин
Количество просмотров12K
Доброго времени суток, уважаемые читатели Хабра. Представляю вашему вниманию цикл статей «Мамкин архитектор». Этот цикл статей вдохновлен книгой Эрика Эванса «Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем». В нем я постараюсь отразить личное мнение относительно построения гибких архитектур. Попутно объясню, как это пригодится менеджерам и поможет разработчикам укрепить основные понятия.

image

В этой статье речь пойдет о «творческом подъеме», «творческом спаде» и о покерном понятии «тильт». Последнее отлично отражает состояние разработчика в тех или иных состояниях предметной модели в разрезе программной архитектуры. Опус пригодится:

  1. Менеджерам, решающим вопросы от разработчиков вроде «давайте все закопаем и переделаем».
  2. Прикладным разработчикам, которым будет интересно заглянуть за броню инкапсуляции тщательно выстроенной (или хаусе) предметной модели в концептуальном ее виде.
  3. Архитекторам или дизайнерам системы будет интересен мой опыт внедрения, поддержки и удержания предметной модели в концептуальных контурах.
Читать дальше →
Всего голосов 25: ↑19 и ↓6+13
Комментарии9

Google leanback — забота большого брата

Время на прочтение11 мин
Количество просмотров9.8K
Добрый день, читатели Хабра. Хотел бы поделиться своим опытом разработки приложения для Android TV на примере DetailsFragment.


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

Для того чтобы начать разрабатывать ваше приложение для платформы android, на мой взгляд, вам следует принять 2 основные истины:

  • Плохая идея отходить от официальных рекомендаций и разрабатывать кастомизированное приложение. Гугл позаботился о том, чтобы сделать это было крайне сложно.
  • Single Activity Architecture также не совсем подходит, это чревато утечками памяти, связанной с внутренними реализации библиотеки leanback.
Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии3

Как мы в ivi переписывали etl: Flink+Kafka+ClickHouse

Время на прочтение6 мин
Количество просмотров24K
Год назад мы решили переделать схему сбора данных в приложении и данных о действиях клиентов. Старая система работала исправно, но с каждым разом было всё сложнее и опаснее вносить туда изменения.



В этой статье я расскажу, какие технологии мы стали использовать для сбора и агрегации данных в новом проекте.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии12

Информация

Сайт
www.ivi.ru
Дата регистрации
Дата основания
Численность
501–1 000 человек