En el mundo TI la ejecución de aplicaciones en contenedores en lugar de en VMs está cada vez más presentado, siendo una de las tecnologías que más rápido han crecido en la historia reciente del software.
Por otro lado es justo reconocer que si hace unos meses Docker era casi un sinónimo de contenedores en la actualidad (por diversos motivos) hay iniciativas como cri-o a tener en cuenta.
Estadísticas sobre Docker:
· 2/3 de las compañías que empieza a usar Docker, lo adoptan. La mayoría de las compañías que lo adoptaton lo hicieron dentro de los 30 días posteriores al uso inicial de la producción, y casi todos los adoptantes restantes se convierten dentro de los 60 días.
· La adopción de Docker ha subido un 30% en un año
· Los adoptantes aumentan rápidamente sus contenedores: los que adoptan Docker quintuplican la cantidad promedio de contenedores en funcionamiento que tienen en producción entre su primer y décimo mes de uso.
· PHP, Ruby, Java y Node son los principales frameworks de programación utilizados en contenedores
· Las tecnologías Top se ejecutan en Docker.
· Grandes empresas como ING, PayPal, ADP y Spotify siguen usando Docker
Veamos ahora los beneficios de usar contenedores en general y Docker en particular:
1. Retorno de la inversión y ahorro de costes:
La primera ventaja de usar Docker es el ROI.
Cuando más se pueden reducir los costes de una solución más aumentan los beneficios y mejorar es la solución.
En este sentido los contenedores ayudan a facilitar este tipo de ahorro al reducir los recursos de infraestructura, ya que se necesitan menos recursos para ejecutar la misma aplicación.
De hecho con Docker se puede ahorrar tanto en los costes de servidor como en los empleados necesarios para mantenerlos. Docker permite que los equipos de ingeniería sean más pequeños y más efectivos.
2. Estandarización y Productividad
Los contenedores garantizan la coherencia en múltiples entornos, ciclos de liberación. Una de las mayores ventajas de la contenerización es la estandarización, ya que se proporcionan entornos repetibles de desarrollo, construcción, prueba y producción. La estandarización de la infraestructura de servicio en todo el proceso permite que cada miembro del equipo trabaje en un entorno igual al de producción. Al hacer esto, los ingenieros están más equipados para analizar y corregir errores de manera eficiente dentro de la aplicación.
Esto reduce la cantidad de tiempo desperdiciado en defectos y aumenta la cantidad de tiempo disponible para el desarrollo de características.
Los contenedores Docker permiten realizar cambios en las imágenes Docker y controlar la versión de estos, por ejemplo, si realiza una actualización de componente rompe todo un entorno, es muy fácil retroceder a una versión anterior de su imagen Docker. Todo este proceso puede probarse en unos minutos.
Docker le permite construir una imagen de contenedor y usar esa misma imagen en cada paso del proceso de implementación. Un gran beneficio de esto es la capacidad de separar pasos no dependientes y ejecutarlos en paralelo. El tiempo que lleva desde la construcción hasta la producción puede acelerarse notablemente
3. Compatibilidad y Mantenibilidad
Elimine el problema de "funciona en mi máquina" de una vez por todas. Uno de los beneficios que todo el equipo apreciará es la paridad.
La paridad, en términos de contenedores significa que las imágenes se ejecutan igual sin importar en qué servidor o en qué computadora portátil se ejecutan.
Para los desarrolladores, esto significa menos tiempo dedicado a configurar entornos, depurar problemas específicos del entorno y una base de código más portátil y fácil de configurar. La paridad también significa que la infraestructura de producción será más confiable y más fácil de mantener.
4. Simplicidad y configuraciones más rápidas
Uno de los beneficios clave de los contenedores y de Docker es la forma en que simplifica las cosas. Los usuarios pueden tomar su propia configuración, ponerla en el código y desplegarla sin ningún problema. Como Docker se puede utilizar en una amplia variedad de entornos, los requisitos de la infraestructura ya no están vinculados con el entorno de la aplicación.
5. Despliegue rápido
Docker logra reducir el tiempo de despliegue. Esto se debe al hecho de que crea un contenedor para cada proceso y no arranca un sistema operativo.
6. Despliegue continuo y pruebas
Docker garantiza entornos consistentes desde el desarrollo hasta la producción. Los contenedores Docker están configurados para mantener todas las configuraciones y dependencias internamente. Por lo tanto, puede usar el mismo contenedor desde el desarrollo hasta la producción, asegurándose de que no haya discrepancias ni intervención manual.
7. Plataformas multi-nube
Este es posiblemente uno de los mayores beneficios de Docker. En los últimos años, todos los principales proveedores de computación en nube, incluidos Amazon Web Services (AWS) y Google Compute Platform (GCP), han adoptado la disponibilidad de Docker y han agregado soporte individual. Los contenedores acoplables se pueden ejecutar dentro de una instancia de Amazon EC2, instancia de Google Compute Engine, servidor de Rackspace o VirtualBox, siempre que el sistema operativo host sea compatible con Docker. Si este es el caso, un contenedor que se ejecuta en una instancia de Amazon EC2 se puede portar fácilmente entre entornos.
Además, Docker funciona muy bien con otros proveedores como Microsoft Azure y OpenStack, y se puede usar con varios administradores de configuración como Chef, Puppet y Ansible, etc.
8. Aislamiento
Los contenedores garantiza que sus aplicaciones y recursos estén aislados y segregados, asegurando que cada contenedor tenga sus propios recursos que están aislados de otros contenedores. Puede tener varios contenedores para aplicaciones separadas que ejecutan pilas completamente diferentes.
Esto ayuda a la eliminación de aplicaciones ya que cada aplicación se ejecuta en su propio contenedor. Si ya no necesita una aplicación, simplemente puede eliminar su contenedor. No dejará ningún archivo temporal o de configuración en su sistema operativo anfitrión.
Además de estos beneficios, Docker también se asegura de que cada aplicación solo use los recursos que se les han asignado. Una aplicación en particular no usará todos sus recursos disponibles, lo que normalmente llevaría a la degradación del rendimiento o al tiempo de inactividad completo para otras aplicaciones.
9. Seguridad
Y el último beneficio de usar contenedores es la seguridad. Se garantiza que las aplicaciones que se ejecutan en contenedores estén completamente segregadas y aisladas entre sí, lo que le otorga un control total sobre el flujo y la administración del tráfico. Ningún contenedor Docker puede ver los procesos que se ejecutan dentro de otro contenedor. Desde un punto de vista arquitectónico, cada contenedor obtiene su propio conjunto de recursos que van desde el procesamiento hasta las pilas de la red.
[…] Podríamos definir un Contenedor como un conjunto de uno o más procesos aislados del resto del sistema; todos los ficheros necesarios para ejecutar un contenedor se proveen desde una imagen, de modo que estas imágenes son portables entre entornos. (podéis leer algo más sobre las ventajas de los contenedores en este post) […]