Ambas soluciones tienen beneficios.
Usar Firebase es la respuesta fácil. Probablemente tendrá su aplicación en funcionamiento más rápido.
Pero es probable que tenga costos más bajos si ejecuta su propio servidor. Apache Usergrid parece relativamente fácil de configurar, por lo que puede valer la pena seguir esa ruta. Pero observe qué tan bien se escala y cuánto trabajo necesitará hacer para permitir que se escale.
- ¿Podría usar Node.js como back-end de un sitio web?
- ¿Qué es el desarrollo de backend?
- ¿Cuál es la forma más eficaz y accesible de transferir datos desde el back-end al front-end?
- En la programación, ¿implementan el front-end o el back-end primero?
- ¿Se puede escribir un backend sólido para una aplicación web con Dart?
Los cálculos reales que debe hacer son específicos de la aplicación. ¿Cuántos usuarios necesitas soportar? ¿Cuáles son los patrones de uso? Dado eso, ¿cuánto costará Firebase por usuario cada mes?
Finalmente, la parte clave: ¿cuánto dinero espera ganar por usuario / mes? Si esa cantidad es cómodamente más de lo que costará Firebase, entonces puede usar Firebase y finalizar su aplicación más rápidamente.
Cuando ejecuté el cálculo para una aplicación en la que estaba trabajando para un cliente, parecía probable que Firebase costara aproximadamente el doble de lo que se esperaba que la aplicación obtuviera ingresos netos. Si estaba trabajando en una aplicación compatible con publicidad gratuita, podría terminar pagando 10-100x en costos de alojamiento de lo que podría ganar a través de anuncios.
Es por eso que siempre termino creando mi propia infraestructura para mis proyectos personales. Si estoy trabajando en proyectos de clientes, a veces hay suficiente valor en tener menos código para escribir y mantener para ofrecer una solución como Firebase. Pero cuando es para mí, quiero minimizar los costos, y soy lo suficientemente rápido como para que solo tome un par de días conectar un servidor Node y una base de datos. Y luego lo ejecuto en una instancia EC2 barata o equivalente, escalando solo si es necesario.
Mi herramienta favorita actual es RethinkDB. Proporciona ganchos que puede usar con NodeJS y Socket.io para obtener el mismo tipo de actualización de cliente en tiempo real que ofrece Firebase. RethinkDB también tiene excelentes capacidades de consulta. Y tiene opciones de escala horizontal robustas, más robustas que MongoDB.
Buena suerte.