martes, 14 de junio de 2016

¿Qué son las Mobile Enterprise Application Platforms?


En la actualidad, existe un conjunto de acrónimos que representan una nueva línea de productos y plataformas que intentan solucionar los principales problemas del desarrollo de aplicaciones móviles. 

El primer inconveniente, más conocido y claro, es el de la multiplataformidad, relacionado con la heterogeneidad intencional que existe entre las diversas plataformas móviles, siendo hoy las tres principales: iOS, Android y Windows Phone. El segundo, está relacionado con la integración de las aplicaciones móviles a servicios de backend y la provisión de servicios cross-platform, pero que son comunes a todas las aplicaciones móviles como ser: CDN, notificaciones, autenticación, servicios, APIs, etc.

Este artículo, tiene como fin dar a conocer los diferentes tipos de plataformas existentes, tanto abiertas como comerciales, los servicios y características de cada una, y los principales proveedores que las ofrecen, brindando así una guía de gran utilidad para gerentes de sistemas y asesores técnicos.

Los acrónimos

De manera un tanto difusa, estos acrónimos representan los distintos servicios ofrecidos por las plataformas disponibles para el desarrollo de aplicaciones.

MEAP (Mobile Enterprise Application Platform): plataforma de integración de servicios empresariales, generalmente lightweight (REST), que se disponibilizan para todas las plataformas móviles. Permite atacar el problema de la multiplataforma desde el lado de la concentración de servicios claves en una plataforma común, limitando la responsabilidad de las aplicaciones nativas exclusivamente a aspectos de UX.

MCAP (Mobile Consumer Application Platform): similar a la anterior, pero orientada a las necesidades de una aplicación directa para el público masivo. Probablemente tenga más componentes de integración con redes sociales y, quizás, la sincronización offline no sea un feature obligatorio.

MADP (Mobile Application Development Platform): en este caso, la plataforma es un ambiente de desarrollo mobile multiplataforma completo que, eventualmente, puede también ser cloud. El foco está puesto en las herramientas de desarrollo que permite construir aplicaciones mobile multiplataforma. Desde esta perspectiva, incluye a los dos anteriores, ya que al centrarse en el ambiente, no importa su uso final.

MBaaS (Mobile Backend As A Service): básicamente, un backend cloud pensado para mobile, pero que carece de las funcionalidades client-side, como compilación multiplataforma y funcionalidades asociadas. En este esquema, en general, queda excluido el cómo desarrollar las aplicaciones móviles que se conectan al BaaS, y generalmente se limita a proveer un SDK para poder consumir los servicios.

Ejes y servicios

