От редакции:
В рубрике DOU Проекторвсе желающие могут презентовать свой продукт (как стартап, так и ламповый pet-проект). Если вам есть о чем рассказать — приглашаем поучаствовать. Если нет — возможно, серия вдохновит на создание собственного made in Ukraine продукта. Вопросы и заявки на участие присылайте на valentina@dou.ua.
Идея
Здравствуйте, уважаемые читатели DOU! Мы команда стартапа из Киева под названием Fliqvil.comв составе трех человек: главного разработчика архитектуры и программного продукта Славы, маркетолога и менеджера продукта Романа и разработчика и менеджера проекта Артёма.
Однажды во время перерыва на кофе мы разговорились о том, как было бы здорово и интересно в реальном времени наблюдать события, происходящие в любой точке земного шара, и пришли к выводу, что современные технологии позволяют выйти на новый уровень интерактивности: благодаря социальным сетям генерируется столько контента, что при желании можно наблюдать за совершенно разными местами, событиями и людьми. Нужен был лишь удобный механизм сбора этого контента и отображения его в подходящей форме, который мог бы обеспечить интерес и вовлечение людей в события, происходящие рядом с ними или даже на другом континенте.
Реализация
Мы объединили посты из социальных сетей с геолокационными тегами (начали с Twitter и Instagram) и поместили все это на карты больших городов. После реализации задуманного заметили, что у людей появляется недоумение по поводу нашего сервиса — непонятно, а для чего же это нужно? Мы решили предложить пользователю возможность выбирать для себя наиболее интересные события в округе или виртуально присутствовать на различных событиях по всему миру с помощью видео-трансляций (реализация этой части еще предстоит).
Для реализации коммерческого потенциала мы выбрали нишу мероприятий и событий. С помощью Fliqvil заведения типа ночных клубов, пабов и баров, спортивных арен, концертных холлов, смогут транслировать происходящее в режиме реального времени, а также афишировать грядущие мероприятия с возможностью приобретения билетов и участия в акциях.
Но основное в любом сервисе — полезность для пользователей. К примеру, с помощью Fliqvil можно посмотреть, каково это стоять в фан-секторе на концерте группы Metallica, который проходит в Лос-Анжелесе, пока вы сидите дома и работаете ложкой за столом. Или проверить какая атмосфера царит в пабе, сколько там людей в субботу вечером, хорошо ли исполняет группа популярные каверы, а потом уже принять решение — идти ли туда на следующих выходных. Да, можно залезть в Foursquare, Yelp или Trip Advisor, но они же не обеспечивают интерактивности и эффекта присутствия!
Пока что мы используем посты Twitter и Instagram — поэтому приложение уже достаточно наполнено контентом. Сейчас у нас подключены порядка 10 городов. Мы будем подключать новые, собирая заявки от пользователей. В текущей версии пользователь может находить фото/видео контент на карте города, читать комментарии, общаться в чате. Также можно чатиться посредством постинга в социальных сетях хэштега #fliqvil и геотега. Есть как веб — Fliqvil.com, так и Android приложение.
Технологии
Изначально мы задались целью создать масштабируемый сервис с поддержкой большого количества пользователей, потому что перед нами стоит амбициозная цель запустить Fliqvil по всему миру. Поэтому был выбран надежный и проверенный enterprise stack, с которым наш лидер и архитектор имел достаточный опыт успешного применения в коммерческих проектах, а именно:
— MongoDB as data storage;
— Spring at backend (Social, Data, WebSocket);
— Js at frontend (AngularJs, SockJs);
— ngnix for static data and proxying api requests to tomcat;
— Tomcat as servlet container.
Веб-приложение для проверки идеи было написано за несколько недель. Результат нам понравился, и мы двинулись в сторону улучшения расширяемости и распределямости нагрузки для сервиса для возможности подключения большего количества городов.
Стек эволюционировал в такое решение:
— MongoDB as data storage;
— Redis to handle state of requests to social services;
— Akka Framework
— Spring at backend (Social, Data, Security);
— Netty as SocketIO server
— Js at frontend (AngularJs, SocketIO);
— остальное без изменений.
Конфигурация используемого VPS-сервера: 4 ядра, 12 Гб ОЗУ, OS Ubuntu Server. Все сервисы запущены на одной машине, загрузка которой показана на графике ниже:
Использование вычислительных ресурсов сервером Fliqvil в штатном режиме
Мы пока не проводили нагрузочные тесты, но основываясь на предыдущем опыте разработки, ожидаем что в текущей конфигурации сервис выдержит
На текущий момент в сервис подключено 10 городов, обновление постов из которых происходит с частотой 0.5 Hz. По мере увеличения нагрузки мы добавим серверов и распределим сервисы по разным VPS.
Мы решили добавить топ и случайную подборку постов; регистрацию пользователей для возможности репостинга и сохранения постов в избранное из нашего приложения; поиск и фильтрацию контента; городской чат; форму обратной связи, поскольку мнение пользователей очень важно для нас. Миграция на новый стек и добавление этих функций заняли около месяца.
Мы также разработали мобильное приложение, поскольку по статистике 80% трафика в социальных сервисах — именно мобильные клиенты. Поскольку достаточного опыта разработки под iOS у нас не было, мы решили начать с Android-версии. Разработка мобильного приложения заняла всего лишь несколько дней благодаря продуманным API и архитектуре back-end.
Мобильное приложение
Дальнейшее развитие видится нам связанным с платформой Spring XD вместо Akka (но мы всегда открыты к конструктивной критике), а также параллельным использованием реляционной СУБД из-за отсутствия поддержки транзакций в MongoDB.
Результаты
Мы запустились в феврале. На сегодня мы тесно работаем с двумя городами — Лос-Анжелес и Сан-Франциско. Уже подключили в пробном режиме более 150 заведений. Пытались мы взяться за Киев и Москву, но не так-то просто объяснить людям от бизнеса, зачем им тратить время на малопопулярный с их точки зрения Instagram, к примеру, не говоря уже о совершенно неизвестном сервисе.
Планируем расширить функционал, добавив видео-трансляции, отслеживание локаций, разработать приложение под iOS. Запустить Fliqvil в крупных городах мира.
Мы хотим показать широкой аудитории еще один способ социального взаимодействия, расширить кругозор, дать возможность экономить свое время, выбирая подходящие места для досуга. Для бизнеса — оптимизировать затраты на рекламу, предоставить еще один эффективный инструмент для маркетинга.