Pull to refresh

История одного mBaaS (cloud backend) сервиса на примере QuickBlox

Reading time11 min
Views12K
Привет Хабровчане! Если вы уже нарядили елку и думаете, какую бы новую аппликуху сделать во время праздников, то вам может быть полезным узнать больше о mBaaS (mobile backend as a service).

Пост будет интересен тем, кто уже использует или планирует использовать готовые серверные платформы в разработке своих мобильных приложений. Про QuickBlox уже писали на Хабре в общем, про code samples и SDK, про авторизацию-аутентификацию и HURL. Также нас упоминали в "Поверхностный обзор Javascript-enabled BaaS платформ".

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



Краткая справка

QuickBlox это mBaaS (mobile Backend as a Service) платформа, которая предоставляет готовую серверную инфраструктуру для мобильных приложений. Это позволяет разработчикам и издателям сэкономить время и деньги, отказавшись от разработки своего серверного «велосипеда», и сфокусироваться на разработке самих приложений и полировке UX (user experience).

Поддерживаемые функции и модули:
Users — аутентификация пользователей (кросс-платформенно, на основе OAuth). Single Sign-On. Группы и аватары.
Chat — чат, общение пользователей в группах и 1:1. Текстовый чат, IM через push notifications, общение на карте (location chat) и видеочат.
Messages — отсылка push notifications и in-app сообщений мобильным пользователям.
Content — хранение и управление контентом. Стриминг видео. Обновление контента без необходимости обновлять приложение.
Ratings — любые таблицы результатов и рейтинги, для игр, бизнес и социальных приложений.
Custom Objects — создание собственных структур данных и управление ими через API.

История QuickBlox

Мы начинали как небольшая компания, которая занималась вебом — сайтами, CMS, databasing solutions под заказ. В 2009 выходит iOS SDK alpha и мы решаем попробовать себя в разработке софта. Разработка под айфон пошла очень успешно, скоро это становится нашей основной деятельностью, со всех сторон сыпется куча заказов. В то время как другие ощущают кризис, мы растем, и ощущение такое, что нащупали золотую жилу.

В 2010 мы продолжаем успешно заниматься iOS разработкой, и в это время почему-то довольно много заказов поступает на игрушки. Практически любая игра требует таблички результатов, желательно онлайновой, в которой можно сравнить свои набранные очки с игроками со всего мира. Это добавляет социальности и соревновательности, играть становится гораздо интереснее. Но это требует серверной части — базы данных, API, клиент-серверной библиотечки на стороне приложения, а также админки. Каждый раз приходилось поднимать эту систему заново и запариваться с хостингом, сервером и дальнейшей его поддержкой для каждого приложения и заказчика. Делать мобильные приложения было интересно, ново и прикольно, а серверная сторона дела была скучна, мы подумали что наверное у многих разработчиков такая же проблема, поэтому решили продуктизировать решение. Так появился проект iGetScores, который был выложен на Google Code: http://code.google.com/p/igetscores/.

Там был SDK, собственно библиотечка и семплы, которые можно было скачать и легко вставить себе online leaderboard в своё приложение. Мы даже выложили навороченный OpenGL семпл, там очень удобный плавный барабан-скроллер с подгрузкой соседних экранов результатов, флагами стран, красивой подсветкой своего результата, отображением времени «человеческим» языком, переключением кастомных полей. Такую реализацию мы сделали в игрушке iCombat и это в принципе есть и остается максимально продуманным и удобным решением для online leaderboard.



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

Стали поступать вопросы, разработчики реально стали использовать его, из Лондона написал некий Ken Wolf, поблагодарил за классный проект и предложил сам сделать Android библиотечку. В общем, проект пользовался небольшой популярностью, но стали все чаще поступать заявки типа — а вот, ваш продукт конечно хорош, но надо сервак свой поднимать, а нет ли где готового сервака, куда можно подключиться? И мы поняли, что разработчикам и паблишерам нужен сервис, который освободит их от необходимости иметь дело с сервером и хостингом вообще.
Мы запустили iGetScores.com, ну и одновременно начали видеть другие потребности, кроме high scores. Да и весь рынок iOS приложений, по крайней мере среди наших заказчиков, стал смещаться в сторону более серьезных приложений. Мы поняли, что нужны системы управления контентом, нужен удобный сервис для Push Notifications, нужен сервис для управления аккаунтами пользователей. Потом появилась потребность в Чат сервере. И мы решили, что нужно сделать платформу с основным джентльменским набором серверных модулей, которая будет покрывать 95% случаев, и позволит мобильным разработчикам забыть про головную боль написания и поддержки своего серверного бэкенда. Тогда еще не было Parse, StackMob, Kinvey и прочих BaaS платформ, и самого термина BaaS вообще не существовало, поэтому мы решили делать продукт параллельно с основным бизнесом мобильной разработки, зная что по крайней мере такая платформа пригодится нам самим.

