Connect with us

Разработка

КиноTinder, или как спасти человечество от муки выбора фильмов

Владимир Бондаренко из компании Mauris рассказал нам о тернистом пути еще одного своего проекта – рекомендательного сервиса для кино.

Mauris

Опубликовано

/

     
     

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

Наверняка каждому известно чувство “хочу посмотреть то, не знаю, что, и никто мне не поможет”. Мысль о создании киносервиса посещала нас неоднократно. Но в 2013 году, когда трудовые будни хотелось скрасить хорошей подборкой фильмов на вечер, в очередной раз стало понятно: не все то нравится, чему ставят высокие оценки. Ни рейтинг «Имхонет», ни КиноПоиск и IMDB не смогли помочь в поиске подходящих фильмов. Киноленты с высоким рейтингом были либо просмотрены ранее, либо не интересны, что, собственно, ставило в ступор. А фильмы со средним рейтингом было трудно оценить и отобрать.

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

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

А) отображение ТОПа классных фильмов под интересы конкретного пользователя, базируясь на оценках ранее понравившихся фильмов;

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

Однако приступив к работе, мы сразу же столкнулись с рядом проблем. То, что удобно разработчику, не всегда комфортно для пользователя: программирование заняло всего 2 дня, а превращение в понятный для пользователя сервис – больше года.

Проблема 1. Разработка удобного и понятного интерфейса для пользователя

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

Решение: быстрый хотфикс с постоянно обновляемой подборкой фильмов с лучшим рейтингом – хорошая подсказка для забывчивых.

Проблема 2. Функция «просмотр фильма с другом» не сработала

На FB или ВК выбиралась страница пользователя, и по ней делался перекрестный анализ – какие фильмы не смотрели ни вы, ни он. Сервис хорошо подбирал фильмы в одиночном режиме, но при перекрестном анализе возникала проблема: система выдавала фильмы, которые в большинстве случаев не были интересны обоим пользователям. В итоге комбинацией из двух списков не пользовался практически никто.

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

Взлет и падение

После анонса о выходе сервиса в закрытом сообществе результаты превзошли все ожидания – за первую неделю было собрано больше миллиона оценок фильмов. Но была и обратная сторона медали: наши сервера тут же упали. На тот момент у нас не было достаточного опыта работы с большой аудиторией: при одновременном заходе на сайт более 500 пользователей скрипт не выдержал и рухнул.

Весь back-end был написан на php, а в качестве БД использовалась MySQL. Для исправления ситуации требовалось максимально ускорить ресурс – то есть:

  • оптимизировать запросы в БД;
  • изменить алгоритм;
  • изменить  конфигурацию сервера;
  • дать возможность использовать частично предварительно сгенерированные данные (batch process) и кеши данных.

…к чему мы и приступили.

Проделанную нами работу можно разделить на несколько этапов:

1 этап. Сайт был мультиязычным: имел русскую и английскую локализации. Нам пришлось внедрить memcached – систему кэширования, в которой был заложен перевод контента, а также интерфейса. В итоге, все страницы стали отображаться вдвое быстрее – за счет выгрузки из оперативной памяти и устранения запросов в БД на перевод интерфейса.

2 этап. Объединил несколько операций:

  • изменение алгоритма получения данных;
  • разбивка сложных запросов на подзапросы;
  • применение табличных индексов;
  • оптимизация обработки строк (если просто соединить таблицы между собой через JOIN, не факт, что БД выберет оптимальный вариант работы сама);
  • использование memory-таблиц. Чтобы из автоматического JOIN-a таблиц использовать ручное соединение, мы сделали ряд простых запросов – они получали те же данные, но в определенном порядке. Это уменьшило количество обрабатываемых данных.

После этого мы занялись переводом индивидуального рейтинга фильма из обычной таблицы в memory (расположенную в оперативной памяти) – в результате получили хороший прирост.

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

Также мы применили ручное партицирование БД: сделали разбиение – оценки фильмов определенных групп посетителей сохранялись в разных таблицах – то есть мы горизонтально разбивали оценки по n-ому количеству таблиц в зависимости от растущей базы пользователей. Размер каждой таблицы был ограничен 1 миллионом записей: это позволяло выполнять sql-запросы с необходимой нам скоростью.

3 этап. Оптимизация сервера. На тот момент мы использовали VPS, ресурсы которого были ограничены, но после конфигурирования результат не заставил себя ждать. Мы увеличили количество одновременных подключений к БД и запросов на сервер.

4 этап. Мы запустили пересчет оценок. После первых дней работы сервиса стало ясно, что динамический подсчет рейтинга фильма замедляет время загрузки страницы: мониторились сотни записей и по ним выводились средние оценки. Написанный нами новый скрипт каждые сутки в 2 часа ночи запускал обновление данных по рейтингам, за счет чего время загрузки страницы сократилось.

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

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

Смена концепции

