Blog  //  Abril 2017  //  Acompañando al negocio con plataformas Low-Code

Acompañando al negocio con plataformas Low-Code



En los últimos años hemos visto cómo proliferan los productos transformados en servicio que nos proporcionan un acceso rápido y directo a la utilidad que ofrecen (correo electrónico, contenidos multimedia, movilidad, etc.) ocultando la complejidad que encierra la gestión de dicho producto. Todos estos servicios se clasifican en diversas categorías siendo IaaS, SaaS o PaaS las más clásicas.

La categoría de Plataforma como Servicio (PaaS) es un término muy amplio en el que podemos encontrarnos muchos tipos de herramientas, entendiendo por herramienta un componente que aporta soluciones de bajo nivel, generalmente dirigidas a desarrolladores o arquitectos.  En esta categoría encontramos herramientas tan específicas como puede ser un gestor de colas de mensajería, una base de datos gestionada, servicios de codificación de video, etc. y otras más complejas para dar soporte a IoT, BigData o Bots.

Dentro de la categoría PaaS encontramos también las Plataformas para Aplicaciones (Empresariales) como servicios (aPaas) que tratan de proporcionar todo lo necesario para poder construir aplicaciones de una forma sencilla y gestionando el ciclo de vida de las aplicaciones.

En realidad, las plataformas Cloud que ofrecen PaaS (como Amazon, Azure, Google, etc.) también son plataformas para desarrollar aplicaciones, sin embargo, las herramientas que nos ofrecen son de bajo nivel y por lo general requieren de un nivel de conocimiento mayor, ya que a los perfiles de desarrollo hay que añadir los perfiles con experiencia en Cloud. Sin embargo, lo que tratan de solucionar las plataformas aPaaS es precisamente la necesidad de perfiles muy técnicos, dotando de herramientas que facilitan el desarrollo.

Por tanto, el objetivo de estas soluciones es ocultar la complejidad que encierra definir una arquitectura de ejecución, coordinar las herramientas necesarias para gestionar los despliegues entre entornos, minimizar los tiempos de desarrollo proporcionando componentes reutilizables y proporcionar visibilidad sobre el comportamiento de la aplicación.

A estas plataformas, también se las conoce como soluciones Low Code debido a que su entorno de desarrollo requiere menos programación que un desarrollo tradicional, sin embargo, no deben verse como simples generadores de código, sino cómo soluciones extremo a extremo.

Las características generales que podemos encontrarnos con este tipo de plataformas son las siguientes:
  • Proporcionan un entorno de desarrollo integrado, desde el cual se puede construir cualquiera de las partes de la aplicación. El simple hecho de tener todo integrado, desde la presentación (pantallas) hasta la persistencia (acceso a datos) ya proporciona una mejora importante de productividad.
  • Soporte para aplicaciones web (en cualquier formato) y aplicaciones móviles. Actualmente es impensable diseñar una aplicación sin tener en cuenta el canal móvil ya sea a través de desarrollos web adaptados, o a través de desarrollos nativos. Poder desarrollar la aplicación completa permite tener equipos de desarrollo no tan especializados y por tanto, balancear mejor los esfuerzos del equipo en función de la demanda.
  • Gestión de módulos. Cualquier ecosistema de aplicaciones rápidamente tiende a complicarse y es necesaria una buena modularización en componentes que permita no sólo reutilizar el conocimiento, sino controlar las responsabilidades sobre el software.
  • Orientación a procesos. La gran mayoría de las aplicaciones empresariales surgen de la necesidad de coordinar las actividades de distintos tipos de usuarios que desempeñan roles en la organización, así que un buen modelado de los procesos corporativos será fundamental (incluyendo la gestión de tareas de usuarios, el control de deadlines, eventos, etc.)
  • Alta capacidad de integración. Cualquier aplicación de negocio debe integrarse con otras soluciones corporativas. Estas aplicaciones deben resolver fácilmente la integración con otros sistemas, bien mediante servicios web, APIs y otros mecanismos.
  • Control sobre la integridad de la aplicación. Al estar toda la aplicación gobernada sobre un único sistema es posible mantener la integridad de la aplicación. Esta característica es fundamental en contextos muy dinámicos en los que haya cambios de funcionalidad frecuentes, como ocurre en proyectos Agile.
  • Gestión centralizada de las aplicaciones y sus dependencias entre entornos. En contextos empresariales, como el que estamos describiendo, será muy común encontrarnos gestionando varias aplicaciones con dependencias entre módulos con distintas versiones. Una única consola de administración puede facilitar las labores de IT, y si además está accesible vía API, permitirá automatizar e integrar esta gestión con el resto de sistemas corporativos
  • Monitorización de las aplicaciones y los sistemas subyacentes. Es importante para cerrar el ciclo de vida tener acceso a los indicadores que representan la salud de las aplicaciones y la plataforma, y así poder detectar problemas o puntos de mejora.
  • Por último, deben proporcionar mecanismos de extensión que permitan añadir funcionalidades no previstas por la plataforma, aunque sea mediante el desarrollo de código específico. Esto no contradice el espíritu de este tipo de herramientas si se utiliza excepcionalmente.
 
Parece que todo son ventajas sobre este tipo de plataformas, pero como con cualquier otro servicio en la nube, la decisión debe tener en cuenta otros muchos factores, como la dependencia con la solución, tipología de las aplicaciones, los costes de licenciamiento, la reducción real en mantenimiento de aplicaciones, gestión de infraestructura, nuevos perfiles técnicos, etc. 

Delegar en estas plataformas la arquitectura de ejecución y el código de nuestras aplicaciones suele ser una decisión difícil que deben tomar los Arquitectos o Responsables de Desarrollos de las Compañías. Uno de los principales temores encontrados a la hora de valorar este tipo de soluciones es confiar en cómo estas plataformas construyen las aplicaciones.

La duda sobre si una solución genérica puede o no construir mejor software que un desarrollo a medida es natural. Pero debemos tener en cuenta que muchas de las aplicaciones que desarrollamos habitualmente utilizan los mismos patrones de diseño, utilizan arquitecturas diseñadas en capas (datos, servicios, presentación) y cumplen requisitos técnico similares (seguridad, control de sesión, transaccionalidad, etc). Por tanto, estas plataformas deberían verse cómo soluciones sólidas desarrolladas por arquitectos que aplican las mejores prácticas y que cuentan con la experiencia de cientos de aplicaciones (y clientes) soportadas sobre ellas.

En definitiva, se trata de delegar estos aspectos técnicos para dejar de ser ‘core’ de nuestra compañía y centrarnos en lo que realmente nos diferencia, la aplicación de negocio, ayudándonos a poner el esfuerzo en lo relevante y no en el aspecto más técnico. Naturalmente, no es la solución para todas las aplicaciones de una organización, y el ámbito en el que estas plataformas pueden ser una solución sólo puede decidirlo cada compañía, pero es un hecho que este tipo de soluciones irán penetrando en las organizaciones como parte de su estratégica de Transformación ya que encajan bien en sus necesidades: permiten centrar los esfuerzos en lo diferencial (la aplicación), construyendo de forma ágil y con ciclos cortos de entrega.

Bajo este objetivo, BABEL apuesta por plataformas como Outsystems para el desarrollo de aplicaciones. La categoría aPaaS o LowCode sigue siendo amplia así que identificar la plataforma adecuada para cada organización es también una decisión estratégica que puede marcar la diferencia.
 
Comentarios:
Esta publicación no tiene comentarios.
 Security code