Our client has an application that he wants to connect to cloud database/service. As the result, after several discussions we decided to make small research and comparison between most popular BaaS systems. the first filter was that this service should be backed by big company (stability, support, growth, useful knowledge for people, etc.). The information below is for mid March 2015.
BTW, good list of multiple various BaaSes can be found here: unhosted.org.
So current comparison was limited to Parse.com, Firebase (acquired by Google), Amazon Mobile Services (Cognito, DynamoDB, Kinesis), and Azure Mobile services.
The rest are either small or expensive for our purposes (like kinvey.com has only 24k year package.)
All services have mobile SDKs and Rest/JS client support.
|Parse.com (Facebook)||Azure Mobile Services (Microsoft)||Firebase (Google)||Cognito (Amazon)|
|Link to site||Parse||Azure Mobile Services||Firebase||Cognito|
It’s most popular solution. It has good documentation and easiest for any level of developer.
|Azure Mobile Services Documentation
Documentation is good but not always straightforward.
Looks like good documentation.
|Amazon Cognito Developer
As typical Amazon service – documentation is not easy to read 🙂 Especially for the service that was started in 2014 only. We didn’t see big community Q&A on the service. Samples are present in documentation. Kinesis seems to be started in January only.
|Interesting functions||Offline data sync (local data stores).
Facebook, Google, Twitter, etc, authentication push notifications. Integrations with SendGrid, Mandrill, and many others.
Push notifications supported.
|Offline data sync were released recently. (Although it was more in beta stage and almost no documentation, we couldn’t make it work well in March after a day of trying, for our data structure).
Facebook, Google, OpenID, Twitter, and others authentication is supported. Push notifications supported.
|No offline data sync. Supported auth through Facebook, Twitter, Google or customer authentication.||Control over online/offline synchronization. Amazon Cognito FAQ, Facebook, Google, OpenID auth is supported.
Amazon SNS for push services
|Limitations||PFObjects should not exceed 128kb in size. To store more, we recommend you use PFFile, Parse SDK review, All the limits of Parse.||Limitations depend on data storage selected behind the services. Default storage is Azure SQL database. Azure SQL.
Azure Table Storage can be used as well. Storage scalability targets.
|Not sure yet, didn’t find it from first review.||Each user information store can have a maximum size of 20Mb. Each data set within the user information store can contain up to 1Mb of data. Within a data set you can have up to 1024 keys. It might be that Kinesis will be needed or other storage to store GPS data and possible customer data. Kinesis.|
|Pricing||Parse pricing||Azure pricing||Firebase pricing||Cognito pricing|
|Custom logic, email authentication||Limited custom logic is supported.Email confirmation is built in logic.||Extensions for custom logic are supported.Sending email can be implemented in custom logic.||No custom logic.
Email confirmation can be implemented through password reset functionality.
|Cognito has no possibility to build custom logic unless you create backend servers.For example email address confirmation should be created in own backend.|
|Interesting links||Chris Risner: Common scenarios with Windows Azure Mobile Services.||SlideShare: AmazonWebServices – Building mobile apps on AWS Cognito, Amazon Mobile Analytics, Amazon SNS, Mobile Push-and-more.|
|Comments||Most popular and easy to use. Auto scales, no need to do server side administration.||Powerful, requires separate storage management, backup, setting up scaling solution and other administration operations.||It quite simple and seems to be more targeted to Web/Rest than mobile. As they supported many client side libraries like Angular, etc., and focus on that in documentation.||Amazon is powerful, but sometimes over complex.
Also Cognito is quite new, started last year.