A día de hoy, prácticamente la totalidad de las empresas de TI se han visto forzadas a replantearse los costes y valores generados por las tecnologías de virtualización. La premisa es sencilla: consolidar las múltiples aplicaciones, distribuidas en varios servidores habitualmente infrautilizados, en un único servidor, así como obtener importantes ahorros y evitar costes adicionales.
Pero, ¿cuáles son las opciones a la hora de optar por la virtualización de sistemas? En esta ocasión os presentamos dos: las máquinas virtuales y los contenedores.
Las principales características de las máquinas virtuales son:
- Utilizar una tecnología muy compleja, que se define en el núcleo (kernel) del Sistema Operativo.
- Estar disponibles a través de proveedores comerciales o soluciones open source, como KVM o Xen.
- Emular un sistema físico a nivel de hardware: procesador, memoria, unidades de disco, conexiones de red, etc.
- Permitir ejecutar varios sistemas simultáneamente.
Los contenedores se caracterizan por:
- Resolver a priori los problemas típicos de la virtualización de máquinas.
- No requerir de un hipervisor, se integran en el sistema operativo que los aloja.
- El rendimiento del sistema operativo está más optimizado.
- El aprovisionamiento de recursos es más rápido.
- La disponibilidad de instancias de aplicaciones es más ágil.
¿Cuáles serían entonces las ventajas de la virtualización por contenedores frente a las máquinas virtuales?
- Permiten implantar mayor número de aplicaciones en un único servidor que las máquinas virtuales en sistemas On Cloud o Data Centers.
- Solo necesitan un sistema operativo donde alojarse, software de soporte y unos recursos mínimos. Las máquinas virtuales necesitan muchos recursos del sistema para recrear un sistema operativo independiente y todo el hardware que necesite, por lo que la carga del sistema aumenta considerablemente.
- Los contenedores permiten instalar entre dos y tres veces más software que con una máquina virtual.
- Son muy útiles para replicar entornos operativos estables, por ejemplo, entornos de desarrollo, test e implantación.
Problemas de los contenedores
Los contenedores pueden parecer el entorno de virtualización ideal y, sin embargo, no están exentos de problemas. El principal de ellos es la seguridad. El contenedor deja la seguridad en manos del sistema operativo y, por tanto, se debe encapsular al usuario. Una política de permisos incorrecta puede derivar en un sistema vulnerable.
Una forma de encapsular al usuario consiste en definir accesos de “solo lectura” o de “escritura” en ubicaciones definidas, pero esta configuración es manual y requiere bastante trabajo del Administrador del sistema.
La regla básica es “tratar un contenedor como cualquier otra aplicación”, siguiendo tres directrices:
- Quitar todos los privilegios lo más pronto posible.
- Ejecutar los servicios como un usuario regular (no Administrador) siempre que se pueda.
- Tratar al Administrador dentro del contenedor como al Administrador fuera del contenedor.
Otro problema es que cualquiera puede crear contenedores y el origen de los mismos puede ser desconocido. Es muy recomendable verificar su contenido en sistemas independientes del entorno productivo, ya que su contenido puede ser inesperado y pueden hacer que un sistema se convierta en vulnerable.
Un contenedor soluciona la parte descendente del problema, ya que se sabe lo que tiene, pero no soluciona la parte ascendente de las dependencias. Es fácil implantar una aplicación en un contenedor, pero si no es la adecuada la implantación se transforma en una pérdida de tiempo.
La extensión de contenedores puede convertirse en un quebradero de cabeza. Desmenuzar las implantaciones en partes es un método inteligente, pero implica que hay muchas más partes que gestionar. Habrá que establecer un punto de inflexión entre extensión y preocupación.
El objetivo de un contenedor es ejecutar una única aplicación. Cuantas más aplicaciones se adhieran a un contenedor, más necesario se hace usar una máquina virtual.
Un contenedor está diseñado para ejecutar el mismo sistema operativo donde se aloja. Es muy complejo ejecutar aplicaciones diseñadas para un sistema operativo dentro de un contenedor alojado en otro sistema operativo diferente. La razón es que el núcleo del sistema subyacente es distinto. Esta característica puede ser beneficiosa porque evita preocupaciones por las dependencias una vez que la aplicación se ejecute adecuadamente en el contenedor, pero establece límites que la máquina virtual no tiene.
En términos generales, el uso de contenedores está orientado a una sola aplicación, por ejemplo, varias instancias de un motor de base de datos o servicios web, mientras que las máquinas virtuales están enfocadas en implantar sistemas operativos ágilmente para ejecutar múltiples aplicaciones de manera flexible.
El enfoque de uso de estas tecnologías no debe ser exclusivo sino al contrario. La combinación de ambos métodos al usarlos conjuntamente aporta una complementación de virtudes muy beneficiosa.
Si quieres ponerte en contacto con nosotros puedes usar este formulario:
[contact-form][contact-field label=’Nombre’ type=’name’ required=’1’/][contact-field label=’Correo electrónico’ type=’email’ required=’1’/][contact-field label=’Sitio web’ type=’url’/][contact-field label=’Mensaje para Aitana’ type=’textarea’ required=’1’/][/contact-form]Créditos imágenes: 105784187