Будучи начинающим 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 на VPS или новый-добрый node.js в облаке)
Я начал поиск с www.programmableweb.com/apis/directory/1?apicat=Backend там перечислено почти 40 платформ, просмотрев их, я оставил для обзора те, что легко можно использовать с javascript:
1. Parse
Широко известная платформа (хвалятся, что больше 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
Также как для 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)
Описание данной платформы лучше читать авторские: habrahabr.ru/post/143653
Web/Facebook QuickBlox framework is now under development — причём мне кажется это не очень активный/приоритетный development, так что quickblox для javascript пока сложноват в освоении.
4. Cocoafish
Это была отдельная компания, которую в феврале 2012 приобрела Appcelerator и теперь сервис называется Appcelerator Cloud Services (ACS)
Подразумевается, что максимальное удобство будет у разработчиков, использующих Appcelerator Titanium, но доступен и отдельный Javascript SDK.
Напоминает Quickblox — много «мини-модулей», в том числе и возможность создавать свои Custom Objects (с полями: number, string, boolean, dictionary, array, date). Особое внимание именно к соц. взаимодействиям пользователей — прям хоть делай свой мобильный facebook c блэкджеком и кем-то там.
5. Kinvey
Продвигают концепцию BaaS вообще и себя в частности. Интересный и активный блог — есть познавательная схема, показывающая кто, что и где в этой области рынка www.kinvey.com/images/kinvey_backend-as-a-service_mobileecosystem_2100px.png
6. Cloudmine
Обращает на себя внимание тем, что есть возможность писать свой серверный javascript код
7. Usergrid
Это была отдельная компания, которую в январе 2012 приобрела Apigee. теперь называется Apigee App Services
Apigee — серьёзная контора, помогающая серьёзным клиентам apigee.com/about/customers с разработкой/ поддержкой/ мониторингом своих собственных API сервисов. Описывает себя как “Google Analytics для API”. Приобрела Usergrid в начале этого года, но сервис ещё со статусом beta.
Бесплатные квоты выглядят очень заманчиво, но какими будут окончательные цены?
8. sencha.io
Сервис от создателей ExtJS.
Из всех рассмотренных, мне он показался самым, ну если не сказать что сырым, то «непродвигаемым»: цены и лимиты не опубликованы, в админке почти нечего делать, Push notifications нет… Но голословно предполагаю, что разработчикам, хорошо знакомым с Sencha Touch, сервис понравился бы.
К сожалению, у меня пока нет серьёзного опыта работы с этими платформами, наверняка есть много грабель и особенностей, которые стоило бы добавить в обзор (будет, со временем).
Подытоживая, можно сказать, что BaaS сегмент довольно молод, основное развитие в нём началось только в этом году. Прослеживается, что более-менее одновременно, в разных платформах запускаются одни и те же новые «фичи» (ACL, oAuth). Не смотря на молодость, уже есть интересные, вполне жизнеспособные, предложения.
Я мог допустить ошибки и неточности в описании — сообщайте, исправлю.
Рано или поздно, после выпуска первых мини-приложений, основанных на этих системах, разработчику захочется создать что-нибудь Большое и Светлое, и хотелось бы, чтоб в этом новом приложении/сервисе были пользователи (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 на VPS или новый-добрый node.js в облаке)
Я начал поиск с 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 | |
Особенности | хостинг файлов через Amazon S3 | |
Бесплатные возможности: | в месяц: 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). Не смотря на молодость, уже есть интересные, вполне жизнеспособные, предложения.
Я мог допустить ошибки и неточности в описании — сообщайте, исправлю.