Contenedores de software VS máquina virtual.
En la actualidad, es difícil tocar el tema de cloud computing sin mencionar a los contenedores de software que a su vez, son tendencia en el sector de TI.
Sin embargo, regresando unos años atrás, con el nacimiento de la virtualización, a medida que el hardware iba creciendo, mejorando, innovando, se cayó en cuenta que el software entonces, no contaba con todas las capacidades y recursos de la máquina física donde se estaba ejecutando, por lo que se crearon los recursos “virtuales” para poder realizar la simulación de hardware base sobre el cual pudiera el software ejecutándose para permitir que varias aplicaciones se corrieran al mismo tiempo, cada una usando una fracción de los recursos de hardware físico al que se tenía acceso.
Esta “simulación” permite compartir recursos, a esto se le llama “virtualización”.
Sin embargo la virtualización no está limitada a las máquinas virtuales ya que la utilizada en ellas es solo de un tipo que se enfoca en habilitar el sistema operativo el cual tiene la ilusión de poseer recursos dedicados a operar.
La otra alternativa de virtualización es a través de los contenedores de software que como ya explicamos qué son en otro artículo, crean la percepción de un ambiente aislado para cada aplicación, a diferencia de la virtualización tradicional donde las aplicaciones se ejecutan en un S.O. virtual donde convive con otras aplicaciones.
Entonces, entendiendo estos conceptos básicos del funcionamiento de ambos, podemos decir que la diferencia entre máquina virtual y contenedores es:
- Una máquina virtual proporciona un hardware virtual como si hubieras construido una PC por componentes y los contenedores de software es una virtualización de todo un kernel y sus drivers sin necesidad de instalar diferentes kernels en diferentes contenedores de software, ya que todos usan el del anfitrión.
- La máquina virtual funciona como un emulador de recursos computacionales virtuales , mientras que los contenedores de software separan procesos, memoria, interfaces, red y sistemas de archivo usando espacios o hosts que puedan estarse ejecutando al mismo tiempo bajo el mismo sistema operativo.
- Los contenedores de software funcionan basados en una imagen que solo se almacena una vez y es compartida entre ellos sin la opción de modificarse para lanzar muchos contenedores de software infinitamente y más rápido, barato y sencillo en cuestión de los recursos usados que lanzar máquinas virtuales.
La nube permite ejecutar servicios en máquinas que no son tuyas con algún proveedor de servicios como Amazon Web Services y pagar on demand, o sea solo por lo que utilizas a través de máquinas virtuales en las cuales puedes instalar contenedores de software para desplegarlos con mayor flexibilidad al configurar la arquitectura de las aplicaciones como de inteligencia artificial, sin tener que pagar extra, encajando perfectamente con el modelo de “microservicios”.