Hoy en día, hay un gran revuelo sobre la contenerización y Docker. ¿Qué es exactamente Docker y cómo se relaciona con la contenedorización? ¿Cuáles son beneficios de utilizar Docker? ¿Por qué Docker se hizo tan popular? ¿Cuáles son las estadísticas y los estudios de casos exitosos relacionados con Docker? En este artículo responderé todas estas preguntas.

 

¿Qué es Docker y cómo se relaciona con la contenerización ? 

 

La ejecución de aplicaciones en contenedores en lugar de máquinas virtuales está ganando impulso en el mundo de IT. La tecnología está considerada como una de las de más rápido crecimiento en la historia reciente de la industria del software. En su esencia se encuentra Docker, una plataforma que permite a los usuarios empaquetar, distribuir y administrar aplicaciones dentro de contenedores. En otras palabras, es un proyecto de código abierto que automatiza la implementación de aplicaciones dentro de contenedores de software.


Utilizar Docker realmente facilita la creación, implementación y ejecución de aplicaciones mediante el uso de contenedores. Y los contenedores permiten a un desarrollador empaquetar una aplicación con todas las partes que necesita, como bibliotecas y otras dependencias, y enviarla en un solo paquete. Al hacerlo, el desarrollador puede estar seguro de que la aplicación se ejecutará en cualquier otra máquina Linux, independientemente de las configuraciones personalizadas que la máquina pueda tener que puedan diferir de la máquina utilizada para escribir y probar el código.

 

Utilizar Docker: estadísticas

 

  • 2/3 de las empresas que prueban Docker, lo adoptan. La mayoría de las compañías que adoptaron Docker ya lo hicieron dentro de los 30 días posteriores al uso inicial de la producción, y casi todos los restantes se convierten dentro de los 60 días.
  • La adopción de Docker real aumentó un 30% en un año.
    Adopta 5 veces su contenedor. Docker adopta aproximadamente 5 veces la cantidad de 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

 

Popularidad y beneficios de utiliar Docker 

 

¿Por qué las grandes compañías como ING, Paypal, ADP y Spotify utilizan Docker? ¿Por qué la adopción de Docker está creciendo tan rápido? Vamos a cubrir las principales ventajas de Docker para comprenderlo mejor.

 

Retorno de la inversión y ahorro de costos
El mayor impulso de la mayoría de las decisiones de gestión al seleccionar un nuevo producto es el retorno de la inversión. Cuanto más una solución pueda reducir los costos y, al mismo tiempo, aumentar las ganancias, mejor será una solución, especialmente para las grandes compañías establecidas que necesitan generar ingresos estables a largo plazo.
En este sentido, Docker puede ayudar a facilitar este tipo de ahorro al reducir drásticamente los recursos de infraestructura. La naturaleza de Docker es que se necesitan menos recursos para ejecutar la misma aplicación. Debido a los requisitos de infraestructura reducidos que tiene Docker, las organizaciones pueden ahorrar en todo, desde los costos del servidor hasta los empleados necesarios para mantenerlos. Docker permite que los equipos de ingeniería sean más pequeños y más efectivos.

 

Estandarización y productividad
Los contenedores Docker garantizan la coherencia en múltiples ciclos de desarrollo y liberación, estandarizando su entorno. Una de las mayores ventajas de una arquitectura basada en Docker es en realidad la estandarización. Docker proporciona 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 de paridad 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.

Como mencionamos, los contenedores Docker le permiten realizar cambios en sus imágenes Docker y la versión los controla. Por ejemplo, si realiza una actualización de componente que rompe todo su entorno, es muy fácil retroceder a una versión anterior de su imagen Docker. Todo este proceso puede probarse en unos minutos. Docker es rápido, lo que le permite realizar repeticiones rápidamente y lograr redundancia. Además, el lanzamiento de imágenes Docker es tan rápido como ejecutar un proceso de máquina.

 

Eficiencia de CI
Docker te permite construir una imagen de contenedor y usar esa misma imagen en cada paso del proceso de implementación. Una gran ventaja de esto es la capacidad de separar los pasos no dependientes y ejecutarlos en paralelo. El tiempo que lleva desde la construcción hasta la producción puede acelerarse notablemente.

 

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 Docker, significa que tus imágenes se ejecutan igual sin importar en qué servidor o en qué computadora portátil se ejecutan. Para tus 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 tu infraestructura de producción será más confiable y más fácil de mantener.

 

Simplicidad y configuraciones más rápidas
Uno de los beneficios clave 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.

 

Despliegue rápido
Docker logra reducir la implementación a segundos. Esto se debe al hecho de que crea un contenedor para cada proceso y no arranca un sistema operativo. Los datos se pueden crear y destruir sin preocuparse de que el costo de volver a hacerlo sea más alto que asequible.

 

Despliegue continuo y pruebas
Si necesita realizar una actualización durante el ciclo de lanzamiento de un producto, puede realizar fácilmente los cambios necesarios en los contenedores Docker, probarlos e implementar los mismos cambios en sus contenedores existentes. Este tipo de flexibilidad es otra ventaja clave del uso de Docker. Docker realmente le permite construir, probar y lanzar imágenes que pueden implementarse en múltiples servidores. Incluso si hay un nuevo parche de seguridad disponible, el proceso sigue siendo el mismo. Puede aplicar el parche, probarlo y lanzarlo a la producción.

 

Plataformas multi-nube
Uno de los mayores beneficios de Docker es la portabilidad. 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, por ejemplo, a VirtualBox, logrando una coherencia y funcionalidad similares. 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.

 

