Llegamos a ustedes gracias a:



Reportajes y análisis

Soluciones MBaaS

5 nubes para construir apps móviles

[20/11/2014] MBaaS (backend móvil como servicio) es una categoría de producto bastante nueva, que ha sido largamente suplantada por las MEAPs (mobile enterprise application platforms) o plataformas móviles de aplicaciones empresariales. En los últimos dos años hemos revisado de cerca cinco sistemas MBaaS: AnyPresence, Appcelerator, FeedHenry, Kinvey, y Parse. En este artículo desplegaros la serie juntando los cinco sistemas, examinando sus puntos en común y sus diferencias clave y elaborando conclusiones.

La idea general del MBaaS es que las apps móviles necesitan servicios comunes que pueden ser compartidos entre aplicaciones, en lugar de ser desarrollados de manera personalizada por cada una. Las apps móviles que usan MBaaS siguen una arquitectura distribuida débilmente acoplada, y los sistemas MBaaS por sí mismos típicamente tienen más arquitecturas distribuidas que los sistemas MEAP, los cuales tienden a ser servidores de middleware unificados.

Los sistemas MBaaS usualmente ofrecen notificaciones push, almacenamiento, compartición e integración con redes sociales como Facebook y Twitter, servicios de ubicación, funciones de mensajería y chat, gestión de usuarios, la capacidad de ejecutar la lógica del negocio y herramientas de análisis de uso. Los sistemas MBaaS orientados a la empresa también ofrecen integración con bases de datos y aplicaciones existentes.

Los backends no existen de manera aislada, de modo que los sistemas MBaaS ofrecen cierto nivel de soporte de cliente móvil. Esto comprende un rango desde la exposición de APIs (Application Programming Interface, Interfaz de programación de aplicaciones) REST para todos, hasta la provisión de generación de apps para iOS, Android, ciertos sabores de JavaScript y quizás otras plataformas móviles.

Además, los backends necesitan ser personalizados y programados, de modo que los sistemas MBaaS ofrecen una combinación de ambientes de desarrollo en línea y de escritorio.

Finalmente, los servicios de backend son diseñados para estar en constante operación, de modo que necesitan un nivel de monitoreo de aplicación y de registro de errores, además del análisis de uso. El monitoreo y las analíticas pueden ser ofrecidas directamente por el proveedor de MBaaS, o a través de una integración con un servicio de terceros.

Como crédito extra, los sistemas MBaaS pueden generar SDKs (software development kit, kit de desarrollo de software) móviles. Esto es principalmente útil cuando un proveedor expone susservicios a socios que hacen desarrollo de apps móviles. Además, los sistemas MBaaS pueden soportar operaciones fuera de línea de sus apps móviles, y sincronización de bases de datos en línea/fuera de línea. Los sistemas MBaaS pueden ofrecer su propia gestión de dispositivos móviles o integrarse con un proveedor de MDM. Los sistemas MBaaS también pueden soportar servicios de dispositivos específicos cuando sea conveniente, como iBeacon en dispositivos iOS.

Puntos en común y diferenciadores

A lo largo de la revisión de FeedHenry, Kinvey, Appcelerator, Parse y AnyPresence, ciertas capacidades e implementaciones se volvieron muy familiares. Por ejemplo, todos los cinco productos de MBaaS ofrecen almacenamiento usando MongoDB, una base de datos de documentos NoSQL de código abierto que almacena objetos JSON. Todos esos productos ofrecen un diseño de datos de interfaz de usuario para su almacén de datos de MongoDB, y estas interfaces lucen similares. No nos sorprendería si las interfaces de usuario estuvieran basadas todas en el mismo código muestra de MongoDB.

Todos los cinco sistemas MBaaS están disponibles en una nube multiusuario. Todos tienen documentación en línea. Todos ofrecen notificación push y APIs de autenticación de usuario. Todos soportan apps nativas iOS y Android en cierto nivel, y todos tienen alguna forma de que los desarrolladores implementen una lógica de servidor personalizada.

