Frecuentemente comparamos entre sí, máquinas virtuales (VMs) y containers que generan dudas hasta entre los mismos profesionales de TI.
La virtualización trajo innumerables beneficios para el mundo de los negocios y hoy es una tendencia definitiva. Nuevos recursos están siendo cada vez más disponibles para actuar en ese contexto y con la rapidez con que surgen, generan dudas hasta entre los mismos profesionales.
Es lo que sucede entre el concepto de máquinas virtuales (VMs) y containers. Frecuentemente comparados entre sí, las dos tecnologías resuelven problemas diferentes de forma semejante. La popularidad de los containers es creciente y el recurso está entre las principales tendencias que despuntaron en 2016. De esa forma, surgen muchas dudas sobre su uso.
¿Los containers sustituirán a las VMs?, ¿Son seguros?, ¿Hacen lo mismo que las VMs?, ¿VMs y containers pueden coexistir en el mismo ambiente?
Para responder estas y otras dudas, acompañe algunos puntos sobre el uso de las dos tecnologías:
1- Virtualización como base
Ambas tecnologías son métodos de virtualización, pero actúan en “capas” distintas. Una Máquina Virtual significa que un disco rígido virtual fue creado, con el uso de un software específico, dentro de un ambiente físico.
Las máquinas virtuales, por tanto, operan de forma independiente y esto es una gran ventaja de ese modelo: poder usar aplicaciones y programas sin depender del sistema virtual diferente que tiene en el disco físico. Las VMs permiten crear un ambiente virtual diferente, dentro del que ya existe, quedando libre para utilizar los programas que necesita en un misma máquina.
Otra ventaja del modelo es que no es necesario crear reparticiones en HD para correr múltiples sistemas. El disco rígido físico permanece intacto y listo para probar, crear y correr cualquier aplicación en el ambiente virtual, los recursos del dispositivo son guardados. Con los nuevos software disponibles para optimizar ese ambiente, las funcionalidades como la gestión de ambiente de máquinas virtuales permite una disponibilidad en escala: es posible especificar cuánto recurso físico en cada ambiente virtual se utilizará y hasta aumentar gradualmente en caso de necesidad. El container es una sistema operacional virtualizado que divide un sistema operacional en ambientes menores. Varios containers pueden ser ejecutados en un único sistema operacional, pues este es únicamente un proceso en ejecución en un kernel (Básicamente, el núcleo, parte principal del sistema de operaciones del computador que tiene como función conectar el software al hardware, garantizando la comunicación eficaz entre los recursos del sistema) compartiendo entre todos los otros containers.
Vale recordar que el concepto de container no es nuevo, pero el Docker se presentó como una solución innovadora, trayendo diversos servicios y nuevas facilidades que dejaron a ese modelo mucho más atractivo.
De esa forma, la principal diferencia entre los dos modelos, que utilizan el concepto de virtualización, es que los containers virtualizan el hardware y así varias instancias del sistema operacional pueden ser ejecutadas en un mismo servidor físico. Por su vez, la VM tiene un sistema operacional exclusivo y es administrada por separado.
2- Portabilidad
Una gran ventaja del container es la posibilidad de crear servicios y códigos independientes, que pueden ser movidos sin dificultades entre maquinas y ambientes. Son portables, más eficaces y rápidos de implantar y, por supuesto, son cada vez más usados en organizaciones que priorizan la entrega continua de software, como DevOps, pues ofrecen a los desarrolladores una condición mucho más deseable en la actualidad: capacidad de desarrollar e innovar rápidamente una vez que es posible escribir un código flexible, pequeño y compartible, perfectamente adecuado al abordaje de microservicio, en la cual el código puede ser implantado de forma modular, en un componente reutilizados y compartidos.
3- Padrones abiertos
La posibilidad de ser ejecutados en casi todos los sistemas operacionales existente, como Linux, Microsoft o cualquier infraestructura de la Nube, ofrece otra ventaja a los containers, que son basados en padrones abiertos. Ya las VMs no tienen la misma adaptabilidad, una vez que sus arquitecturas bloquean su utilización en formatos diferentes de lo que fueron proyectados. Eso quiere decir que sí las maquinas virtuales fueron construidas con la tecnología de un abastecedor no podrán ser ejecutados en otros hypervisores (capas de software entre el hardware y el sistema operacional) y, por ejemplo, necesitarán de un proceso de conversión para sus aplicaciones en caso de proveedores diferentes de la Nube.
4- Disponibilidad
Si la portabilidad está para los containers, la disponibilidad está para las VMs. Las VMs poseen características escalonables y de alto desempeño, siendo la tecnología ideal para la ejecución de varias aplicaciones en varios servidores. Por esos motivos, estas son más estables, ofreciendo mayor seguridad y aislamiento de lo que los containers.
5- Coexistencia
Una gran duda que rodea a los equipos de TI es: adoptar VMs, containers o ¿Es imposible utilizar los dos modelos?. Como fue dicho, las tecnologías tienen papeles diferentes, pero actúan muy bien juntas, complementando necesidades diferentes de las empresas.
Los containers vienen ganando más popularidad para la tarea de desarrollo de aplicaciones en la Nube y, se caracterizan por ser más rápidos. Las empresas están adoptando los containers, visualizando agilizar procesos internos, mejorar la eficiencia de recursos y hasta realizar una mudanza para la Nube. Con los containers, las aplicaciones son desmembradas en microservicios, trayendo nuevos recursos para el mercado sin necesidad de una depuración bastante profunda de código. Por ese motivos, los containers pueden ser implantados sobre VMs. Por ejemplo, promover una amplia disponibilidad de las maquinas, usando los dos métodos es una alternativa bastante eficaz. Basta crear containers dentro de su Maquina Virtual. Así, además de disponibilidad, también será ampliada la administración de los recursos, potencializando los resultados sin recurrir a nuevas inversiones.
6- Seguridad
Cuando el asunto es de seguridad, la adopción de los containers todavía causa preocupación. El container es un poco menos robusto que la Maquina Virtual. Eso quiere decir que las VMs ofrecen más protección al usuario. Otras preocupaciones son la perdida de datos, desempeño y almacenamiento de los containers. En vista de eso, los principales players del mercado están justamente trabajando en herramientas que puedan traer mayor conocimiento y soluciones en relación a esas vulnerabilidades.
La seguridad es una preocupación, así como la perdida de datos, desempeño, almacenamiento y administración. Los principales players del área de containers están escuchando y respondiendo a las preocupaciones de seguridad, adicionando herramientas de verificación que determinen vulnerabilidades conocidas.
7- Diferencia competitiva
Es prácticamente improbable que containers sustituyan a las Maquinas Virtuales. Lo que sucede es que, por las características y usos, el container permite a las organizaciones una mayor competitividad, pues ofrece mayores facilidades en relación a las mudanzas: son portátiles y pueden acelerar el desarrollo de aplicaciones. Una vez más: las tecnologías no son concurrentes y pueden muy bien ser complementarias. Una vez que las VMs virtualizan el hardware, aumentando el potencial de utilización, los containers permiten la portabilidad de aplicaciones. Juntando lo mejor de cada uno, las organizaciones pueden tornarse bastante ágiles para concluir diferentes trabajos.
Fuentes:
http://blog.shi.com/2016/12/07/6-facts-will-clear-confusion-containers-virtual-machines/#.WGqZZfArKUk
http://techfree.com.br/2015/11/container-vs-maquina-virtual/
http://www.uolhost.uol.com.br/academia/noticias/tecnologia/2017/01/05/maquina-virtual-vm-x-containers-diferencas-e-semelhancas.html#rmcl
http://www.ibm.com/developerworks/br/cloud/library/cl-3-ways-to-deliver-cloud-applications-bluemix-trs/
https://www.tecmundo.com.br/macos/1636-o-que-e-kernel-.htm
http://www.gta.ufrj.br/grad/08_1/virtual/OqueohypervisorouVMM(VirtualMachineMonit.html