Aislamiento
Docker garantiza que sus aplicaciones y recursos estén aislados y segregados. Docker se asegura de 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. Docker te ayuda a garantizar la eliminación de aplicaciones limpias 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, utilizar Docker también asegura 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.

 

Seguridad
Desde un punto de vista de seguridad, utilizar Docker 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.

 

Historias de éxito de Docker 

Miremos las historias de éxito de compañías conocidas, que implementaron y empezaron a utilizar Docker y estamos muy contentos con eso.

 

ADP Caso Práctico

ADP es una de esas compañías que usa Docker para administrar mejor su infraestructura de aplicaciones. ADP es el mayor proveedor mundial de servicios de recursos humanos basados ​​en la nube. Desde la nómina hasta los beneficios, ADP maneja los recursos humanos para más de 600,000 clientes, lo que causó un desafío en términos de seguridad y escalabilidad.
Para resolver el problema de seguridad, ADP empezó a utilizar Docker Datacenter. Docker Content Trust permite que su equipo de operaciones de IT firme imágenes y se asegure de que solo se ejecute en binario el binario firmado. También realizan escaneo automático de contenedores. El uso de múltiples Registros de confianza de Docker les permite crear un flujo de trabajo de confianza progresivo para el proceso de desarrollo de sus aplicaciones.
Para resolver el problema de escalabilidad, la empresa confía en Universal Control Plane / Swarm. Swarm le da a tu equipo la habilidad de comenzar primero pequeño y tener cada aplicación compuesta de muchos enjambres Docker de motor pequeños en lugar de un enjambre por aplicación. Luego, los enjambres se fusionarán con el tiempo, se harán más grandes y al final cada aplicación tendrá su propio enjambre. Un día, un enjambre podría abarcar toda la infraestructura pública y privada y en todas las aplicaciones. Esto permitirá que la empresa tome la mejor decisión financiera para la empresa. Con los contenedores Docker, ADP planea contenerizar las partes más dinámicas de sus aplicaciones primero, facilitando tu cambio y reimplementación en el futuro, dejando las otras áreas de la aplicación para más adelante. La containerización con Docker permite a ADP tener una estrategia híbrida. Tendrán una mezcla de contenedores grandes y pequeños para cualquier aplicación, lo que crea un camino evolutivo hacia los micro servicios.
La visión y el objetivo de ADP es llegar a microservicios, pero la realidad es que ninguna compañía llegará allí de la noche a la mañana. No todas las aplicaciones se fabricarán con la misma velocidad y la plataforma debe ser flexible para adaptarse a una variedad de arquitecturas de aplicaciones. Ahora, al aislar lentamente los servicios en contenedores separados, ADP puede crecer lentamente en una arquitectura de microservicios utilizando Docker, en lugar de hacerlo todo de la noche a la mañana.

 

Spotify

Un servicio de música digital con millones de usuarios está ejecutando una arquitectura de microservicios con hasta 300 servidores por cada ingeniero en el personal.
El mayor punto de dolor que experimentó Spotify al administrar una cantidad tan grande de microservicios fue la cartera de implementación. Utilizar Docker para Spotify supuso poder pasar el mismo contenedor a través de su canal CI / CD.
Desde el desarrollo hasta la prueba y la producción, pudieron asegurarse de que el contenedor que pasó el proceso de compilación y prueba era exactamente el mismo contenedor que estaba en producción.
Ahora la compañía puede garantizar que todos tus servicios se mantengan en funcionamiento, proporcionando una excelente experiencia de usuario para sus clientes. También construyeron una nueva plataforma llamada Helios basada en utilizar Docker para desplegar sus contenedores en toda su flota o servidores. Mantener tu ecosistema de desarrollo.

 

ING


Ahora, ING puede moverse más rápido con tu tubería de CD ejecutándose en contenedores Docker. Las áreas clave aceleradas son el aprovisionamiento de servidores de compilación, las pruebas de aprovisionamiento y publicación, la automatización de la implementación y el entorno de pruebas de integración funcional en tus 180 equipos. Además, los niveles cada vez más altos de automatización estaban empezando a afectar sus recursos de infraestructura y utilizar Docker ayudó a reducir en gran medida esa utilización y, en última instancia, los costos elevados, especialmente en algunos de tus mayores esfuerzos de desarrollo.


Como conclusión, quiero decir que los contenedores Docker comparten el sistema operativo para que se ejecuten como procesos aislados independientemente del sistema operativo host. Como Docker admite con orgullo, esto significa que sus contenedores pueden “ejecutarse en cualquier computadora, en cualquier infraestructura y en cualquier nube”. La portabilidad, flexibilidad y simplicidad que esto permite, es una razón clave por la que Docker ha sido capaz de generar un impulso tan fuerte. Somos grandes admiradores de Docker en Apiumhub y creemos que seguirá creciendo.

¡No olvides suscribirte a nuestro newsletter mensual para recibir las últimas noticias en el mundo del software!

 

Si te gustó este artículo sobre como utilizar Docker, te puede gustar:

 

Los beneficios de la tecnología Scrum 

Beneficios de la tecnología Agil

Metodo Kanban Principios y Ventajas 

Beneficios de la integración contínua

¿Porque debería usar Docker en mi proyecto de desarrollo?

Beneficios de la pruebas unitarias

La importancia de las retrospectivas en la metodología Ágil 

Los beneficios de TDD