Los diferenciadores entre estos productos son diversos. Por ejemplo, su soporte a la integración con aplicaciones empresariales y bases de datos varía en un rango desde la capacidad básica de llamar a interfaces REST externas que retornan JSON, hasta integraciones profundas con aplicaciones y bases de datos comunes. El tiempo requerido para que un desarrollador implemente una determinada integración empresarial con un MBaaS varía desde días hasta minutos, dependiendo de cuánto del trabajo de un determinado proveedor de MBaaS haya sido hecho ya para una integración específica.

Algunos sistemas MBaaS están disponibles on-premise y algunos lo están en nubes privadas. Algunos pueden ser hospedados en compatibilidad con estándares de seguridad de datos HIPAA, PCI, FIPS y EU. Algunos tienen sus propias capacidades de evaluación y algunos ofrecen construcción en la nube de aplicaciones móviles.

Algunos soportan HTML5 y apps híbridas. Algunos compilan JavaScript para código de dispositivo nativo. Algunos soportan PhoneGap, algunos soportan Apache Cordova, y algunos evitan tanto los envoltorios para apps híbridas en favor de otras soluciones, como la generación de apps nativas.

Algunos corren sus backends en Node.js, algunos en Rails, y algunos en plataformas no especificadas. Algunos soportan clientes BlackBerry, Windows Phone 8, o Unity. Algunos tienen app hospedada e IDEs de backend en su nube, algunos ofrecen IDEs multiplataforma de escritorio, y algunos tienen interfaces de escritorio de líneas de comando para el control de la nube. Algunos soportan varios framework conocidos de JavaScript, como Backbone y Angular, y algunos utilizan sus propios frameworks de JavaScript, los cuales pueden ser adaptaciones de frameworks de específicos de código abierto.

Cinco formas de MBaaS

Como veremos, los diferentes proveedores de MBaaS han apuntado a mercados ligeramente diferentes, y han hecho elecciones técnicas ligeramente diferentes. Sin embargo, tienen un alto grado de solapamiento y de puntos en común.

MBaaS AnyPresence
Pantalla de selección de construcción de app de AnyPresence. Fíjese en la amplia variedad de SDKs y el pequeño surtido de prototipos de UIs de app que pueden ser generados.

AnyPresence: La meta de AnyPresence no es solo ayudar a las empresas a construir backends para sus apps móviles. AnyPresence combina la construcción de app, servicios de backend y un Gateway de API.

AnyPresence tiene un diseñador en línea que genera código de backend, código de app móvil, e inclusive código de API móvil personalizado. Todo el código generado puede ser descargado, editado, y ejecutado en plataformas compatibles. Para citar uno de los ejemplos de los clientes favoritos de AnyPresence, Mastercard ha utilizado AnyPresence para permitir a los socios construir fácilmente apps móviles contra los servicios Open API de Mastercard.

AnyPresence genera interfaces de usuario de app (o kits de inicio, si lo desea) para jQuery, Android (XML layout), e iOS (storyboard), y genera SDKs de app para Java, Android, HTML5, Windows Phone, Xamarin, e iOS. El entorno de diseño se refiere al SDK de JavaScript/HTML5 generado como "jQuery". De hecho, AnyPresence realmente genera CoffeeScript que utiliza las librerías Underscore, Backbone y jQuery.

AnyPresence genera servidores backend para Rubi sobre Rails. En el futuro también generará backends Node.js, los cuales serán un buen desarrollo. El entorno AnyPresence puede generar despliegues para Heroku (usualmente para un backend Rails), para Amazon S3 (usualmente para apps HTML5), para apps nativas iOS y Android con o sin seguridad Apperian. Sin embargo, usted no se encuentra limitado por las opciones de despliegue de AnyPresence. El código generado siempre puede ser descargado y desplegado en otro lugar, asumiendo que tiene entornos de despliegue compatibles.

El diseño de AnyPresence existe en línea y se ejecuta en la mayoría de navegadores. El entorno de diseño tiene un panel de control; una pantalla de configuración; pantallas para crear entornos de monitor, despliegues, y builds; pantallas para generar y desplegar apps, backends y SDKs; pantallas para agregar y gestionar fuentes de datos y objetos de datos; pantallas para autorización, roles y estrategia de autenticación; pantallas para stock y extensiones personalizadas, el diseñador de interfaz y un conjunto personalizable de temas.