Но веб-сервис – это не только вопросы разработки и техподдержки. Появилась проблема резкого падения числа пользователей. Картина была такова: пользователь заходил на сайт, проводил 2-3 часа за оценкой фильмов и исчезал. В лучшем случае возвращался еще несколько раз. Это дало нам повод задуматься о том, что в таком формате сервис себя исчерпал.

ДУБЛЬ №2

Сервис должен был стать более понятным по формату и мотивировать пользователя к последующим посещениям. Для этого надо было:

  • оптимизировать путь пользователя при работе с сервисом (ввести обучение);
  • разработать алгоритм по «удержанию» и привлечению пользователя.

Мы начали работу, параллельно выполняя заказы клиентов – а их было очень много. Прошло несколько месяцев, затем еще и еще, и спустя 2 года мы осознали: заказов становится только больше, мы работаем на пике. Если не реализовать наш проект сейчас, этого не случится никогда.

В итоге, в декабре 2016 года, мы вновь перезапустили сервис, преобразовав его формат.

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

  • есть возможность напомнить о себе с помощью push-уведомлений;
  • список фильмов всегда в кармане пользователя;
  • мобильный продукт вполне успешно способен отучить посетителя напрягать память (по аналогии с Тиндер) и спокойно «вести» его.

СЛОЖНОСТИ

  • Интерфейс. Как совместить свайпы влево и вправо с большим количеством функций приложения (смотрел, не смотрел, хочу посмотреть и т.д.)? Вариант «хочу смотреть – свайп вправо, не хочу – влево», а внизу «оценка» не оправдал надежд: плей-тест показывал, что люди просто не понимают, чего от них хотят. От бездумных свайпов и оценок наугад алгоритм начинал работать хуже.

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

Концепт стал чуть сложнее, но возможность совершить ошибку была сведена к минимуму. Свайп вправо – пользователь видит, что фильм посмотрен, и ему предлагают поставить оценку по десятибалльной шкале. Свайп влево – фильм не был просмотрен ранее, поэтому нужно выбрать один из 3 пунктов («не хочу смотреть», «хочу посмотреть», «не определился»). Мы пожертвовали удобством интерфейса ради того, чтобы процент непонимания механики свелся к нулю. В итоге, пользователь стал понимать, что и зачем он делает, более осознанно принимать решения, после чего алгоритм выдавал ему подходящие фильмы.

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

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

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

Что в итоге?

Мы запустили приложение, провели бета-тестирование, собрали фидбек, внедрили ряд доработок и сейчас выпустили обновленную версию, которая уже доступна в Google Play и App Store. С iOS версией все оказалось сложнее – нам пришлось пережить 5 проверок от придирчивых модераторов: сотрудники компании Apple тщательно тестируют каждое приложение на всех iOS гаджетах. Они смогли отловить баг при запуске iPhone приложения на iPad, который состоял в том, что при свайпе карточка не уходила, ее нужно было вести пальцем до конца экрана. Основная часть проблем была юридического характера, а именно связана с авторским правом на постеры, которые используются в приложении. Нам пришлось потратить много времени на составление обращения к правообладателям, подбор постеров с определенным типом лицензии, а также разработку механизма, который помогает быстро исключить фильм в случае запроса от правообладателя.

В обновленной версии пользователей ожидает множество фич:

  1. Ежедневные подборки фильмов на разнообразные тематики – отличная альтернатива свайпанью и получению рекомендаций. Мы ожидаем, что это мотивирует людей чаще пользоваться приложением.
  2. Расширенный профиль со статистикой по своим оценкам и определением любимых жанров, а также система достижений пользователя. Также теперь в выдачу можно добавить сериалы.
  3. Поиск фильма: можно сразу найти кино и добавить его в список «хочу посмотреть» или оценить просмотренные ранее фильмы. Добавлена функция «поделиться фильмом с другом» (ссылка, при переходе по которой открывается страница фильма).
  4. PRO-режим – возможность получить полный доступ к фильмам (в рекомендациях представлены скрытые фильмы) и увидеть расширенную статистику по своим оценкам.

В ближайших планах:

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

Качайте в App Store и Google Play, ставьте оценки, оставляйте отзывы. Будем признательны за любую обратную связь о проделанной нами работе!

Fander - гид в мир кино
Fander - гид в мир кино
Разработчик:
Цена: Free+
Комментарии
Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement
Click to comment

You must be logged in to post a comment Login

Leave a Reply

Медиа

Podlodka #89: Перфоманс

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

AppTractor

Опубликовано

/

Автор:

Podlodka

Денис Мишунов объяснил, почему производительность важна, как ее воспринимает мозг человека и показал варианты решения проблем этого восприятия. Александр Тоболь провел краткий экскурс в то, как работают различные сетевые протоколы и их клиентские реализации и открыл целую область для оптимизаций. Артур Василов и Николай Лихогруд копнули в оптимизацию перфоманса клиентского кода Android и iOS приложений соответственно. Короче говоря, если вы не знаете, как и зачем сделать свой продукт быстрым – этот выпуск однозначно для вас!

