Las empresas más innovadoras utilizan software para diferenciar sus ofertas de productos y servicios y, cada vez más, el desarrollo de aplicaciones se está moviendo a la nube, como nuevo ecosistema que genera innovación. Esta modalidad es, por definición, distribuida y, por eso, algunos abordan el tema con una solución de código abierto, que abre el camino a utilizar un puñado de aplicaciones, sin tener conocimientos en docenas de herramientas.

Con la capacidad, infraestructura global y flexibilidad de la nube se están desarrollando aplicaciones de alta calidad, y más rápido. Para ello, se precisan tecnologías de microservicios y contenedores, DevOps, Agile y PaaS, y nuevas prácticas de software modernas que incluyan pruebas, aprovisionamiento y despliegue automatizados.

Las aplicaciones distribuidas, entendidas como una arquitectura que permite crearlas a partir de servicios en la nube y/o recursos locales, añaden una capa de complejidad para abordar los diferentes recursos, sistemas, versiones y entornos disponibles. Y, para utilizarlas como una sola aplicación, hay un par de aspectos que está bien recordar:

1.- Parece obvio, pero la aplicación debe crearse como un ente único, aunque esté compuesta de varias tecnologías de nube. Aunque en este punto es recomendable aprovisionar las aplicaciones, sin que eso suponga dominar docenas de herramientas, y administrar su ciclo de vida completo (instalación, actualización y eliminación).

2º.- Se deben poder distribuir de forma tan sencilla como la del resto de aplicaciones que utilizamos a diario en nuestro trabajo. Para lograrlo, ya hay una especificación de formato de paquetes de código abierto (CNAB) que permite administrar aplicaciones distribuidas. Utilizando un solo archivo instalable, es posible aprovisionar de manera fiable los recursos de la aplicación, en diferentes entornos, y administrar fácilmente su ciclo de vida, sin tener que utilizar miles de herramientas.

Al final, el objetivo es lograr una única unidad lógica y definir aspectos operativos de la gestión del ciclo de vida de la aplicación (instalación, actualización, desinstalación, firma y verificación digital de un paquete, incluso cuando la tecnología subyacente no lo admita de forma nativa). De esta forma, es posible atestiguar con una firma el ciclo de vida de ese paquete, y verificar digitalmente que ha alcanzado el estado completo y es posible exportarlo y que reproduzca todas las instancias de forma fiable en otro entorno, o almacenarlas en repositorios para su instalación remota.

Los especialistas en este tema creen, de hecho, que llegará un día en que será tan sencillo instalar una aplicación distribuida completa, que podrá incluso realizarse desde una memoria USB.  Ese es su sueño y algún día quizás pueda ser realidad.