Encontramos que la selección de fuentes de datos es buena y la implementación del almacenamiento de datos MongoDB provisto está a la par de otros sistemas MBaaS. Lo que coloca a AnyPresence aparte es la forma en que el modelo se integra con el entorno de diseño y dentro de todo el código generado.

El lugar en el que agrega la mayoría de integraciones de monitoreo, como Airbrake y New Relic, está escondido profundamente en la pestaña Deployments/Add-ons. Naturalmente, el monitoreo es dependiente del entorno runtime, y AnyPresence está diseñado para ser agnóstico respecto al entorno. Para la integración Splunk, tiene que permitir una salida de syslog en el backend para empujar todos los logs/eventos a los sistemas Splunk para reporte y monitoreo.

MBaaS AnyPresence

Appcelerator: Appcelerator Titanium ha sido un jugador en el espacio de desarrollo móvil por varios años, con un entorno de desarrollo local que compila JavaScript a código nativo para iOS, Android y otros objetivos.

Vista general del panel de control de la plataforma de Appcelerator para la aplicación demo Field Service. Las caídas fueron deliberadamente codificadas en la app.
MBaaS Appaccerator

Con el lanzamiento de Appcelerator Studio 3.3 y Appcelerator Platform 2.0 en julio del 2014, la compañía agregó un MBaaS con cerca de 25 APIs, soporte Node.js, y analíticas en línea. Además, Appcelerator ha publicado interfaces para su MBaaS que los desarrolladores pueden agregar a las apps construidas con SDKs nativos, aunque aún no soporta SDKs nativos en su propio Appcelerator Studio IDE.

Los desarrolladores pueden ver una vista general rápida de las instalaciones de apps, sesiones, API calls,y caídas en la página de panel de control de Appcelerator. Otras partes del panel de control ofrecen gestión de la nube, pruebas, métricas de rendimiento, y analíticas.

El panel de Nube muestra el uso, expone la gestión de datos, muestra las solicitudes de APIs y empuja logs de notificaciones, lista los servicios personalizados, y permite la configuración de nube. El panel de testeo usa TouchTest de SOASTA como una solución de testeo móvil integrada. El panel de rendimiento le permite monitorear sus apps y el rendimiento de la solución de problemas, las caídas, y las excepciones. También le permite ver tendencias en las caídas, integrarse con sistemas de seguimiento de bugs, y configurar su monitoreo.

Los desarrolladores pueden definir y visualizar las analíticas de Appcelerator en línea, así como publicar opcionalmente las analíticas seleccionadas a la app Appcelerator Insights para la iPad, típicamente para ser usadas por un administrador.

Appcelerator Platform le permite construir servicios personalizados de backend usando el framework Studio y Node.ACS MVC (model view controller) de Appcelerator. El Node.ACS combina Node.js y Express con interfaces para Appcelerator Cloud Services. Appcelerator también le permite ejecutar aplicaciones Node.js puras en su plataforma de nube.

Appcelerator tiene múltiples frameworks en el lado del cliente, y múltiples tipos de APIs para la nube. En el nivel básico en el cliente, Appcelerator ofrece el Titanium SDK, el cual provee una interfaz entre JavaScript y servicios nativos. En el nivel más alto, Appcelerator ofrece el framework Alloy, el cual está basado en la arquitectura de 'modelo de vista de controlador', y contiene soporte incorporado para Backbone y Underscore. Cuando crea una nueva app cliente desde Studio, típicamente se genera una que usa Alloy.

El framework Alloy maneja algo de lo que usted necesita para la sincronización de datos fuera de línea/en línea, pero no todo. Appcelerator carece de conectores de datos probados que no sean los de SAP y Salesforce.com. Sin embargo, debido a que puede ejecutar módulos Node en su servicio Node.ACS, los desarrolladores pueden dibujar en módulos desde la comunidad Node.js. El único servidor comercial de sincronización de Appcelerator está actualmente limitado a un conector de Microsoft Dynamics.

