Будучи начинающим javascript разработчиком, я заинтересовался темой межплатформенной разработки мобильных приложений. В этой области, в настоящее время, балом правят Cordova (phonegap) www.phonegap.com, Appcelerator Titanium www.appcelerator.com, Mosync www.mosync.com.
Рано или поздно, после выпуска первых мини-приложений, основанных на этих системах, разработчику захочется создать что-нибудь Большое и Светлое, и хотелось бы, чтоб в этом новом приложении/сервисе были пользователи (c аватарами и проч.), push-notifications, user-generated-content и т.д… Но при этом, не хотелось бы тратить время и деньги на написание своей серверной инфраструктуры, а хотелось бы воспользоваться чем-нибудь недорогим, вплоть до бесплатного, и простым в освоении (и ещё чтоб «в облаке»!).
Как раз подобного рода тяжести и взяли на себя многочисленные Backend-as-a-Service (не путать с другими aaS). Я хочу кратко пробежаться по некоторым игрокам на этом рынке. Подчеркну, что меня в первую очередь интересовали те платформы, которые можно было бы легко и безопасно использовать с мобильным javascript (Phonegap/Titanium). Если платформа просто предоставляет REST API, этого мало, т.к. вопрос безопасности требует наличия некоторого специального ограничительного функционала: AccessControlList/permissions/masterKeys/etc. И вообще, желательно отдельный javascript SDK.
(Так как это «поверхностный обзор», я не буду подробно писать кому и зачем нужен BaaS и почему вместо всего этого не использовать старый-добрый PHP/MySQL на
Я начал поиск с www.programmableweb.com/apis/directory/1?apicat=Backend там перечислено почти 40 платформ, просмотрев их, я оставил для обзора те, что легко можно использовать с javascript:
1. Parse
URL | parse.com | |
Blog | blog.parse.com | |
Команда | 17 человек, офис в Сан-Франциско (Калифорния, США) | link |
Финансирование | Инвесторы: Ignition, Y-combinator, StartFund, Google Ventures, SV Angel, Menlo Ventures, DST и др… Общая сумма инвестиций: $7M | link |
Дата запуска | 2011.07 | |
SDK для платформ | iOS, Android, REST, javascript. + много других неофициальных (.net, Unity, ActionScript, etc...) | link |
Возможности | Users, Social, Location, Files, Data Push | |
Web-панель управления | возможность создавать и заполнять таблицы (они называются Classes), импортировать их из CSV файлов, посылать push-сообщения, экспортировать все накопленные данные | |
Разделение Development/ Production версий | нет | |
Access Control | есть ACL. Есть Роли, но на бесплатном тарифе можно создать только одну роль | link |
Server side code | нет | |
Совместная работа нескольких разработчиков | есть на тарифе PRO и Enterprise | |
Authentication Model | по ключам, для каждого приложения отдельные Client Key, Javascript Key, REST API Key, Master Key | |
Интеграция с Соцсетями | Facebook, Twitter | |
Push Notifications | iOS, Android | |
Особенности | Javascript SDK на основе backbone.js | |
Бесплатные возможности: | в месяц: 1,000,000 API-запросов; 1,000,000 push сообщений; 1Gb файлового хранилища. За превышение можно доплатить | |
Цены: | после бесплатного сразу идёт PRO за $199 в месяц, затем Enterprise с неизвестной ценой | link |
Широко известная платформа (хвалятся, что больше 16000 приложений используют parse), большая команда с хорошим финансовым заделом.
Отдельный Javascript SDK на основе backbone.js
Админка выглядит по-спартански, но удобная. В качестве полей создаваемых таблиц (т.е. «Классов») можно использовать: String, Number, Boolean, Date, File (можно загрузить файл там же, в админке), Pointer (указывает на другой Class), Geopoint, Array, Object (JSON объект до 128кб), Relation (указывает на Row из другого Class). Каждому элементу данных (вернее всей «строке», Row) можно назначить ACL в виде списка id пользователей, которым доступна запись/чтение.
Также всей таблице можно установить ограничение на публичные Get/Find/Update/Create/Delete/AddFields (и сделать их доступными определённым пользователям или Ролям)
2. Stackmob
URL | stackmob.com | |
Blog | blog.stackmob.com | |
Команда | 24 человека, офис в Сан-Франциско (Калифорния, США) | link |
Финансирование | Инвесторы: Charles River Ventures, Founder Collective, Baseline Ventures, Harrison Metal Capital, Trinity Ventures, Общая сумма инвестиций: $7,5M | link |
Дата запуска | public beta 2011.12 | |
SDK для платформ | iOS, Android, Java, Javascript, Ruby | link |
Возможности | Datastore, Object Relationships, Geospatial, User Authentication, Push | |
Web-панель управления | можно создавать и заполнять таблицы (они называются Schemas), Роли. есть Test Console с REST API | |
Разделение Development/ Production версий | да | |
Access Control | гибкие настройки. Есть Роли | link |
Server side code | есть — Java/Scala/Clojure | |
Совместная работа нескольких разработчиков | нет | |
Authentication Model | по ключам, для каждого приложения отдельные Public/Private Keys. OAuth 2.0 авторизация | |
Интеграция с Соцсетями | Facebook, Twitter | |
Push Notifications | iOS, Android | |
Особенности | ||
Бесплатные возможности: | в месяц: 60,000 API-запросов; 60,000 push сообщений. За превышение можно доплатить | |
Цены: | следующий после бесплатного тариф: 8.99$ | link |
Также как для Parse, большая команда и финансирование внушают уважение и благоговейный трепет.
Также напоминает Parse тем, что использует backbone.js. Из отличительных особенностей — можно писать серверный код на Java/Scala/Clojure
В качестве полей создаваемых таблиц (т.е. «Схем» — Schemas) можно использовать: String, Integer, Float, Boolean, Array, Binary (через загрузку на Amazon S3), Geopoint. Можно задавать отношения (Relationships) между схемами one-to-one/one-to-many.
Схемам можно установить ограничение на Create/Read/Update/Delete и сделать их доступными определённым Ролям.
3. Quickblox
(раньше звались Mob1serv)
URL | quickblox.com | |
Blog | quickblox.com/blog | |
Команда | 30(?) человек. London/ San Francisco/ Харьков | |
Финансирование | ? | link |
Дата запуска | public beta 2011.10 | |
SDK для платформ | iOS, Android, WP7, Web/Facebook | |
Возможности | Modules: Content, Custom, Location, Messages, Ratings, Users, Chat | |
Web-панель управления | для каждого модуля свой функционал по добавлению/ редактированию данных. В custom можно создавать свои class с полями Integer/ Float/ Boolean/ String | |
Разделение Development/ Production версий | нет | |
Access Control | ? (не нашёл) | |
Server side code | нет | |
Совместная работа нескольких разработчиков | да, на платных тарифах | |
Authentication Model | modification of OAuth | link |
Интеграция с Соцсетями | Facebook, Twitter | |
Push Notifications | iOS, Android, Microsoft, BlackBerry | |
Особенности | в разработчиках — «наши люди», присутствующие на хабре | |
Бесплатные возможности: | в месяц: 1,000,000 API Calls. 1,000,000 Push Notifications. 5 GB Traffic Storage. За превышение можно доплатить | |
Цены: | следующий после бесплатного тариф: 19$ | link |
Описание данной платформы лучше читать авторские: habrahabr.ru/post/143653/
Web/Facebook QuickBlox framework is now under development — причём мне кажется это не очень активный/приоритетный development, так что quickblox для javascript пока сложноват в освоении.
4. Cocoafish
Это была отдельная компания, которую в феврале 2012 приобрела Appcelerator и теперь сервис называется Appcelerator Cloud Services (ACS)
URL | www.appcelerator.com/cloud | |
Blog | developer.appcelerator.com/blog | |
Команда | изначально в cocoafish было три человека | |
Финансирование | хорошее | link |
Дата запуска | 2012.04 | |
SDK для платформ | для тех, что поддерживаются Appcelerator Titanium, плюс отдельный Javascript SDK | |
Возможности | много мини-модулей: Push Notifications, User management, Photo manipulation and storage, Places (rich location storage), Social integration, File Storage (Beta), Check-ins, Status updates, Chats, Friend connections (Beta), Ratings and Reviews, Discussion forums, Event planning (Beta), Messaging (Beta), Key-Value data storage | |
Web-панель управления | в каждом «модуле» можно создавать/ редактировать записи. Не очень удобно и медленновато. Импорта/Экспорта нет | |
Разделение Development/ Production версий | да | |
Access Control | есть ACL | |
Server side code | нет | |
Совместная работа нескольких разработчиков | нет | |
Authentication Model | по ключам, для каждого приложения отдельные APP Key. OAuth авторизация (2-legged, 3-legged) | link |
Интеграция с Соцсетями | ||
Push Notifications | iOS, Android | |
Особенности | есть Analytics events | |
Бесплатные возможности: | 250,000 Tier 1 API calls. 250,000 Tier 2 API calls. 5 GB storage | |
Цены: | кроме бесплатного, есть тарифы ACCELERATE STANDARD, ACCELERATE ENHANCED, ACCELERATE PREMIUM (цены раскрываются по email запросу). для бесплатного тарифа можно оплатить превышение квот (1,000,000 API calls Tier 1 Services за $10. 500,000 API calls Tier 2 Services за $10. Storage Limit 20 GB за $5) | link |
Подразумевается, что максимальное удобство будет у разработчиков, использующих Appcelerator Titanium, но доступен и отдельный Javascript SDK.
Напоминает Quickblox — много «мини-модулей», в том числе и возможность создавать свои Custom Objects (с полями: number, string, boolean, dictionary, array, date). Особое внимание именно к соц. взаимодействиям пользователей — прям хоть делай свой мобильный facebook c блэкджеком и кем-то там.
5. Kinvey
URL | www.kinvey.com | |
Blog | www.kinvey.com/blog | |
Команда | 14 человек, офис в Кэмбридж (Массачусетс, США) | link |
Финансирование | Инвесторы: TechStars, Avalon Ventures, Atlas Venture. Общая сумма инвестиций: $7M | link |
Дата запуска | 2012.04 — public beta. 2012.07 — public release | |
SDK для платформ | iOS, Android, Javascript (в т.ч. отдельно для phonegap и titanium) | link |
Возможности | Appdata — An auto-scaling key-value data store that supports nested data structures, typed values and advanced queries. Resources — A massive CDN backed cloud storage solution for images, audio, video and any other file you can picture. Users — Keep track of information about users and relationships between users and their data | |
Web-панель управления | можно создавать и заполнять таблицы (они называются Collections). есть Console с REST API есть импорт CSV, экспорт JSON | |
Разделение Development/ Production версий | нет | |
Access Control | есть ACL, задаётся в коде, не через Web-панель | |
Server side code | Есть настройка валидации вводимых данных. В следующих релизах полный функционал. | |
Совместная работа нескольких разработчиков | да | |
Authentication Model | App Key, App Secret, Master Secret | |
Интеграция с Соцсетями | authorization with facebook | |
Push Notifications | iOS, Android | |
Особенности | Caching and Offline Support out of the box, 3rd-party Data Integration | |
Бесплатные возможности: | up to 200 active users, up to 2 GB storage | |
Цены: | растёт с повышением числа активных пользователей и объёма хранимых файлов | link |
Продвигают концепцию BaaS вообще и себя в частности. Интересный и активный блог — есть познавательная схема, показывающая кто, что и где в этой области рынка www.kinvey.com/images/kinvey_backend-as-a-service_mobileecosystem_2100px.png
6. Cloudmine
URL | cloudmine.me | |
Blog | blog.cloudmine.me | |
Команда | 10 человек, офис в Southern Liberties (Филадельфия, США) | link |
Финансирование | Инвесторы: DreamIt Ventures, Ben Franklin Technology Partners of Southeastern Pennsylvania. Общая сумма инвестиций: $120k | link |
Дата запуска | 2011.08 | |
SDK для платформ | iOS, Android, Javascript | |
Возможности | User Accounts, App-level Security, Geo Queries, Push (coming soon), Server-side Code, No Data Models, File Storage, Compressed Data Transfer, Object Data Storage | |
Web-панель управления | Не очень удобная. Можно создавать пользователей, создавать/ редактировать JSON объекты | |
Разделение Development/ Production версий | нет | |
Access Control | есть ACL, также есть гибкая настройка ограничений по API key | link |
Server side code | да — Java, javascript | |
Совместная работа нескольких разработчиков | нет | |
Authentication Model | Application ID, API Keys (с настраиваемыми допусками) | link |
Интеграция с Соцсетями | нет | |
Push Notifications | нет | |
Особенности | server side javascript, GZIP'd JSON or MessagePack data compression | |
Бесплатные возможности: | 500 free active users monthly | |
Цены: | $0.05 / active user | link |
Обращает на себя внимание тем, что есть возможность писать свой серверный javascript код
7. Usergrid
Это была отдельная компания, которую в январе 2012 приобрела Apigee. теперь называется Apigee App Services
URL | apigee.com/usergrid | |
Blog | blog.apigee.com | |
Команда | ||
Финансирование | хорошее | link |
Дата запуска | ||
SDK для платформ | iOS, Android, HTML5 | link |
Возможности | Data storage, User management, Roles, Social networking, Geolocation, Facebook sign-in, and much more (Activities, Assets, Devices, Events, Folders, Groups, Roles, Users) | |
Web-панель управления | Немного неудобно (вернее, непривычно) — весь функционал через REST API запросы прямо в web-панели | |
Разделение Development/ Production версий | нет | |
Access Control | доступы можно регулировать с помощью Ролей | link |
Server side code | нет | |
Совместная работа нескольких разработчиков | да | |
Authentication Model | Client ID, Client Secret, OAuth 2.0 | link |
Интеграция с Соцсетями | authorization with facebook | |
Push Notifications | нет | |
Особенности | большие бесплатные квоты | |
Бесплатные возможности: | 35,000,000 API requests/month 10 Gigabytes storage — пока сервис в beta | |
Цены: | какие цены будут после завершения beta — неизвестно | link |
Apigee — серьёзная контора, помогающая серьёзным клиентам apigee.com/about/customers с разработкой/ поддержкой/ мониторингом своих собственных API сервисов. Описывает себя как “Google Analytics для API”. Приобрела Usergrid в начале этого года, но сервис ещё со статусом beta.
Бесплатные квоты выглядят очень заманчиво, но какими будут окончательные цены?
8. sencha.io
URL | developer.sencha.io | |
Blog | www.sencha.com/blog | |
Команда | ||
Финансирование | хорошее | link |
Дата запуска | beta — 2011.10 | |
SDK для платформ | javascript | |
Возможности | User Services, Data Services, Channel Services | |
Web-панель управления | функционал очень ограничен | |
Разделение Development/ Production версий | да | |
Access Control | нет (?) | |
Server side code | нет | |
Совместная работа нескольких разработчиков | да | |
Authentication Model | app id, secret | |
Интеграция с Соцсетями | authorization with facebook | |
Push Notifications | нет | |
Особенности | специально нацелен на работу с библиотекой Sencha Touch | |
Бесплатные возможности: | не нашёл описания | |
Цены: | пока не известны |
Сервис от создателей ExtJS.
Из всех рассмотренных, мне он показался самым, ну если не сказать что сырым, то «непродвигаемым»: цены и лимиты не опубликованы, в админке почти нечего делать, Push notifications нет… Но голословно предполагаю, что разработчикам, хорошо знакомым с Sencha Touch, сервис понравился бы.
К сожалению, у меня пока нет серьёзного опыта работы с этими платформами, наверняка есть много грабель и особенностей, которые стоило бы добавить в обзор (будет, со временем).
Подытоживая, можно сказать, что BaaS сегмент довольно молод, основное развитие в нём началось только в этом году. Прослеживается, что более-менее одновременно, в разных платформах запускаются одни и те же новые «фичи» (ACL, oAuth). Не смотря на молодость, уже есть интересные, вполне жизнеспособные, предложения.
Я мог допустить ошибки и неточности в описании — сообщайте, исправлю.
Автор: yurash