Como dijo Martin Fink, CTO de Hewlett Packard Enterprise durante la última edición de Discover, cada vez hay más datos, por lo que se requieren más aplicaciones para explotar esos datos, que, a su vez, demandan más datos y más aplicaciones, lo que implica tener más desarrolladores, lo que aumenta los requerimientos en infraestructura… y más administradores para esa infraestructura y esos desarrolladores… y más capacidad energética. Y al final llegas a un punto en el que ya no puedes escalar más. Los contenedores proponen una solución a estos problemas de escalabilidad, seguridad y de la tecnología que hay detrás.
En la actualidad, el 95% de las aplicaciones dentro del contexto corporativo son las denominadas “tradicionales”, que se han diseñado en los últimos cinco o diez años y están preparadas para ejecutarse en una arquitectura tradicional de tres capas (los servidores de back-end, los de aplicaciones y los de front-end).
Normalmente, todo esto estará alojado en un data center que suele ser privado. Esas aplicaciones van a tener que seguir existiendo durante muchos años.Por otra parte están la mayoría de las aplicaciones nuevas que se están desarrollando, que son cloud nativas y funcionan de una manera totalmente diferente en ámbitos como la escalabilidad (se hace de forma horizontal), la tolerancia a fallos o las conexiones con otras aplicaciones, que se hacen vía API mientras que en el mundo tradicional se realizan a través de integraciones con programación. Además, hay que tener en cuenta que, durante mucho tiempo, estas aplicaciones cloud nativas van a tener que estar conectándose a las aplicaciones tradicionales, los data centers en local con los “multi-data centers” en entornos de cloud pública… Por lo tanto, también la red tiene una importancia vital en este nuevo mundo de coexistencia de estos dos modelos. En este contexto están surgiendo nuevos paradigmas como es el caso de los contenedores (Docker), que van mucho más allá de la virtualización tradicional.

Contenedores y Docker
Uno de los anuncios más importantes que hemos realizado recientemente es que todo nuestro portfolio relativo a gestión de infraestructuras, de automatización y de broking de servicios tiene integración nativa con Docker como el estándar más extendido de gestión de contenedores.
Para ponernos en contexto, una de las características que diferencian a las aplicaciones cloud nativas es que necesitan desplegarse de tal forma que puedan escalar automáticamente según las necesidades de ejecución instantáneas. La tecnología que está dando una mejor respuesta a estos procesos de scale-in y scale-out son los denominados contenedores (containers). Docker es una plataforma de código abierto que da cabida al funcionamiento de estos contenedores. Utilizando una definición de 451 Research, se trata de una herramienta capaz de empaquetar una aplicación y sus dependencias en un contenedor virtual que se puede ejecutar en cualquier servidor Linux. Esto propone nuevas cotas de flexibilidad y portabilidad, ya que la infraestructura que está por debajo puede estar en local o puede estar corriendo en una cloud pública, por ejemplo. Docker hace independiente el desarrollo de aplicaciones de la capa de infraestructura. Al definir una máquina virtual se incluye todo lo relativo a recursos, como la cantidad de memoria, capacidades en disco, sistema operativo, base de datos, etc. Esta definición es muy cerrada y se realiza cuando se está desarrollando una aplicación. Por el contrario, Docker propone una fase más allá de la virtualización. Podríamos definirla como la virtualización en tiempo real (en tiempo de ejecución) sobre una máquina física, evitando la necesidad de tener definidas las máquinas virtuales de antemano. Después, si la aplicación cambia, los desasigna y vuelve a asignar los recursos necesarios a partir de la nueva aplicación. Esto permite que no haya que definir de antemano la infraestructura necesaria para que corra una aplicación, sino que en tiempo real y en tiempo de ejecución— esta se va ejecutando en bloques llamados contenedores con todos los recursos necesarios, que crecen y decrecen automáticamente según la capacidad de proceso que necesita.
Aplicación e infraestructura
Por ejemplo, una de las características más interesantes de Docker es que permite separar el ciclo de vida de una aplicación en función de la fase en la que se encuentra (desarrollo, producción, calidad, etc.). Es posible separar la aplicación de la infraestructura sobre la que tiene que correr, de forma que se pueden definir diferentes entornos de ejecución para cada una de las fases de avance de la aplicación. A través de infrastructure as code se pueden realizar llamadas a diferentes aplicaciones que automatizan el despliegue de infraestructura para esa aplicación en diferentes entornos según la fase en la que se encuentre. Por ejemplo, lo normal es que en la fase de preproducción estén en cloud pública —porque supone un menor coste—; sin embargo, en producción, se ubica en un entorno en local para proteger los datos.Aunque la máquina virtual seguirá existiendo, el uso de contenedores propone una respuesta muy interesante para el modelo de desarrollo Agile y aporta un nivel adicional de independencia al área de desarrollo, evitando a TI la necesidad de asignar los recursos cambiantes de las máquinas virtualizadas. De hecho, dentro de un escenario DevOps el uso de contenedores propone interesantes beneficios, ya que ayuda a poner la infraestructura a disposición de los desarrolladores a un coste relativamente bajo en tiempo y recursos.
Soporte para Docker
Además del despliegue físico y el que se realiza en entornos virtuales, la apuesta que hemos realizado por el concepto de contenedores es clara. Al igual que hasta ahora hemos soportado tecnologías como VMware, Hyper-V o KVM, ahora también certificamos nuestra integración con Docker como la plataforma más extendida de containers. De hecho, se han realizado anuncios desde el punto de vista de la infraestructura, almacenamiento o servidores para dar cabida a este nuevo paradigma de virtualización que son los contenedores. Esto afecta también en las diferentes capas de software —tanto de gestión de la infraestructura como de monitorización, de automatización o de cloud— o en lo relativo a los servicios profesionales y de soporte, para que permita el soporte de containers.
Con esta nueva propuesta lo que pretendemos es dar soporte al entorno tradicional y al mundo cloud nativo a través de una infraestructura y una arquitectura híbrida, que incluye todo el portfolio hardware, software y de servicios de la compañía para dar soporte a esta área transformacional.