Hemos cambiado el modo en el que consumimos las aplicaciones software. Si queríamos utilizar un software lo instalábamos a partir de un CD y pagábamos la licencia correspondiente.
Hoy en día, sin embargo, contamos con infinitas posibilidades para acceder a ellos de manera online pagando solo por el uso que le damos o, si utilizamos una versión más limitada, incluso gratis. Este cambio de modelo de negocio, de licencias a pago por uso, viene dado por la llamada computación en la nube o Cloud Computing.
De acuerdo con el NIST, Instituto Americano de Estándares, Cloud Computing es un modelo para ofrecer acceso ubicuo y bajo demanda a un conjunto compartido de recursos computacionales (redes, servidores, almacenamiento, aplicaciones y servicios) configurables que pueden ser rápidamente aprovisionados y retornados con un mínimo esfuerzo de gestión e interacción con el proveedor del servicio.
Para los desarrolladores de aplicaciones software este nuevo modelo de negocio implica asimismo cambios en la manera en la que desarrollan y provisionan el software. La compartición de recursos computacionales implica por ejemplo, cambios en la arquitectura. La escalabilidad conlleva no solo modificaciones en esta sino posiblemente también en las bases de datos, que ahora deberán incorporar mecanismos para crecer automáticamente.
Otra cuestión a la que se enfrentan los desarrolladores es dónde desplegar esa aplicación, es decir, en qué proveedor. ¿Es mejor seleccionar uno público como Amazon, Azure u otros? o ¿llevarlo a cabo en una nube privada? ¿Y por qué no desplegar cada componente de la aplicación siguiendo una arquitectura de micro-servicios en múltiples proveedores Cloud con un enfoque multi-cloud que permita aprovechar lo mejor de cada proveedor?
Recientes eventos, como el sucedido con el servicio S3 de Amazon, nos llevan a pensar que quizá esta última sea la mejor opción: buscar una arquitectura multi-cloud y dinámicamente adaptable en función de determinadas métricas como el rendimiento, cumplimiento con la legalidad o el nivel de calidad del servicio.
Los retos a los que se enfrentan entonces los desarrolladores de estas aplicaciones multi-cloud no solo tienen que ver con los intrínsecos del desarrollo de software como la calidad del código, sino también con la selección del proveedor Cloud más adecuado para ese micro-servicio, la negociación y gestión de estos múltiples proveedores, la optimización de la aplicación, la integración y despliegue continuos y la búsqueda de una adaptación dinámica y (semi) automática. Una posible solución para la selección del proveedor más adecuado es un intermediador o broker de servicios que además permite gestionar múltiples proveedores desde una única interfaz facilitándole al proveedor de la aplicación Cloud estas actividades.
Por otra parte, para la integración y despliegue continuos la tendencia actual es adoptar un enfoque DevOps: unir los entornos de desarrollo (development) y de operación (operations) facilitando la comunicación entre los miembros de hasta ahora dos equipos independientes y con escasa comunicación, soportado por herramientas de calidad e integración continua como Jenkins o Maven que siguen la filosofía de las metodologías ágiles.
DevOps permite a las empresas que quieren aprovechar las capacidades que ofrece la nube, tanto si el software está desplegado en una como si lo está en múltiples nubes, ofrecer al cliente continuamente la versión más actualizada y con mejores garantías de calidad sin interrumpir el servicio.