More

    ¿Por qué tu empresa necesita los contenedores?

    En anteriores ocasiones hemos hablado de los contenedores, pero para asentar conceptos, decir que los contenedores son máquinas virtuales que no incluyen una copia completa del sistema operativo (Windows, Linux) sino que comparten el sistema operativo del anfitrión sobre el que se ejecutan.

    Esto hace que sean mucho más ligeras que las tradicionales, tanto en consumo de recursos como en tiempo de arranque, hasta el punto de que hacen viable (y conveniente) el uso de nuevas arquitecturas como los microservicios, en los que cada función de mi programa se aloja en contenedores independientes.

    Con la asistencia de elementos orquestadores como Kubernetes, facilitan el diseño y despliegue de las aplicaciones distribuidas y autoescalables que demanda Internet.

    El paso de entornos físicos a virtuales fue relativamente directo y sencillo a nivel conceptual

    1 servidor físico = 1 máquina virtual

    Pero aprovechar las ventajas de la tecnología de contenedores requiere rediseñar las aplicaciones, las plataformas e incluso la configuración de los equipos de desarrolladores (DevOps, microservicios). Sin embargo, todo parece indicar que merecerá la pena: los contenedores representan el sistema operativo del futuro.

    Dificultades de la virtualización

    Una máquina virtual encapsula todo lo que antes se instalaba en un servidor, es decir, el sistema operativo, los controladores, las librerías, los parches y por último las aplicaciones.

    Esto significa que dentro de una máquina virtual hay muchísimas cosas, y por eso son pesadas, consumen recursos de almacenamiento y memoria y tardan en arrancar y proporcionar los servicios que necesitamos.

    Además, hay mucha redundancia, si, por ejemplo, se tienen 10 servidores virtuales con Windows Server se ejecutan en memoria 10 copias de Windows Server y cada una de ellas consume recursos y cada una requiere el mismo mantenimiento que un servidor físico (configuración, actualización, parcheado, etc). Se gana mucho en agilidad respecto a un entorno de hardware, pero, ¿se podría mejorar todavía más?

    Aprovechando ciertas características del sistema operativo Linux se desarrolló una tecnología que permitiera afrontar estas dificultades, pero conservando las ventajas de la virtualización.

    Podemos decir que los contenedores son máquinas virtuales ligeras, en el sentido de que contienen solamente las aplicaciones y sus dependencias, y funcionan compartiendo el sistema operativo del anfitrión sobre el que se ejecutan. Esto elimina la redundancia de tener que desplegar múltiples instancias del sistema operativo y permite aumentar la densidad: en el mismo hardware donde antes se levantaban 10 máquinas virtuales ahora se pueden ejecutar 100 contenedores.

    Implicaciones y requisitos de los contenedores

    La mayor densidad de los contenedores y la mayor complejidad de la infraestructura resultante hace que necesitemos de nuevas herramientas y tecnologías para la administración de estos entornos, y que debamos poner foco en la automatización para poder gestionar de forma adecuada y ágil todos los procesos de IT.

    Las características de los contenedores favorecen la creación de aplicaciones divididas en núcleos de funcionalidad independientes y conectados entre sí con ayuda del orquestador, de forma que el escalado pueda ser automático y granular.

    Los programadores tienen ahora una mayor garantía en cuanto a la correcta ejecución de sus aplicaciones porque los contenedores de su portátil serán los mismos que vayan hasta el entorno de producción, tanto local como en la nube.

    Tienen también mayor independencia porque pueden especificar los requisitos de sus aplicaciones en pequeños ficheros de texto y automatizar la publicación de sus cambios sin requerir la intervención manual del personal de operaciones.

    Lo importante es la funcionalidad publicada (API) de cada módulo o servicio así que mientras se mantenga estable se puede utilizar el lenguaje de programación más conveniente y eso se traduce en mayor variedad de perfiles y conocimientos en los equipos de programación.

    De máquina virtual a contenedor

    El paso de hardware a máquina virtual puede ser conceptualmente sencillo e incluso se podría hacer automáticamente con las herramientas adecuadas, pero para aprovechar a fondo las ventajas de los contenedores es necesario rediseñar las aplicaciones, pasar de diseños monolíticos a redes de microservicios encapsulados en contenedores.

    El cambio de filosofía, las dificultades y riesgos de rediseño de aplicaciones críticas y la curva de aprendizaje de este paradigma han llevado a un ciclo de adopción lento y sus muchas ventajas tardarán en hacerse aparentes para las empresas menos maduras tecnológicamente.

    Contenedores: el futuro

    Todos los proveedores de servicios de nube ofrecen soporte de contenedores, y esto da una indicación clara de que no se trata de una moda pasajera.

    Las empresas de desarrollo necesitarán reconvertir y reestructurar sus equipos de programadores para aprovechar esta nueva agilidad en la creación de las complejas aplicaciones listas para la nube que requiere el mercado actual, y el soporte de estas nuevas aplicaciones requerirá conocimiento de las plataformas y de las nuevas herramientas de su ecosistema, así que el nuevo paradigma afecta a todos los proveedores de servicios técnicos.

    Hay abundantes oportunidades de formación, migración, integración y mantenimiento, tanto de infraestructuras locales como en la nube, y esperamos que contéis con GTI para ayudaros a aprovecharlas.

    Pablo Hernandez GTI

    Artículo escrito por Pablo Hernández Ramiro, Ingeniero de Sistemas en GTI Software & Networking

    Últimos artículos

    Artículos relacionados