- PVSM.RU - https://www.pvsm.ru -
Будучи начинающим 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 на
Я начал поиск с www.programmableweb.com/apis/directory/1?apicat=Backend [5] там перечислено почти 40 платформ, просмотрев их, я оставил для обзора те, что легко можно использовать с javascript:
1. Parse
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
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 | |
Особенности | ||
Бесплатные возможности: | в месяц: 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
(раньше звались 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
Это была отдельная компания, которую в феврале 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] |
Интеграция с Соцсетями | ||
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
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
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
Это была отдельная компания, которую в январе 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
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
Нажмите здесь для печати.