MBaaS Appacelerator

FeedHenry: Con un enfoque en el soporte en apps en empresariales de la línea de negocios, existe una plataforma basada en Node.js, orientada a MBaaS y de aplicación móvil. Tiene un amplio arreglo de integraciones, con opciones de desarrollo tanto en línea como fuera de línea, construcción de colaborativa de app, y un formulario de construcción de tipo arrastrar y soltar. FeedHenry fue una separación del Irish Research Institute en el 2010 y fue adquirida por Red Hat en setiembre del 2014.

FeedHenry afirma tener infraestructura global en todas las nubes importantes y soporte para on-premise, así como despliegue de backend. El entorno en línea de FeedHenry se integra directamente con GitHub para la colaboración y el control de versión.

FeedHenry 3 soporta SDKs nativos para iOS, Android, y Windows Phone 8, junto con apps híbridas usando Apache Cordova, apps Web móviles HTML5, y Sencha, Xamarin y Appcelerator Titanium. La forma en que el JavaScript hace una interfaz con la nube de FeedHenry funciona, sería difícil encontrar un framework de JavaScript que no sea compatible.

MBaaS FeedHenry
FeedHenry incluye un editor en línea, soporte de herramientas fuera de línea, y una interfaz de línea de comandos. Aquí vemos la app móvil, con un editor de código en medio de la pantalla y una vista previa a la derecha. Puede configurar el servicio de backend en otro panel de la interfaz en línea.

Cuando se escribe para FeedHenry en JavaScript, usted incluye el script feedhenry.js en su HTML, lo inicializa con $fh.init, luego llama a las funciones de nube desde el namespace $fs. FeedHenry puede importar las apps existentes desde un archivo Zip o un repositorio Git.

El servicio de construcción FeedHenry, el cual funciona junto con las mismas líneas como Adobe PhoneGap Build, puede convertir una app HTML5 en binarios para Android, BlackBerry, iPhone, iPad, iOS (universal), y Windows Phone. Cada binario puede conectarse a una de sus instancias MBaaS, y puede ser incorporado para desarrollo, distribución, lanzamiento o debuggin, dependiendo de la plataforma.

FeedHenry tiene un formulario de construcción con una buena variedad de plantillas para usar como punto de partida. Sin embargo, al momento en que revisaba FeedHenry, tenía pocas plantillas de app completas.

FeedHenry tiene una lista de más de 50 plug-in Node.js en su lista de módulos curada. Esa lista incluye interfaces para la mayoría de principales bases de datos relacionales NoSQL. En caso de que la lista curada no incluya lo que busca, es probable que lo encuentre en los módulos de la larga lista de la comunidad Node.

FeedHenry corre en la todas las principales nubes públicas y privadas, y en un amplio rango de infraestructuras de IaaS y PaaS. FeedHenry opera en una nube compatible con HIPAA y clusters en vivo tanto en Europa como en EE.UU.

MBaaS FeedHenry

Kinvey: Kinvey se denomina a sí misma como una completa plataforma móvil y web. Tiene un amplio soporte para cliente, se integra con las principales bases de datos empresariales y ofrece almacenamiento de datos de backend, almacenamiento de archivo, notificaciones push, analítica móvil, soporte iBeacon, y la capacidad de ejecutar código personalizado en el backend.

Kinvey se vende a TI como su cliente primario porque ofrece una plataforma empresarial, no para una o dos apps, sino para decenas o cientos de apps para una empresa. Sin embargo, también está vinculada y soporta a la comunidad de desarrolladores app por app.

Kinvey soporta apps nativas, híbridas y HTML5. Tiene soporte de juego de herramientas nativo para iOS y Android. Además, soporta Angular, Backbone, Node.js, Apache Cordova/PhoneGap, y Appcelerator Titanium, y ofrece una API REST. Kinvey se integra con apps a través de librerías y calls de API, y espera que usted edite su app localmente.

