- PVSM.RU - https://www.pvsm.ru -

Поверхностный обзор javascript-enabled BaaS платформ

Будучи начинающим javascript разработчиком, я заинтересовался темой межплатформенной разработки мобильных приложений. В этой области, в настоящее время, балом правят Cordova (phonegap) www.phonegap.com [1], Appcelerator Titanium www.appcelerator.com [2], Mosync www.mosync.com [3].

Рано или поздно, после выпуска первых мини-приложений, основанных на этих системах, разработчику захочется создать что-нибудь Большое и Светлое, и хотелось бы, чтоб в этом новом приложении/сервисе были пользователи (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 [4] или новый-добрый node.js в облаке)

Я начал поиск с www.programmableweb.com/apis/directory/1?apicat=Backend [5] там перечислено почти 40 платформ, просмотрев их, я оставил для обзора те, что легко можно использовать с javascript:

1. Parse
image

URL parse.com [6]
Blog blog.parse.com [7]
Команда 17 человек, офис в Сан-Франциско (Калифорния, США) link [8]
Финансирование Инвесторы: Ignition, Y-combinator, StartFund, Google Ventures, SV Angel, Menlo Ventures, DST и др… Общая сумма инвестиций: $7M link [9]
Дата запуска 2011.07
SDK для платформ iOS, Android, REST, javascript. + много других неофициальных (.net, Unity, ActionScript, etc...) link [10]
Возможности Users, Social, Location, Files, Data Push
Web-панель управления возможность создавать и заполнять таблицы (они называются Classes), импортировать их из CSV файлов, посылать push-сообщения, экспортировать все накопленные данные
Разделение Development/ Production версий нет
Access Control есть ACL. Есть Роли, но на бесплатном тарифе можно создать только одну роль link [11]
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 [12]

