Проекты

Обещания.Ru (редизайн)

Команда проекта «Обещания.Ru» — профессиональные редакторы и журналисты с опытом работы в крупнейших Интернет-СМИ, специалисты в области PR и медиа.

Дата публикации новой версии — ноябрь 2014 года

Бюджет: уточняйте цену у менеджеров
Команда
Дмитрий Чернов Продюсер web-студии «ТриЛан»
Денис Веселов Программист
Фёдор Воропаев Руководитель отдела разработки
Технологии Python Django Redis PostgreSQL Celery ElasticSearch

Общая информация о работе над проектом

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

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

О проекте

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

Используемые технологии

Django Framework v.1.3 —
свободный фреймворк для веб-приложений на языке Python, позволящий решать широкий спектр задач быстрым и эффективным способом, что не раз было доказано нашими специалистами как победой в международном конкурсе разработчиков Django Dash, так и повседневным трудом над проектами.

Celery v.2.5.5 —
пакет для асинхронной обработки очереди задач, используется для выполнения процессов «в фоне» (отправка почтовой рассылки, уведомление персон в Twitter'e о том, что у их обещаний подходит срок или они его не выполнили).

ElasticSearch v.1.2.4 —
поисковый сервер, работает во всех фильтрациях данных по сайту и в глобальном поиске.

PostgreSQL v.9.2.9 —
свободная объектно-реляционная система управления базами данных, применяемая для хранения всех данных проекта.

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

Redis v.2.2.12 —
сетевое журналируемое хранилище базы данных в оперативной памяти с быстрым доступом к объектам для кеширования отдельных блоков на страницах.

Предыстория

Развитие проекта происходило медленнее, чем того желали его основатели. Проанализировав возможные причины этого явления, команда «Обещаний.Ru» обратилась к нам, чтобы найти выход из положения. По итогу нескольких встреч мы пришли к выводу, что необходимы серьёзные перемены и силами одной технической поддержки здесь уже не обойтись. Тогда руководством проекта «Обещания.Ru» было принято решение арендовать команду специалистов «ТриЛан», чтобы в кратчайшие сроки осуществить редизайн сайта и оснастить его новым функционалом.

На этот раз в работе над проектом нами использовались передовые подходы к организации командной разработки. Гибкая методология (Agile software development), активно применяемая нашими специалистами, позволила выполнить все задачи качественно и в срок. Благодаря итерационному подходу, чётким и понятным спринтам, на которые был разбит процесс разработки, команде специалистов «ТриЛан» удалось продемонстрировать свои лучше качества.

Задача

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

Редизайном клиент хотел решить четыре задачи:

  • Привести весь проект к единому виду.
  • Избавиться от ненужных разделов и функциональности.
  • Обновить сервер и ПО на нём.
  • Увеличить количество регистраций и активность пользователей на сайте.

Заказчиком были установлены чёткие временные рамки: все работы должны уложиться в три итерации (по месяцу каждая). Итогом должно стать увеличение конверсии новых пользователей в зарегистрированных, а также реализация возможности концентрирования внимания пользователей на одной теме без рассеивания аудитории по сайту.

Оказываемые услуги

Вёрстка макетов, программирование сайта

Начало работ

Создание новой версии сайта началось 15 июля 2014 года.

Проблемы и их решения

Сайт страдал от перегрузок.

Решение:

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

Обнаружилось, что при добавлении очередного объекта (обещания, прогноза и пр.) к сюжету сверх определённого числа возникает ошибка 500.

Решение:

Увеличили допустимое количество объектов, привязываемых к сюжету.

Стороны о проекте

Денис Веселов
Денис Веселов Программист

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

Максим Гоненко
Максим Гоненко Директор по развитию проекта «Обещания.Ru»

Работу специалистов «ТриЛан» оцениваю на пять! Конечно, не всегда наши желания сделать всё в срок совпадали с физическими возможностями, но в целом у меня нет нареканий, я доволен. Хотелось бы отметить, что с переходом на итерационный метод работы оценивать сроки стало гораздо удобнее, это позволило точнее выстроить планирование, благодаря чему весь процесс разработки прошёл почти без опозданий или каких-либо задержек. Я считаю, что именно такой подход оптимален для создания крупных проектов.

Александр Асланов
Александр Асланов Ведущий front-end разработчик

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

Дмитрий Чернов
Дмитрий Чернов Продюсер web-студии «ТриЛан»

Это интересный и уникальный проект. Я очень ценю и благодарю всех коллег за совместную работу. Здорово работать над этим проектом!

Ход работ

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

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

В первые недели реализации проекта была проведена кропотливая аналитическая работа, в ходе которой был сформирован журнал продукта (Product Backlog). Мы выставили приоритеты функциональностей, которые легли в основу ежемесячных релизов (Release backlog). Работа велась итерациями длительностью один месяц. Благодаря этому и заказчик, и разработчики понимали, какой функционал должен быть выпущен к концу итерации. В середине каждой итерации собирались требования к следующему релизу, которые постоянно корректировались с появлением новых требований к проекту и объему функционала.

Внутри команды проводилось еженедельное планирование спринтов (Sprint Planning Meeting). Таким образом, в итерацию умещалось 4 внутренних спринта, которые позволяли всем участникам команды быть в курсе разработки, выявлять проблемы и риски на ранних стадиях и своевременно вносить корректировки в разработку.

Все работы по вёрстке и программированию были разбиты на три итерации, продолжительность каждой из которых равнялась месяцу. Над проектом работала целая команда специалистов: со стороны «ТриЛан» трудились программисты Денис Веселов и Валерий Свириденко, верстальщики Александр Асланов и Александр Пригодин, а также менеджер проекта Дмитрий Чернов; со стороны заказчика проектом вплотную занимались директор по развитию «Обещаний.Ru» Максим Гоненко и руководитель проекта Андрей Черешнев.

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

Всё это проходило по чётко организованному сценарию процесса командной разработки, где:

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

Первая итерация (с 15 июля по 15 августа)

Так, в период первой итерации на действующем сайте «Обещаний.Ru» были применены элементы игрофикации: в правой части экрана появился прогресс-бар, заполнящийся по мере голосования незарегистрированным пользователем. В определённый момент (после того как пользователь отдаст три голоса) на сайте всплывает окно, предлагая выбор — и дальше оставаться «молчуном» или зарегистрироваться и стать «гласом народа».

Скриншот прогресс-бара
 

Скриншот всплывающего окна
 

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

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

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

Фильтрация по персонам в сюжетах
 

Вторая итерация (с 15 августа по 15 сентября)

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

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

Третья итерация (с 15 сентября по 15 октября)

Наконец, в период третьей итерации почти все работы были направлены на скорейший запуск бета-версии нового сайта. Специалисты «ТриЛан» подобрали конфигурации для новых серверов, чтобы сайт выдерживал большие нагрузки. Переделали страницы списка персон и организаций (появились всплывающие подсказки, где отображается рейтинг доверия, формирующийся на основе голосования, и другая информация). В распоряжении проекта появился новый поисковый сервер с актуальной версией ElasticSearch. Обновили раздел мнений в соответствии с дизайном. Исправили последние недочёты и выложили бета-версию на сервер для тестирования.

Примеры страниц нового сайта

Главная страница

Страница обещания

Страница списка персон
 

Результат

С 5 ноября обновлённые «Обещания.Ru» начали полноценную работу.