Backend as a service
# Backend as a service

Backend as a service (BaaS), también conocido como “mobile backend as a service”, es un modelo para proporcionar a los desarrolladores web y de aplicaciones móviles una forma de vincular estas aplicaciones al almacenamiento en nube (cloud storage), servicios analíticos y/o otras características tales como la gestión de usuarios, la posibilidad de enviar notificaciones push y la integración con servicios de redes sociales. Estos servicios se prestan a través de la utilización de kits personalizados de desarrollo de software (SDK) y las interfaces de programación de aplicaciones (API). BaaS es un modelo relativamente reciente en la computación en la nube, donde la mayoría de empresas datan del 2011 o posterior.

## Propósito

Las aplicaciones web y móviles requieren un conjunto similar de características en su backend, incluyendo notificaciones push, analíticas, integración con redes sociales y almacenamiento en la nube. Cada uno de estos servicios tiene su propia API que debe de ser incorporada individualmente a una aplicación, proceso que puede ser largo y complicado para los desarrolladores de aplicaciones. Los proveedores BaaS forman un puente entre el frontend de una aplicación y varios servicios backend en la nube a través de una API y SDK unificada.

Proporcionar una forma coherente para gestionar los datos del backend significa para los desarrolladores no tener que desarrollar su propio backend para cada uno de los servicios que sus aplicaciones necesitan acceder, ahorrando potencialmente tiempo y dinero.

Aunque es similar a otras herramientas de desarrollo web de computación en la nube, como el software como servicio (SaaS), infraestructura como servicio (IaaS) y plataforma como servicio (PaaS), BaaS se distingue de estos otros servicios ya que está específicamente dirigido a las necesidades de la computación en la nube de la web y de los desarrolladores de aplicaciones móviles, proporcionando un medio unificado de conectar sus aplicaciones a servicios en la nube.

## Modelo de negocio

Los proveedores de BaaS generan ingresos de sus servicios de diversas maneras, a menudo utilizando un modelo freemium. Bajo este modelo, un cliente recibe un determinado número de usuarios o llamadas API al mes y paga una cuota por cada usuario o llamada que excede este límite. Como alternativa, los clientes pueden pagar una cuota fija por un paquete que permita un mayor número de llamadas o usuarios activos por mes.

## ¿Qué debe ofrecer un proveedor?

La finalidad de un mBaaS es facilitarnos el desarrollo de aplicaciones móviles. Por lo tanto, algunas de las herramientas básicas que debe ofrecer un proveedor son:

* SDK: Librería de fácil integración y uso que nos dé acceso a las funciones proporcionadas por el mBaaS. Debe estar disponible al menos para las principales plataformas: Android, iOS, Javascript, Xamarin, Windows Phone.
* Analíticas: ¿Cómo están utilizando los usuarios la app? Es imprescindible tener una monitorización de propiedades del usuario y eventos de uso.
* Crash reporting: Crashes y bloqueos son la principal causa de desinstalación de una aplicación. Y en el mundo móvil suceden fuera de nuestro control. Necesitamos estar informados de cuándo y dónde surgen los problemas.
* Servicios de autenticación: Nos debe permitir la autenticación basada en usuario (correo electrónico) / password, OAuth integrado con Google, Facebook, Twitter, etc. O integrar nuestro propio sistema de autenticación.
* Almacenamiento: Espacio donde guardar y compartir ficheros, vídeo, imágenes, documentos.
* Base de datos: Almacenamiento NoSQL de fácil uso y que permita la sincronización bidireccional.
* Push notifications: Nos permite enviar notificaciones a la app cuando necesitamos comunicar algo al usuario o sincronizar algún dato.
* Funciones en la nube: Automatización de tareas. Disparo de notificaciones en función de triggers, batch jobs periódicos.
* Dashboard: Control de todo el mBaaS, desde la creación de usuarios o los modelos de base de datos a la monitorización de las estadísticas.

## Proveedores de servicios

* MOCA Platform
* KONA
* Kumulos
* Parse (Dejó de existir en enero de 2017)
* Firebase
* ConnectyCube