Платформу мы назвали Mob1serv (читается «мобисёрв») и запустили на сайте Mob1serv.com. В начале 2011 мы попали, из сотен стартапов со всей Европы и мира, в список финалистов SeedCamp London (я тогда уже как раз жил в Лондоне), засветились на TechCrunch, но, к счастью, не выиграли финансирование. «К счастью», потому что сейчас уже наша компания стоит гораздо больше, чем тот valuation, который предлагается стартапам SeedCamp за 10% в доле компании. В то же время, мы получили первый интерес со стороны инвесторов, я отрепетировал наш «elevator pitch». Людей, которые вообще поняли концепцию было очень немного, но они были. Заинтересовался один из бывших топ-менеджеров eBay из Парижа, инвестор из Лондона, заработавший капитал на продаже своего софтверного продукта для биржевых трейдеров, и еще совершенно отдельно от SeedCamp на нас вышел один американец, Nate Macleitch, проживающий в Лондоне, который стал seed инвестором и моим партнером по компании. Нейт до этого с партерами ворочал бизнесом в сфере мобильного контента, смс-шлюзов, рингтонов и прочего олдскула, и ему хотелось выйти из поднадоевшей корпоративной среды и заняться чем-то более инновационным и интересным. Мне он понравился тем, что, в отличие от прочих заинтересованных инвесторов, он готов был активно участвовать в работе и развитии компании в режиме full-time.

Вскоре мы сделали еще один ребрендинг, я опросил знакомых и клиентов, мы набреинстормили сотни идей и в итоге я сгенерил название QuickBlox, на котором мы и решили остановиться. Идея в том, что имеются готовые серверные блоки-кирпичики, которые вместе складывают необходимый серверный backend для любого проекта. Мы продолжали развиваться в stealth режиме, используя и обкатывая систему на проектах своих заказчиков, запустили сайт в конце 2011, но активно его не продвигали, усилили серверную команду, довели все модули, API и админку до ума, закончили платформу, выпустили SDK и примеры кода (code samples) для iOS, Android, Windows Phone, Blackberry и Web. Здесь можно упомянуть, что в начале мы писали систему на PHP, но конечно на данном этапе мы уже от него отказались, здесь уже была написана вторая версия на Ruby on Rails, захостились на AWS, применили load balancer, скрипты деплоя, авто-скейлинг и прочие вкусности амазона, в общем сделали уже все по-взрослому. Больше года работали в режиме двухнедельных релизов, т.е. каждые две недели у нас была новая бизнес версия, с новыми фишками или улучшениями продукта.

2012. К сожалению, в погоне за функционалом мы частично упускали из виду удобство и понятность для пользователей. Нам потребовалось проспонсировать и провести несколько хакатонов в Лондоне и на просторах xUSSR, пообщаться с кучей разработчиков, чтобы понять, на чем нужно сфокусироваться. Нужно было делать более простые и понятные примеры кода, лучше структурировать SDK, больше комментов, более понятным сделать сайт, объяснить все моменты, на которых может споткнуться начинающий разработчик и т.п. Большую часть 2012 мы провели над полировкой системы, разработкой более простых семплов, написанием простой документации, и в 2013 будем продолжать тратить на это основную часть усилий.

2013. Поле битвы: cloud BaaS


Сейчас термины SaaS, BaaS и mBaaS известны уж почти всем. У нас появилось множество конкурентов, такие как Parse, StackMob, CloudMine. Они удачно расположены в Кремниевой Долине, имеют многомиллионные инвестиции, хорошие связи, им легко достается пресса, они занимаются исключительно продуктом, в то время как мы продолжаем параллельно предоставлять услуги разработки софта на заказ.

