Que es este mundo de contenedores?

Con el devenir de las nubes publicas y los servicios IaaS, PaaS, SaaS empezó a sonar cada vez mas el concepto de contenedores, pero que son?

Tal vez, muchas personas ya los conocen hacen muchos años debido a que es un concepto que proviene de Linux, pero para mucha gente (Como es el caso de este servidor) que proviene del mundo Windows, es un concepto nuevo. Por lo que la intención de este post, es explicarles de la mejor manera posible como es que van a cambiar la infraestructura de las empresas tal y como las conocemos hoy en día.

Introducción a contenedores:

Un contenedor es una unidad estandard que contiene el código y todas las dependencias para que una aplicación pueda correr de manera rápida y de manera segura desde un entorno a otro.

En 2013, fue lanzado un proyecto Open Source llamado Docker Engine el cual aprovecho los conceptos de cgroups y namespaces del mundo de linux lo cual lo hizo mas sencillo de utilizar y logro estandarizar el concepto de contenedores de manera que las aplicaciones que corren dentro del mismo sean completamente portables.

Estos contenedores comparten el mismo Kernel de sistema operativo, por ende no requieren uno por aplicación, reduciendo el desperdicio de recursos y costos de licencia.

Por ultimo, son seguros ya que cada contenedor se encuentra aislado del resto.

Tanto los contenedores, como las maquinas virtuales tradicionales, funcionan de manera muy similar en lo que respecta a locación de recursos, a continuación les dejo un ejemplo comparativo:

Como pueden observar, los contenedores son una abstracción del código y las dependencias, por lo que múltiples contenedores pueden correr en la misma maquina y compartir el mismo Kernel de Sistema Operativo con otros contenedores de manera aislada entre ellos en diferentes procesos, a diferencia de la infraestructura de hipervisores tradicional, donde cada proceso es una maquina virtual con su propio kernel de Sistema Operativo.

Con este nuevo concepto es donde se puede apreciar la cantidad de espacio en disco que se puede ahorrar, el costo de licenciamiento y la optimización de performance, sin contar la portabilidad que se logra de las aplicaciones con el fin de poder armar entornos híbridos entre nuestro datacenter y la nube, o incluso entre nubes.

El paradigma que trae este concepto es que tanto las áreas de desarrollo y arquitectura van a tener que trabajar mas de la mano para poder re diseñar las aplicaciones con el fin de lograr que sean aptas para funcionar sobre este tipo de plataformas, y es aquí donde toman fuerza los conceptos de “Metodologías Ágiles” como Scrum, sobre el cual haré un post dedicado ya que es un tema a parte, y el concepto de “Microservicios” donde se plantea una re arquitectura de las aplicaciones y procesos.

Por ultimo, se suma la problemática de como se gestionan estos contenedores, ya que en definitiva, son como hipervisores Standalone. Para este punto, aparece Kubernetes para realizar esta centralización en la administración, junto con muchas otras funcionalidades que iremos abarcando mas adelante.

Espero poder haber desasnado a mas de uno que tenia sus dudas! No dejen de visitar el sitio para mas información!

Leave a Reply

Your email address will not be published. Required fields are marked *