Как перестать беспокоиться и создать команду

в 9:45, , рубрики: coffeescript, django, nodejs, postgresql, python, vsevi.ru, zerorpc, онлайн видео, я пиарюсь

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

Вспомнив теорию по проектам и применив её к нашей реальности, мы с моим руководителем выработали следующие этапы:

  1. Сбор и придумывание функционала
  2. Создание архитектуры
  3. Поиск команды
  4. Создание UX
  5. Создание дизайна
  6. Разработка
  7. Внедрение и запуск

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

Итак, есть архитектура, есть новая команда, но нет UX. Тупик. Что же делать?
Естественно сделать ещё один проект!

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

ВсеВидео — это агрегатор фильмов с онлайн-кинотеатров (сейчас). В дальнейших планах также агрегировать сериалы и онлайн-трансляции.

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

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

Разработку решили вести по принципу “API-First”. То есть сначала мы разработали документацию по API и реализовали её.

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

Итак, мы взяли Django, поставили Django Rest Framework и реализовали API нашего сервиса. В качестве СУБД мы решили использовать PostgreSQL.
И тут выяснилась наша первая ошибка — не стоит использовать Django для реализации голого API. По факту, мы используем максимум 10% возможностей Django, а в Django Rest Framework нам с трудом удалось впихнуть то, что было в нашей документации.
К сожалению, тут просто не осталось времени что-то исправить.

Поскольку в нашей концепции веб-интерфейс — это отдельное приложение, мы решили его делать на NodeJS с использованием шаблонов Jade.
Тут выяснилось несколько наших ошибок: во-первых, гонять запросы через HTTP между API-сервером и веб-сервером очень затратно; во-вторых, компиляция jade-шаблонов не особо-то и быстра.

Первую ошибку мы решили просто — вместо HTTP стали использовать ZeroRPC. Бонусом пришла и возможность балансировки.
Вторую ошибку мы решили в лоб — обычным кешированием в memcached. Выяснилось, что пре-компиляция шаблонов Jade не всегда возможна в текущей реализации, поэтому для нашего нового проекта мы будем делать форк, в котором будет эта крайне нужная возможность.

Львинную часть багов при реализации взяли на себя роботы-парсеры кинотеатров. Почему так получилось, мы ведём разбор до сих пор :-)

Поскольку у нас 21 век, для сервиса был написан достаточно мощный фронтенд. Не буду рассказывать скучные подробности, замечу только, что в основном фронтенд-файле на CoffeeScript более 1300 строк.

Вот, что у нас получилось под капотом:

Как перестать беспокоиться и создать команду

А вот, что у нас получилось снаружи:

Как перестать беспокоиться и создать команду

Итак, что мы получили в итоге:

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

Теперь я абсолютно уверен, что лучший способ сработать новую команду — реализовать небольшой проект. Например, такой как ВсеВидео.

Автор: theifish

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js