Широко известная платформа (хвалятся, что больше 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
image

URL stackmob.com [13]
Blog blog.stackmob.com [14]
Команда 24 человека, офис в Сан-Франциско (Калифорния, США) link [15]
Финансирование Инвесторы: Charles River Ventures, Founder Collective, Baseline Ventures, Harrison Metal Capital, Trinity Ventures, Общая сумма инвестиций: $7,5M link [16]
Дата запуска public beta 2011.12
SDK для платформ iOS, Android, Java, Javascript, Ruby link [17]
Возможности Datastore, Object Relationships, Geospatial, User Authentication, Push
Web-панель управления можно создавать и заполнять таблицы (они называются Schemas), Роли. есть Test Console с REST API
Разделение Development/ Production версий да
Access Control гибкие настройки. Есть Роли link [18]
Server side code есть — Java/Scala/Clojure
Совместная работа нескольких разработчиков нет
Authentication Model по ключам, для каждого приложения отдельные Public/Private Keys. OAuth 2.0 авторизация
Интеграция с Соцсетями Facebook, Twitter
Push Notifications iOS, Android
Особенности хостинг [4] файлов через Amazon S3
Бесплатные возможности: в месяц: 60,000 API-запросов; 60,000 push сообщений. За превышение можно доплатить
Цены: следующий после бесплатного тариф: 8.99$ link [19]

Также как для 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
image
(раньше звались Mob1serv)

URL quickblox.com [20]
Blog quickblox.com/blog [21]
Команда 30(?) человек. London/ San Francisco/ Харьков
Финансирование ? link [22]
Дата запуска 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 [23]
Интеграция с Соцсетями Facebook, Twitter
Push Notifications iOS, Android, Microsoft, BlackBerry
Особенности в разработчиках — «наши люди», присутствующие на хабре
Бесплатные возможности: в месяц: 1,000,000 API Calls. 1,000,000 Push Notifications. 5 GB Traffic Storage. За превышение можно доплатить
Цены: следующий после бесплатного тариф: 19$ link [24]

Описание данной платформы лучше читать авторские: habrahabr.ru/post/143653/ [25]
Web/Facebook QuickBlox framework is now under development — причём мне кажется это не очень активный/приоритетный development, так что quickblox для javascript пока сложноват в освоении.


4. Cocoafish
image
Это была отдельная компания, которую в феврале 2012 приобрела Appcelerator и теперь сервис называется Appcelerator Cloud Services (ACS)

URL www.appcelerator.com/cloud [26]
Blog developer.appcelerator.com/blog [27]
Команда изначально в cocoafish было три человека
Финансирование хорошее link [28]
Дата запуска 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 [29]
Интеграция с Соцсетями facebook
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 [30]

Подразумевается, что максимальное удобство будет у разработчиков, использующих Appcelerator Titanium, но доступен и отдельный Javascript SDK.
Напоминает Quickblox — много «мини-модулей», в том числе и возможность создавать свои Custom Objects (с полями: number, string, boolean, dictionary, array, date). Особое внимание именно к соц. взаимодействиям пользователей — прям хоть делай свой мобильный facebook c блэкджеком и кем-то там.


5. Kinvey
image

URL www.kinvey.com [31]
Blog www.kinvey.com/blog [32]
Команда 14 человек, офис в Кэмбридж (Массачусетс, США) link [33]
Финансирование Инвесторы: TechStars, Avalon Ventures, Atlas Venture. Общая сумма инвестиций: $7M link [34]
Дата запуска 2012.04 — public beta. 2012.07 — public release
SDK для платформ iOS, Android, Javascript (в т.ч. отдельно для phonegap и titanium) link [35]
Возможности 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 [36]

Продвигают концепцию BaaS вообще и себя в частности. Интересный и активный блог — есть познавательная схема, показывающая кто, что и где в этой области рынка www.kinvey.com/images/kinvey_backend-as-a-service_mobileecosystem_2100px.png [37]


6. Cloudmine
image

URL cloudmine.me [38]
Blog blog.cloudmine.me [39]
Команда 10 человек, офис в Southern Liberties (Филадельфия, США) link [40]
Финансирование Инвесторы: DreamIt Ventures, Ben Franklin Technology Partners of Southeastern Pennsylvania. Общая сумма инвестиций: $120k link [41]
Дата запуска 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 [42]
Server side code да — Java, javascript
Совместная работа нескольких разработчиков нет
Authentication Model Application ID, API Keys (с настраиваемыми допусками) link [43]
Интеграция с Соцсетями нет
Push Notifications нет
Особенности server side javascript, GZIP'd JSON or MessagePack data compression
Бесплатные возможности: 500 free active users monthly
Цены: $0.05 / active user link [44]

Обращает на себя внимание тем, что есть возможность писать свой серверный javascript код


7. Usergrid
image
Это была отдельная компания, которую в январе 2012 приобрела Apigee. теперь называется Apigee App Services

URL apigee.com/usergrid [45]
Blog blog.apigee.com [46]
Команда
Финансирование хорошее link [47]
Дата запуска
SDK для платформ iOS, Android, HTML5 link [48]
Возможности 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 [49]
Server side code нет
Совместная работа нескольких разработчиков да
Authentication Model Client ID, Client Secret, OAuth 2.0 link [50]
Интеграция с Соцсетями authorization with facebook
Push Notifications нет
Особенности большие бесплатные квоты
Бесплатные возможности: 35,000,000 API requests/month 10 Gigabytes storage — пока сервис в beta
Цены: какие цены будут после завершения beta — неизвестно link [51]

Apigee — серьёзная контора, помогающая серьёзным клиентам apigee.com/about/customers [52] с разработкой/ поддержкой/ мониторингом своих собственных API сервисов. Описывает себя как “Google Analytics для API”. Приобрела Usergrid в начале этого года, но сервис ещё со статусом beta.
Бесплатные квоты выглядят очень заманчиво, но какими будут окончательные цены?


8. sencha.io
image

URL developer.sencha.io [53]
Blog www.sencha.com/blog [54]
Команда
Финансирование хорошее link [55]
Дата запуска 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


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/14313

Ссылки в тексте:

[1] www.phonegap.com: http://www.phonegap.com

[2] www.appcelerator.com: http://www.appcelerator.com

[3] www.mosync.com: http://www.mosync.com

[4] VPS: https://www.reg.ru/?rlink=reflink-717

[5] www.programmableweb.com/apis/directory/1?apicat=Backend: http://www.programmableweb.com/apis/directory/1?apicat=Backend

[6] parse.com: https://parse.com

[7] blog.parse.com: http://blog.parse.com

[8] link: https://www.parse.com/about/team

[9] link: http://www.crunchbase.com/company/parse

[10] link: https://www.parse.com/docs/api_libraries

[11] link: https://www.parse.com/docs/data#security

[12] link: https://www.parse.com/plans

[13] stackmob.com: http://stackmob.com

[14] blog.stackmob.com: http://blog.stackmob.com

[15] link: http://www.stackmob.com/company/team/

[16] link: http://www.crunchbase.com/company/stackmob

[17] link: https://www.stackmob.com/devcenter/sdks

[18] link: https://www.stackmob.com/devcenter/docs/Access-Controls:-Schema-Permissions#a-access_controls_-_schema_permissions

[19] link: https://www.stackmob.com/pricing/

[20] quickblox.com: http://quickblox.com

[21] quickblox.com/blog: http://quickblox.com/blog

[22] link: http://www.crunchbase.com/company/mob1serv

[23] link: http://quickblox.com/developers/Authentication_and_Authorization

[24] link: http://quickblox.com/pricing

[25] habrahabr.ru/post/143653/: http://habrahabr.ru/post/143653/

[26] www.appcelerator.com/cloud: http://www.appcelerator.com/cloud

[27] developer.appcelerator.com/blog: http://developer.appcelerator.com/blog

[28] link: http://www.crunchbase.com/company/appcelerator

[29] link: http://cloud.appcelerator.com/docs/authentication

[30] link: http://www.appcelerator.com/plans-pricing

[31] www.kinvey.com: http://www.kinvey.com

[32] www.kinvey.com/blog: http://www.kinvey.com/blog

[33] link: http://www.kinvey.com/company/ourteam

[34] link: http://www.crunchbase.com/company/kinvey

[35] link: https://console.kinvey.com/#downloads

[36] link: https://console.kinvey.com/#pricing

[37] www.kinvey.com/images/kinvey_backend-as-a-service_mobileecosystem_2100px.png: http://www.kinvey.com/images/kinvey_backend-as-a-service_mobileecosystem_2100px.png

[38] cloudmine.me: https://cloudmine.me

[39] blog.cloudmine.me: http://blog.cloudmine.me

[40] link: https://cloudmine.me/about/team

[41] link: http://www.crunchbase.com/company/cloudmine

[42] link: http://docs.kinvey.com/access-control.html

[43] link: http://docs.kinvey.com/rest-overview.html#authentication

[44] link: https://cloudmine.me/pricing

[45] apigee.com/usergrid: https://apigee.com/usergrid

[46] blog.apigee.com: http://blog.apigee.com

[47] link: http://www.crunchbase.com/company/apigee

[48] link: http://apigee.com/docs/usergrid/codesamples

[49] link: http://apigee.com/docs/usergrid/content/roles-and-permissions

[50] link: http://apigee.com/docs/usergrid/content/authentication-and-access-usergrid

[51] link: http://apigee.com/about/pricing

[52] apigee.com/about/customers: http://apigee.com/about/customers

[53] developer.sencha.io: http://developer.sencha.io

[54] www.sencha.com/blog: http://www.sencha.com/blog

[55] link: http://www.crunchbase.com/company/sencha