Archivo de la etiqueta: IaaS

Docker como alternativa a la (ya clásica) virtualización

Hace menos de una década asistimos al estallido de la Infraestructura como Servicio (IaaS, Infrastructure as a Service en inglés) por las evidentes ventajas económicas de la llamada Nube: gracias a la virtualización, ese mecanismo mediante el cual un grupo Máquinas Virtuales ejecutan a la vez varios sistemas operativos sobre un mismo hardware, los usuarios de la Nube son capaces de dimensionar dinámicamente sus recursos contratados, adaptándolos a las necesidades puntuales de cada momento del día, y obteniendo total acceso a la configuración software, como si se tratara de su propio servidor físico.

Si bien la utilidad del modelo IaaS sigue siendo incuestionable, dicho modelo puede ser técnicamente pesado e ineficiente cuando se usa como base para modelos de Plataforma como Servicio Software como Servicio (PaaS y SaaS, respectivamente). Muchas veces se usan máquinas virtuales como soporte para aplicaciones relativamente ligeras, lo que implica empaquetar sistemas operativos completos más sus librerías genéricas. Además, arrancar una aplicación puede llegar a ser un proceso lento, puesto que implica arrancar el sistema operativo completo y sus servicios asociados.

Captura de pantalla 2014-10-20 a las 17.30.47

Docker nace en parte como alternativa a las máquinas virtuales, substituyendo éstas por contenedores mucho más ligeros que tan sólo empaquetan las aplicaciones a distribuir y las librerías que necesitan. El papel del hipervisor, la capa que gestiona cómo y cuando acceden las máquinas virtuales al hardware, se substituye por el motor de Docker.

Captura de pantalla 2014-10-20 a las 17.30.57

¿El resultado? Pasamos de máquinas virtuales que podían llegar a ocupar varios GigaBytes en disco a contenedores que en la mayoría de casos ocupan unas decenas de MegaBytes (con las consiguientes ventajas a la hora de ser transferidos por Internet). Por otra parte, al eliminar pesadas capas software, con Docker obtenemos más ligereza, lo cual es de agradecer cuando requerimos alta responsividad y escalabilidad. Y por último, el proceso de elasticidad mediante el cual obtenemos o dejamos recursos a medida que los necesitamos es todavía más dinámico, puesto que arrancar nuevos contenedores es siempre más rápido que cargar una máquina virtual completa.