MBaaS Kinvey
Las colecciones de Kinvey utilizan MongoDB, la cual ofrece una base de datos no SQL sin esquema para usar con sus apps. Esta pantalla le permite crear y diseñar colecciones (solo es necesario el paso de creación), y elegir si desea habilitar o puentear su lógica de negocios de la base de datos.

El código de nube Kinvey está escrito en JavaSCript, aunque no Node.js, y está editado en línea. En adición al uso de JavaScript estándar y servicios externos, puede usar APIs Kinvey para loguearse, acceder a colecciones, enviar notificaciones push, enviar e-mail, validar solicitudes, manejar funciones de fecha y hora, realizar procesos asíncronos, renderizar una plantilla Mustache, y obtener el contexto backend. El código de nube puede vivir en funciones de procesos hook y terminales cliente. El código de nube está versionado internamente en Kinvey.

Kinvey soporta el despliegue en casi cualquier nube, incluyendo nubes privadas. Eso incluye el despliegue a instalaciones compatibles con HIPAA y hacia instalaciones ubicadas completamente en los EE.UU. Aunque la nube multiusuario de Kinvey está considerada lo suficientemente segura para la mayoría de apps, dado que la compañía hace encriptación de extremo a extremo, y los clientes que usan enlaces de datos pueden mantener sus datos en bases de datos detrás de sus propios firewalls. Si tiene un servidor Google App Engine, puede enlazarlo a su backend Kinvey.

La autenticación puede ser hecha internamente por Kinvey o a través de LDAP o Active Directory en las versiones Business y Enterprise. Kinvey también soporta identidades Facebook, Twitter, Google+, y LinkedIn, a través de OAuth.

Los enlaces de datos de Kinvey se conectan al almacenamiento de datos MongoDB de Kinvey. En la mayoría de los casos, los clientes redireccionan las solicitudes CRUD directamente al backend real, pero algunas se guardan y hacen un caché de los datos en MongoDB. Kinvey actualmente tiene enlaces de datos para Microsoft Dynamics CRM, Salesforce CRM, Oracle Database y Microsoft SQL Server.

Kinvey tiene un ajuste de control automatizado para sincronización de datos en línea, en el cual los datos son automáticamente jalados desde la caché si la aplicación está fuera de línea. Si la aplicación está en línea, los datos son jalados desde la red y almacenados en la caché.

Usando el control automatizado, su app Kinvey intentará sincronizar cualquier dato almacenado localmente cuando el dispositivo esté nuevamente en línea, pero si los datos del servidor también han cambiado, tendrá un conflicto. Se puede establecer una política de solución de conflictos con clientAlwaysWins, serverAlwaysWins, o una función personalizada de resolución de conflictos.

MBaaS Kenvey

Parse: Parse fue una vez el niño modelo del MBaaS, y a pesar de su adquisición por Facebook, aún es un backend viable de baja fricción para apps de consumo de volumen limitado. En el lado positivo, está bien documentado, con buen soporte de cliente nativo y un cliente de JavaScript basado en SDK sobre Backbone. Parse también ejecuta código JavaScript en el backend, lo cual ofrece a los desarrolladores la opción de una pila de aplicación todo-JavaScript. En el lado negativo, Parse está perdiendo grandes piezas necesarias para las apps de negocios, como la integración de datos, operación fuera de línea y sincronización en línea/fuera de línea. A la vez, su precio parece orientado a las apps de volumen más bajo.

El navegador de Parse Cloud le permite importar datos en bloque; agregar clases, columnas y filas; y ver los datos filtrados.

Parse soporta apps móviles nativas, JavaScript y de escritorio. En el lado móvil, tiene soporte nativo para iOS, Android, y Windows Phone 8. En el desktop, tiene soporte para OS X y Windows 8 (.Net), así como para juegos Unity.

Parse le permite ejecutar código Java en la nube usando el mismo SDK JavaScript Parse como cliente. En lugar de tener que editar rutinariamente su código de nube en un navegador, como FeedHenry y Kinvey hacen, Parse provee una herramienta de línea de comando para administrar código en Parse Cloud, y le permite usar su editor favorito de JavaScript en su computadora. Sin embargo, puede ver el código y los logs en el panel de control. La herramienta de línea de comando es un generador de andamios de apps, una herramienta de despliegue de app, un log printer, y un auto actualizador.