В то же время, есть ряд причин, по которым мы наоборот, теперь делаем основную ставку на QuickBlox и будем продолжать поддерживать и развивать его как продукт и платформу для разработчиков, агентств, интеграторов, паблишеров и enterprise:

1. Платформа уже окупается.
У нас достаточно клиентов в enterprise секторе, которые с удовольствием используют dedicated установку системы и платят за это хорошие деньги. Это позволяет нам финансировать дальнейшую разработку и предоставлять основной сервис для разработчиков за символические деньги или вообще бесплатно.

2. Рынок растет.
Данные исследований Forrester Research, Cisco и т.п. предсказывают, что вычисления всё больше будут смещаться в облако, а сам рынок облачных вычислений и сервисов вырастет до $240 млрд. к 2020.



3. Рынок созрел.
Еще год назад бизнесам трудно было понять, о чем и для чего наш продукт, пока они не сталкивались с какой-то проблемой в разработке, которую не могли быстро решить своими силами. Сейчас мы видим гораздо больше понимания. Люди на выставках уже подходят и говорят — да, это нам нужно. Бывает даже подходят — я уже использую QuickBlox, мне он кажется легче и лучше, чем Parse. Это приятно.

4. На рынке много места и ниш.
Ни один крупный игрок не сможет сделать идеальный BaaS, всегда кто-то будет в каком-то нишевом сервисе лучше, или более ориентирован на определенный тип клиентов. Компании часто выкупают — постоянно происходят acquisitions, например если взять рынок платформ для online leaderboards, то на нем были сильные игроки OpenFeint и Scoreloop. Обе эти компании куплены, и как всегда в таких случаях дальнейшее развитие может быть сильно заторможено, многие сервисы просто закрывают.

5. У нас сильные позиции:

1) по проработанности API

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

Чтоб было понятно о чем идет речь, например когда мы говорим о Leaderboards / High scores, то что было когда-то iGetScores, а теперь называется у нас модулем Ratings, API позволяет подсвечивать прыдущий результат игрока, заводить любое количество кастомных параметров, по которым тоже отслеживать результаты и фильтровать, определять страну игрока по IP или по geo-location, выводить N соседних результатов сверху и снизу, регулировать количество результатов в топе и подгрузку для скроллера. SDK содержит библиотечку с флагами стран, поддерживает OpenGL режим, фотки-аватары и прочее.
То есть 99% покрытие всех необходимых use cases по каждому конкретному модулю, будь то Ratings, Users, Location, Messages, Content, мы начали именно с этого, в то время как StackMob и Parse начали с того, что предоставили разработчикам серверный конструктор, который позволяет завести любой класс объектов и напихать туда данных. Это конечно универсальнее, но сложнее и тяжеловеснее, и требует времени на создание архитектуры данных и написание оберток на стороне клиента, что является не самым быстрым решением в случае, когда необходима конкретная типовая функциональность.
Мы потом добавили у себя модуль Custom Objects, который позволяет создавать свои структуры и классы объектов, и можем уже говорить о практически 100% покрытии, но при этом мы понимаем преимущества специализации и по-прежнему будем поддерживать модули, максимально заточенные под «боевые» задачи.

2) по покрытию платформ SDK-библиотеками и примерами (code samples)

Мы не трубим об этом на каждом углу, но как пример, QuickBlox это единственная платформа, которая покрывает Push Notifications для всех основных платформ, включая iOS, Android, Windows Phone и BlackBerry. Даже Urban Airship, которые занимаются в основном только push notifications, не покрывают windows phone.

В разделе Developers quickblox.com/developers можно найти SDK и простые проекты-примеры по всем модулям для всех платформ, будь то iOS, Android, BlackBerry, Windows Phone или Web. Это важно, это позволяет разработчикам использовать одну и ту же платформу для всей своей базы пользователей на смартфонах, таблетках, и даже стационарно через web или desktop приложения.

3) конкретно по модулю Chat

Ощутимый процент пользователей начинают использовать QuickBlox, потому что у нас самое лучшее предложение по чату. У нас есть API для простого 1:1 чата, группового чата с созданием комнат, чата с отправкой файлов (причем двух типов — стандартный peer 2 peer и с серверным хранением через наш Content API). Есть Location Chat — там где пользователи могут общаться поверх карты, видя расстояние до других пользователей. Есть Augmented Reality chat — см. проект ChattAR. Есть веб-чат для сайтов и Facebook приложений. Есть даже плагин для Wordpress, который позволяет, например, объединить в чате читателей вашего блога и ваших мобильных пользователей. Уже работает у нескольких enterprise клиентов и скоро будет анонсирован на сайте видео чат.

  image

