So here's what I have for Firebase pros and cons so far:
- Autoscaling built-in
- Can start for free (only need to start paying once we hit 50 connections)
- Robust APIs for Javascript (including several frameworks like Angular), iOS, and Android
- Built-in support for authentication services like Facebook, Google, and Twitter
- Declarative Security Rules model allows us to enforce read/write privileges and data validation throughout the tree
- Need to build indexes manually
- May need to build "event log" manually as well (in separate sub-tree?)
- Implementation of REST API could be difficult on embedded platforms
- Data validation rules do not support complex objects directly (you'd need to validate individual child nodes separately)
- Vendor lock-in - if we need to get all our data into a different platform, how difficult? (just getting an export may not be good enough)
- Cost-comparison to self-hosting in AWS
AWS is great, but it will really need someone who knows it very well to just manage and configure things for you. It's extremely easy to get lost in the AWS console and a simple mistake can be catastrophic in the future. To me, it is increasingly sounding like for many apps, the initial release needs to use MBaaS service like Firebase, Backendless, Kinvey etc. Once your app starts to grow, you better be prepared with a revenue generating model since your backend (and most likely the entire app) will need to be re-written again.