Closed erikasv closed 2 years ago
Encontré varias opciones y aquí destaco las que me parecen mejor opción:
Parse: definitivamente la ganadora, es un framework opensource con una gran comunidad detrás para su mantenimiento, sin embargo no está alojada en ningún lado y toca desplegarla en infraestructura propia. El componente principal es el servidor, se puede ejecutar como una aplicación de node, pero también trae su dockerfile, pude construir la imagen y levantar el contenedor rápidamente y sin inconvenientes. Otro componente de mucha ayuda es el dashboard, que permite visualizar y administrar datos y otras cosas, como probar el API. Finalmente se complementa con modulos de la comunidad para extender las funcionalidades del servidor y muchos SDK para hacer la vida más fácil desde los clientes que van a usar el backend.
Agrupo en este punto 3 opciones, sólo analizadas desde las características que exponen en su página de precios, todas tienen un plan gratis y con respecto a ese se que las ordeno, de la más interesante a la menos.
Las características en las que más me fije fueron las siguientes:
Servicio | Petitiones/mes | Almacenamiento de datos | Almacenamiento de archivos |
---|---|---|---|
backendless | ∞ | 200 tablas de 400k registros | 1GB |
back4app | 25k | 250MB | 1GB |
Firebase | Está separado en autenticación, escritura, lectura, eliminación | 1GB | 5GB |
Finalmente no quise descartar el servicio de AWS Amplify porque es la nube que tenemos, pero no entendí muy bien cómo funciona, parece que se lograría tener un BaaS pero hay que armar las partes? 🤷
Los etiqueto a todos para que les llegue el comentario al correo. @danflop @cazapatamar @Trjegul84 @alegnaaived
Hemos reabierto esta tarea para documentar una prueba de concepto con los 3 servicios listados, los repartimos de la siguiente forma:
Por favor documentar las pruebas como comentarios en esta tarea.
Se realizó una prueba con Firebase, consistió en un pequeño frontend que se conecta con un almacenamiento NoSQL Firestore. Se logró ejecutar con éxito las operaciones básicas CRUD sobre una colección.
La configuración es relativamente sencilla y fácil de realizar en el modo de pruebas.
No se probó el modo desarrollo pero se identifica que en ese caso se deben tener en cuenta las credenciales de autenticación para acceder al backend Firebase. Además los cargos del tipo de plan.
Las ventajas que se observan de usar Firebase son su facilidad de uso, que tiene opciones de configuración de reglas para la base de datos, y para opciones para indices que permiten optimizar búsquedas más comunes en las colecciones. Además no requiere tarjeta de crédito para su configuración. Otro aspecto muy bueno es que se puede integrar fácilmente con Google Analitics y tener las gráficas en tiempo real de todos los parámetros de uso y operaciones realizadas en el backend.
Los costos son considerablemente bajos si se maneja un volumen de datos pequeño.
Si se hay documentación en la web, aunque en muchos casos esta desactualizada y se debe adaptar al framework usado. Para el caso de React fue necesario realizar varias pruebas hasta encontrar las funciones correctas para ejecutar acciones sobre las colecciones. Ver Documentación de Firebase
WIP - Revisión de back4app;
La cuenta gratuita no necesita tarjeta de crédito y se encuentran alojados en AWS. No permite configurar SSL/HTML personalizado ni verificación de correo electrónico personalizada (pero sí tiene verificación de correo).
Tiene límite de carga de archivos hasta 20 MB y sólo en los planes de más de 200USD por mes se permite cambiar este límite. Permite sólo 1 Cron Job o Cloud Code en la versión gratuita. Sobre soporte, no tiene monitoreo continuo.
Sobre el desempeño ante solicitudes es bajo según sus planes porque va hasta 10 solicitudes por segundo y en el plan pago más caro va por encima de 50 solicitudes por segundo.
Me registré y en 2 minutos estaba la configuración de prueba:
Me pareció muy bonito el recorrido que va haciendo de la herramienta:
Y en la misma guía de la herramienta hacen una demostración:
Me confundí con la documentación back4app, porque no sabía sobre los objetos de Parse. Después de leer sobre eso, comprendí que podía hacer esta prueba rápida con Javascript.
Al hacer pruebas, lo único que me pareció raro es que si no está creado el objeto en la base de datos, entonces Back4app o Parse deciden crear el objeto con los campos que están en el código:
Vista en el navegador:
Vista en el dashboard de Back4app:
Por último, para comparar precios, me parece que esta imagen compara y resume los tipos de planes:
En el caso de backendless tampoco hubo necesidad de tarjeta de crédito y, la configuración inicial y la creación de la aplicación fue muy sencilla.
Para esquemas sencillos funciona muy bien y se pueden exportar las especificaciones del API a difrentes formatos, como swagger o postman collection. Las relaciones no funcionaron muy bien para nuestro caso de uso (no admite relaciones N:M)
La interfaz se siente un poco cargada con todas las opciones, pero es que tiene muchas funcionalidades, para ayudar con esto existen unos tutoriales interactivos que deberíamos hacer en caso de seleccionar eta opción. El código que genera para los clientes es un poco confuso, pero esto ocurre porque es muy general, igualmente se realizaron pruebas exitosamente desde insomnia.
La desventaja que le veo es que a pesar de manejar una base de datos NoSQL no admite que un campo sea de tipo arreglo, en ese caso toca manejar un text separado por comas o un json y tener doble llave.
Faltó probar la funcionalidad de importar datos, se puede explorar en caso de resultar seleccionado, para facilitar la carga de los indicadores que nos entregaron.
En Firebase si se puede tener documentos con elementos de tipo array. Sin embargo, hay ciertas consideraciones que deben tenerse en cuenta como:
Para el módulo de indicadores nos gustaría explorar un servicio que nos sirva el backend, ya que es una estructura muy sencilla la que tenemos en este caso y potencialmente no es la definitiva.
Requerimos poder consultar registros de una tabla de datos alfanuméricos. Esta consulta se debe poder filtrar por otros campos de la misma tabla. No hay preferencias sobre los servicios, pero se recomienda usar algo similar a Firebase de google.