Например, стартап на тему социального видео Runfaces использует нашу технологию для текстового и видео чата для мобильных юзеров, хотя они пытались работать с TokBox, платформой, которая фокусируется исключительно на чате. Наше видео-чат решение для iOS пока что самое лучшее на рынке. Наш чат и видео-звонки используются в приложениях Vyke, хотя они профессионалы IP телефонии. Также QuickBlox используется для чата, аттачей, push notifications и location сервиса в Gaydar и многих других online dating продуктах, хотя часто компании, которые держат сервера и приложения знакомств, имеют свои профессиональные команды серверных разработчиков. Им гораздо выгоднее использовать готовую обновляемую и обслуживаемую платформу, которая к тому же не грузит их основные сервера.

Дальнейшие планы

Как недавно написала в своём обзоре и прогнозе по развитию BaaS сервисов Josette Rigsby, трудно будет конкурировать с крупными игроками, не привлекая финансирования, но в то же время всегда есть возможность уйти в enterprise.

Я абсолютно согласен с Josette, но мы естественно будем продолжать конкурировать, делая лучше те вещи, которые у нас получается делать лучше. Наши сильные стороны и преимущества я описал выше. Благодаря нашему бизнесу разработки приложений, мы постоянно имеем обратную связь от бизнес-пользователей, а благодаря QuickBlox и нашим инициативам с хакатонами и митапами (например, см. наш mobile backend meetup в Лондоне) мы постоянно получаем обратную связь от разработчиков, что позволяет нам регулярно улучшать продукт.

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

По поводу финансирования — мы обязательно его привлечем, скорей всего это произойдет уже в 2013, почему мы этого не сделали ранее — во-первых у нас было и остается достаточно средств на R&D, что же касается глобального разворачивания продаж, маркетинга и developer relations, конечно дополнительное финансирование просто необходимо, тут проблема только в том, что нам сейчас некогда искать инвесторов и нам вряд ли дадут хороший valuation. Интерес со стороны VC проявляется регулярно, но это в основном прощупывание почвы, им, как и всем, пока еще сложно понять и оценить этот рынок.

Если оценивать по базе пользователей, то сейчас у нас более 1500 разработчиков и менее 30 enterprise клиентов, хотя конечных пользователей гораздо больше, т.к. только у одного из наших enterprise клиентов QuickBlox обслуживает чат, push notifications и контент для базы в 2 миллиона пользователей. Поэтому можно говорить о десятках миллионов конечных пользователей, если оценивать по user base. По обороту — он наверняка даже выше чем у конкурентов, за счет успешного consultancy бизнеса. В любом случае, мы сейчас не хотим вступать в обсуждения о valuation, пока мы не реализовали несколько cерьезных проектов, которые сейчас готовятся, и не провели хоть сколько-нибудь серьезный маркетинг и рекламу платформы (тоже в процессе).

По поводу enterprise — QuickBlox уже используется в известных проектах и приложениях таких брендов, как Liverpool Football Club, Unilever, Avon, Saudi Telecom, Gaydar, DStv. Мы сотрудничаем с RIM и Telefonica. Сейчас ведутся переговоры — разработка новых проектов с известнейшими брендами, поэтому на уровне enterprise клиентов мы выступаем довольно успешно, и мы будем продолжать развивать это направление параллельно с основной работой.

Обратная связь

QuickBlox делали люди из Харькова, Ижевска, Томска, Питера, Москвы и Киева.

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

История QuickBlox только начинается и мы будем рады, если вы поделитесь с нами своими мыслями о том, какой бы вам хотелось видеть платформу, что можно улучшить, какой функционал добавить (или, мало ли, убрать). Все наши семплы и открытые проекты типа ChattAR выложены в GitHub и вы можете создавать свои форки и экспериментировать с ними.

Также ежели кто хочет присоединиться к нашей команде или обсудить деловое сотрудничество, вам сюда, или ждем ваших комментариев к этому посту.
Tags:
Hubs:
+6
Comments22

Articles