Parse puede enviar notificaciones push a iOS, Android, Windows 8, y Windows Phone 8. En cada caso, tendrá que provisionar su servidor push, luego ofrecer el certificado o credenciales para su app.

Parse tiene un sistema predefinido de usuario bastante completo, incluyendo el mecanismo usual de registro con la verificación de e-mail y una provisión de usuarios anónimos. Un sistema de ACL controla qué datos pueden leer y escribir los usuarios individuales. Para casos de uso más complicado, Parse soporta una jerarquía de roles, con una capa separada de ACLs para los roles.

Parse tiene nueve integraciones con otros servicios. Tres de ellas -Mailgun, Mandrill, y SendGrid- son para envío de e-mail. Stripe es para cargar tarjetas de crédito. Twilio envía SMS y mensajes de voz. Están disponibles módulos de terceros para integrarse con Parse con Cludinary, Instagram y Paymill.

Por lo que podemos decir, implementar una integración de datos empresariales con Parse requiere escribir un envoltorio de servicio web REST para la fuente de datos y un módulo JavaScript para Parse. No he visto ninguna opción para hospedar Parse que no sea usar su propia nube multiusuario.

MBaaS Parse

Un mejor MBaaS

Como se puede ver a partir de las puntuaciones, AnyPresence ganó las marcas más altas: una puntuación combinada de 9.1 y una insignia de Editor's Choice. AnyPresence ofrece más valor que otros para empresas que necesitan integrar sus sistemas actuales con aplicaciones móviles, ya que genera SDKs personalizados, junto con apps y backends, desde su modelo y diseño. Sin embargo, costear un mínimo de seis dígitos al año no encaja en presupuesto de todas las compañías.

FeedHenry, que ganó una puntuación general de 8,6 es también un MBaaS orientado a la empresa. FeedHenry tiene una buena integración con Git para colaboración y control de versión, y nos gusta su servicio de construcción de app hospedado, su backend Node.js y su lista de módulos de Node curada, y su diseñador de formularios de arrastrar y soltar. Al igual que AnyPresence, FeedHenry puede que no encaje en todos los presupuestos de la compañía.

Kinvey, con una puntuación general de producto de 8,3, se engancha como compañía con la comunidad de desarrolladores, así como con departamentos de TI corporativos. Nos gusta la forma en que Kinvey hace enlaces de datos empresariales a través de su API de base de datos interna NoSQL, y apreciamos la forma en que ha estructurado sus ganchos para la lógica de negocio backend.

Criticamos Appcelerator por su aparente carencia de esfuerzo en los módulos de integración de datos curados, y consideramos que su precio relativamente alto frente a FeedHenry y Kinvey puede disminuir su valor general, dándole una puntuación neta de 7,8. Sin embargo, Appcelerator como compañía recién viró hacia el espacio MBaaS. Aun puede completar las funciones faltantes en su producto y ajustar su precio para ser más competitivo.

Finalmente, consideramos a Parse adecuado para construir y operar backends para apps móviles que dan cara al usuario, y no apps de negocios, dada su carencia de cualquier conector de datos más allá de un cliente REST básico. Nuestra otra reserva principal acerca de Parse es su precio basado en el uso, el cual permite a un desarrollador comenzar fácilmente pero podría potencialmente morder una startup con fondos insuficientes que repentinamente tenga un golazo viral en sus manos sin un modelo real de negocios. Su puntuación es de 7,6, la más baja en este grupo.

Esto no es para decir que no debería usar Parse. Es una forma viable, con baja fricción para comenzar con el backend como servicio. Sin embargo, si elige usarla, vaya con los ojos abiertos, monitoree sus costos y prepárese para reducir o eliminar las llamadas de servicio que le representarán un gasto que no puede afrontar.

Para apps de negocios, AnyPresence y FeedHenry lideraron el paquete tanto en facilidad como en capacidades. Kinvey no está muy lejos, y su precio es más favorable para los pequeños negocios.