Los M**P cubren distintos servicios o funcionalidades. Algunos sólo lo hacen de forma parcial, mientras que otros los abarcan de manera completa:

  • Server: la plataforma base en el servidor sobre la que se construye toda la solución (e.g. IIS).
  • Database: motor de base de datos, sea Relacional o NoSQL.
  • ORM: motores de Object Relational Mapping (e.g. Hibernate), para disponibilizar modelos de datos basados en objetos con un soporte en una base de datos relacional.
  • REST Services: generalmente, los servicios implementados en el servidor se disponibilizan como servicios RESTFul en arquitecturas de microservicios.
  • Identity Management Services: motores que permiten realizar autenticación y autorización de transacciones, generalmente contra federadores externos (e.g. Google, Facebook, Office365.
  • Security: layers de seguridad específicos para Mobile, como encripción adicional, implementación de políticas y reglas centralizadas.
  • iOS / Android / WindowsPhone Integration: cada una de las plataformas provee servicios específicos que requieren de una integración particular.
  • Enterprise Integration: integración con servicios típicos empresariales contra Services Bus (Enterprise Service Bus), mediante transacciones SOAP o similares.
  • CDN, Content Delivery Network: particularmente, aquellas soluciones basadas en Cloud ofrecen también la red de distribución de contenido para obtener alta disponibilidad y performance acorde al origen de cada request.
  • Data Synchronization                                                                                             -Offline Data Synchronization: las aplicaciones mobile operan en OCS, Ocasionally Connected Scenarios, escenarios ocasionalmente conectados donde las aplicaciones pueden tener períodos de conectividad parcial o de desconexión completa.
  • Cross Platform Support: posibilidad de utilizar un único codebase y compilarlo directamente o, por ejemplo, utilizarlo en diferentes canales a la vez.
  • Deployment Methodology: cómo y dónde se implementará el servidor centralizado corporativo que da soporte a la solución mobile.                                                     -Multi-tenant: un servicio Cloud centralizado administrado compartido entre diferentes clientes. | Dedicated: un servicio Cloud centralizado dedicado para cada cliente. | On-premises: servidores directamente instalados en un datacenter propietario.
  • Open Source: las herramientas de desarrollo, la plataforma y los SDK disponibles para desarrollar las aplicaciones mobile son de código abierto. En algunos casos, pueden coexistir una versión abierta comunitaria y una comercial con features adicionales.
  • Push Service: los servicios Push son sistemas de notificaciones iniciados desde el servidor que permiten enviar mensajes específicos a cada dispositivo particular.  Cada proveedor Mobile tiene su esquema de envío de notificaciones y su SDK para operarlo. Un servidor MEAP puede implementar todas las API con cada proveedor y de esta manera centralizar las notificaciones independientemente de la plataforma.
  • SMS Support:  envío de SMS.
  • Email Relay Support: servicio customizado de envío de emails, desde transacciones puntuales hasta envíos masivos para campañas o como parte de los propios procesos de la organización.


MBaaS

Es un modelo que proporciona a desarrolladores de apps móviles y web una manera de vincular sus aplicaciones mediante una API a servicios en la nube. Los servicios ofrecidos en la nube pueden incluir capacidad de gestión de usuarios, notificaciones de inserción e integración con sistemas de terceros, notificaciones push, integración con los servicios de redes sociales, noticias y otros recursos de recopilación de datos como editoriales y similares. Estos servicios se prestan a través del uso de kits de desarrollo de software (SDK) e interfaces de programación de aplicaciones (APIs). Además, ofrecen un control de acceso minucioso a todas las aplicaciones móviles alojadas en una plataforma en particular. 
Los empleados y clientes empresariales pueden acceder e intercambiar datos desde cualquier dispositivo móvil y realizar operaciones multicanal.
La idea general de MBaaS es que los servicios comunes puedan ser compartidos entre aplicaciones móviles en lugar de ser desarrollados a medida para cada una. Utilizando MBaaS, las aplicaciones móviles siguen una arquitectura distribuida débilmente acoplada.

Una plataforma MBaaS debería incluir, al menos:
  • Una infrastructura Cloud.
  • Capacidades de integración completa - conectividad a sistemas corporativos como ERP, CRM, etc.
  • Desarrollo de aplicaciones móviles - entorno de desarrollo integrado (IDE) para la creación de aplicaciones móviles.
  • Gestión de dispositivos móviles (MDM) - apoyo para el aprovisionamiento de dispositivos, transmisión segura de datos, configuración remota, seguimiento de datos móviles, la identificación de políticas y la adaptación, etc.
  • Mobile Application Management (MAM) - aprovisionamiento y control de acceso a las aplicaciones móviles utilizadas en los entornos empresariales (ajustes de configuración, autenticación de usuarios, servicios de notificación de inserción, análisis de uso de aplicaciones, etc.).

Según Gartner, las principales empresas que ofrecen servicios MBaaS son:

 


Plataformas MBaaS


Las soluciones disponibles actualmente en el mercado tienen algunas características comunes: 
  • Cuentan con almacenamiento utilizando una base de datos NoSQL o disponen de un ORM que permite operar la base de datos de esa manera, almacenando y operando sobre objetos JSON.
  • Ofrecen un diseño de interfaz de usuario para las aplicaciones móviles similares.
  • Están disponibles en una nube multiusuario.
  • Poseen documentación en línea.
  • Proporcionan las API para notificaciones Push y de Identity Manager. 
  • Tienen soporte iOS y Android.
  • Poseen capacidad para que los desarrolladores implementen la lógica del servidor de manera customizada.

 Entre los productos comerciales y abiertos, se destacan:

  • Windows Azure Mobile Service
  • AnyPrescence
  • Appcelerator
  • FeedHenry
  • Kinvey
  • Parse
  • CloudKit
  • Kony MobileFabric
  • Cognito
  • Pivotal CF
  • BAASBox
  • built.io
  • moBack.com

A continuación, nos centraremos en la solución MBaaS: WAMS, Windows Azure Mobile Services, una de las líderes del mercado y que brinda una excelente relación costo beneficio para el desarrollo de aplicaciones móviles corporativas, tanto las orientadas a la compañía internamente (in-house development) como comerciales para el público masivo.

Windows Azure Mobile Services

Microsoft ofrece una completa plataforma MBaaS bajo la denominación WAMS. La misma incluye la mayoría de los ejes típicos de servicios de integración mobile. Particularmente, ofrece un SDK Mobile Multiplataforma, un servidor REST en NodeJS con un ORM incorporado que detrás se conecta con una base de datos lightweight SQL Server Azure, optimizada para alta carga transaccional, pero de limitado espacio de almacenamiento.  Además, ofrece un servicio de Identity Manager por autenticación federada (Facebook, Twitter, Outlook y Google), incluyendo integración contra ADFS y Office365, un Service Bus Hub para envío de notificaciones PUSH, un Relay Server de SMTP, un Blob Storage (almacenamiento de archivos), máquinas virtuales y servicios de networking y seguridad (e.g. VPN).

  
 

  
En Baufest, extendimos el esquema tradicional ofrecido por Microsoft, para adicionarle características específicas requeridas por nuestros clientes. Dotamos a la arquitectura de un mecanismo multiplataforma, basándonos en el framework Apache Cordova (i.e. Phonegap).  Esto permite que las aplicaciones construídas sobre WAMS sobre un único codebase, puedan compilarse y ejecutarse sobre las tres principales plataformas mobile del mercado actuales: iOS, Android y Windows Phone.  Adicionalmente, desarrollamos un motor de notificaciones basado el Notification Hub provisto por Azure, con conectores externos para obtener la información de contactos desde sistemas legacy corporativos (SOAP, REST, FTP, File Shares) y agregándole una interfaz de backend para la administración y el disparo puntual de las notificaciones.   Finalmente, enriquecimos la plataforma de Azure con un esquema adicional para la distribución de documentos digitales (e.g. facturas) mediante un protocolo seguro diseñado para obtener estos documentos, disponibilizarlos temporalmente seguros en la nube para que el usuario los visualice. 

Elección de la Plataforma

Existen diversos factores que pueden determinar el éxito o fracaso de un proveedor Mobile Empresarial para cada corporación. Los mismos son:

1.Codificación nativa. ¿Se requieren habilidades de codificación nativa para completar los proyectos o hacer cambios? Algunos vendedores MEAP, no completan el proceso de creación de la aplicación móvil para el dispositivo de destino. Se requiere la programación y el ajuste manual del código. Hay que evaluar cuidadosamente si la plataforma MEAP es verdaderamente una solución multiplataforma de extremo a extremo o si es un generador de código. ¿Los ajustes se reflejan en el IDE del MEAP?  Es decir hay un único codebase o diferentes fuentes generados una vez y que luego tienen que mantenerse en forma separada para cada plataforma.

2.Depuración nativa. ¿Vamos a necesitar utilizar el depurador nativo para probar nuestras aplicaciones? Si la plataforma MEAP despliega sus capacidades de depuración en un dispositivo de destino, entonces es probable que sea necesario escribir código para arreglar cualquier problema que encuentre.  La situación ideal es que exista  un único esquema de depuración multi-plataforma, multi-canal y no tener que utilizar depuración nativa cada vez que se necesite arreglar un bug.

3.Soporte de plataformas tradicionales. ¿Puede la plataforma MEAP crear también aplicaciones de escritorio, cliente-servidor y aplicaciones web? Algunas plataformas MEAP´s son solo para implementaciones móviles y tienen poca o no cuentan con capacidad para soportar otros tipos de aplicaciones. Esta falta de soporte significa codificación duplicada para esos ambientes y la imposibilidad de aprovechar las aplicaciones existentes. Una plataforma MEAP más robusta debería ser capaz de poder implementar una lógica de aplicación compuesta por su servidor Java existente, .NET y servicios web habilitados para SOA para una mejor productividad.

4.Soporte HTML5 y GUI nativo. ¿La plataforma MEAP permite a los desarrolladores controlar la apariencia de la aplicación, para que puedan desarrollar una interface nativa para cada dispositivo? ¿Aplicaciones BlackBerry se parecerán a otras aplicaciones BlackBerry? ¿Será una aplicación para iPhone vista como una aplicación para  iPhone? Alternativamente, ¿si se necesita tomar un enfoque más uniforme con un branding específico corporativo, se puede utilizar la plataforma MEAP para crear aplicaciones HTML5 como una opción al enfoque de dispositivo nativo? Para algunas organizaciones, algunas aplicaciones pueden necesitar tener una mirada nativa, mientras que para otras pueden ser aceptables en una versión HTML5 genérica (basado en el navegador). ¿La plataforma da la flexibilidad para tener ambos enfoques?

5.Opciones de integración. ¿El proveedor de plataforma MEAP tiene una sólida integración de servicios en segundo plano? ¿Tienen un conjunto completo de herramientas de integración para que pueda integrar los sistemas de IT de la empresa, datos y procesos con la plataforma? La Integración con los sistemas de backend es un componente crucial para proporcionar aplicaciones B2E, B2B, B2C. Sin una solución sencilla para la integración, pueden terminar gastándose meses de tiempo de desarrollo para tratar de integrar aplicaciones móviles a los sistemas empresariales existentes.

6.Solución Global multilingüe. ¿Es la solución multilingüe y puede el vendedor proporcionar apoyo multilingüe? Algunos vendedores tienen un alcance que se limita a América del Norte y no más allá. Algunas plataformas MEAP no tienen la suficiente robustez en cuánto a experiencia de integración y puede ocurrir que presenten falencias en ese aspecto. Para el caso de soluciones móviles globales, este podría ser un factor decisivo en favor de un proveedor MEAP más relacionado con soluciones empresariales globales.

7.Longevidad del vendedor. ¿Cuánto tiempo tiene el vendedor MEAP en el negocio? Muchos vendedores están en modo startup sin ninguna garantía de que van a quedarse. La industria es volátil, las fusiones y adquisiciones son probables. La elección de un proveedor con una historia más estable asegurará que la plataforma que elegida se mantenga en el futuro y permita acompañar la evolución, pero a la vez, una nueva solución generalmente proveerá mecanismos más innovadores y más disruptivos en cuánto a soluciones implementadas.

8.Estado financiero del vendedor. ¿El proveedor proporcionará sus estados financieros? ¿ Está el proveedor certificado o implementa estándares tradicionales ?   Para algunas soluciones particulares, puede ser necesario que todos los productos involucrados, incluyendo el MEAP, sean compliance con ciertas normativas internacionales de seguridad y calidad.

9.Estrategia de la compañía. ¿El proveedor MEAP tiene objetivos diferentes de los del proveedor de software independiente que la adquirió? Esta problemática se ha presentado en los últimos tiempos con grandes empresas que han salido a cazar startups más pequeños para usarlos de base para sus propios  productos MEAP.  Si la empresa matriz adquirió la plataforma MEAP para servir a las necesidades de su base de clientes más grande, habrá que estudiar los propósitos cruzados de sus necesidades. Uno de los vendedores MEAP más conocidos es sólo una pequeña parte de un gran proveedor de ERP, por ejemplo.

10.Hoja de ruta y visión de integridad. ¿El proveedor MEAP tiene una estrategia coherente para los sistemas empresariales, aplicaciones móviles y la nube? ¿Puede el proveedor asegurar que todas estas soluciones puedan basarse en la misma arquitectura orientada a servicios (SOA)? ¿Es la plataforma capaz de tener una composición lógica de la aplicación existente de Java, .NET, COBOL, RPG y otros ambientes? Una buena plataforma MEAP será capaz de aprovechar y facilitar la integración con otros subsistemas y tener una estrategia coherente para la implementación y evolución de la misma.

Centrarse en las preguntas correctas le permitirá hacer una comparación efectiva para evitar caer en un laberinto de programación, caro para desarrollar y casi imposible de mantener. Cuando se trata del cambiante mundo del desarrollo de aplicaciones móviles, la elección de herramientas que faciliten al desarrollador los detalles técnicos subyacentes de los entornos de los heterogéneos dispositivos son hoy, más importantes que nunca.

Referencias:

Excelente artículo: 
Architecting.Mobile.Solutions.For.The.Enterprise.Dino.Esposito.2012


Autor:
Rodrigo Ramele
Baufest Mobile Dev Leader