Комментарии
Продолжить чтение

Новости

Интересные материалы: 13.12

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

AppTractor

Опубликовано

/

Автор:

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

Комментарии
Продолжить чтение

SDK

Epic выпустит SDK для кроссплатформенных игр

Epic Games в следующем году выпустит SDK для организации кроссплатформенных игр.

AppTractor

Опубликовано

/

Автор:

Новый Online Services SDK позволит регистрироваться в играх через разные социальные сети и платформы, заводить списки друзей, показывать свое присутствие, вести профиль и т.п. вещи, будет также облачное хранилище для сохранения игр, достижения и награды, голосовые коммуникации, подбор игроков для мультиплеера.

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

Предполагается, что все это будет бесшовно работать на PC, Mac, iOS, Android, PlayStation, Xbox и Switch. Предполагается, что сначала SDK выйдет для Windows – примерно во втором или третьем квартале. Остальные платформы будут подключаться по мере готовности.

SDK будет открытым, первоначально поддерживать Unreal Engine и Unity, инфраструктура – Amazon Web Services. Epic обещает полную поддержку GDPR.

 

Комментарии
Продолжить чтение

Разработка

Главные тренды мобильной разработки в 2019

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

Epom Apps

Опубликовано

/

Автор:

Количество пользователей смартфонов в 2019 году достигнет 2,5 миллиардов, а постоянно растущее число приложений в Google Play и Apple App Store делает мобильную разработку одним из самых динамичных и конкурентных секторов.

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

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

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

Эволюция машинного обучения и искусственного интеллекта

Доход приложений от внедрения искусственного интеллекта (Artificial Intelligence, AI) на мировом рынке постоянно растет и превысит 100 млн. долларов к 2025 году. Согласно исследованиям Gartner, 200 самых крупных компаний в мире активно внедряют и полагаются на данные машинного обучения.

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

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

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

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

Мгновенные приложения для Android

Идея мгновенных приложений (Instant Apps), которые Android выкатил еще в 2016, наконец набирает обороты. Благодаря этой технологии пользователи могут получить доступ к функционалу приложения, не загружая его. Для пользователей выгода очевидна: концепция “попробуй, прежде чем купить” позволит им сэкономить время на чтение отзывов, и самим попробовать фичи приложения.

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

Тяжеловесным играм с большим функционалом может быть сложно экспериментировать с мгновенными приложениями.

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

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

Персонализация vs GDPR

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

Персонализация в 2019 не менее важна, чем приватность. Исследование Salesforce показывает, что 65% пользователей считают, что персонализация повышает их лояльность к компании. В то же время пользователи ценят конфиденциальность данных.

Это вызвало противоречия в онлайн-экосистеме: большие компании типа Google или Facebook запрашивали личную информацию, чтобы «обеспечить более качественный пользовательский опыт». Но правила GDPR теперь обязывают объяснять пользователям, какие данные и зачем собирает компания и дать им выбор – отказаться от сбора cookie, или разрешить системе узнать себя лучше.

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

Появление новых способов монетизации

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

Монетизация пользовательских данных начала развиваться пару лет назад и сегодня является одним из быстрорастущих трендов. Монетизация данных — это процесс сбора и передачи неперсональных данных пользователей посреднику. Для приложений с DAU от 60 000 пользователей этот вариант – идеальный пассивный заработок.
Монетизация данных полностью соответствует правилам GDPR и Google Play Policy, но требует явного согласия пользователей перед началом процесса сбора данных.

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

UX: От сложного к простому

Упрощенный UX помогает пользователям быстро ориентироваться в приложении и находить то, что они искали. Дизайн мобильных приложений должен предсказывать поведение пользователей, быть минималистичным, и учитывать Swiping-жесты, чтобы обеспечивать целостный опыт для пользователей приложений. А с развитием Google Pay и Apple Pay,  желательно добавить возможность оплаты виртуальной картой.

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

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

Усиленная защита мобильных приложений

В 2017 году около 75% мобильных приложений не смогли пройти даже базовые тесты безопасности. Это означает, что в процессе создания приложения разработчик обычно не тестирует приложение на потенциальные уязвимости. Ошибки, допущенные в процессе разработки приложений, могут напрямую влиять на репутацию и погубить приложение после запуска. Наиболее распространенными уязвимостями мобильной безопасности являются слабый контроль на стороне сервера и уязвимости в протоколах и аппаратуре.

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

Не надейтесь, что пронесет —проверьте приложение на предмет пробелов в безопасности. Список удобных инструментов проверки приложений включает ZAP, Micro Focus, Kiuwan и многие другие.

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

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

Комментарии
Продолжить чтение

Реклама

Наша рассылка

Нажимая на кнопку "Подписаться" вы даете согласие на обработку персональных данных.

Вакансии

Популярное

X
X

Спасибо!

Теперь редакторы в курсе.