Ventajas y beneficios de usar Docker para desarrollo a nivel empresarial

Qué es docker

Simplificando mucho la definición, podríamos decir que Docker es una especie de máquina virtual, pero muy ligera.

 


"Docker simplifica y acelera su flujo de trabajo, al tiempo que brinda a los desarrolladores la libertad de innovar con su elección de herramientas, conjuntos de aplicaciones y entornos de implementación para cada proyecto".

HTTPS://WWW.DOCKER.COM/WHY-DOCKER  

 


 

Haciendo hincapié en la cita “Docker simplifica y acelera el flujo de trabajo”, podemos afirmar que Docker ahorra tiempo. Es por eso que el número de empresas que despliegan aplicaciones en Docker se ha incrementado tanto en este último año.

Estos son algunos de los clientes que usan Docker en sus productos:

  • Adobe
  • AT&T
  • Netflix
  • Palo Alto Networks
  • Paypal
  • University of Calgary
  • Verizon
  • Yale

 

 

Docker en números

En 2020 el uso de Docker sigue incrementándose, tanto en las comunidades de desarrolladores como en el número de empresas que lo utilizan.

 

Uso de Docker

  • 242 mil millones de pulls en el Hub (cada año aumenta unos 5,5 mil millones)

  • siete millones de repositorios en su Hub

  • siete millones de usuarios totales

 

CONTENEDORES MÁS POPULARES

  • Nginx
  • Httpd
  • Postgres
  • Redis
  • Ubuntu
  • MySql
  • Jenkins

 

 

Ventajas y beneficios

Retorno de inversión

Como en toda configuración, al principio en Docker también hay que dedicar tiempo para preparar los servidores y adaptar las aplicaciones para que funcionen. Pero ese tiempo no cae en saco roto, ya que según los siguientes puntos podrás ver que en cada proyecto supone un ahorro de tiempo en TODOS los departamentos.

Por tanto, si podemos hacer lo mismo pero en menos tiempo, ya es un motivo fundamental para utilizar Docker en tu empresa. A eso súmale más seguridad y menos costes de hardware. Efectivamente, esa inversión al poco tiempo te viene de vuelta.

 

Más velocidad

Al no tener que arrancar un sistema operativo como ocurre en una VM, un contenedor Docker es capaz en arrancar de forma inmediata o en cuestión de segundos.

 

Aislamiento y seguridad

Si se configura, cada despliegue (que suele contener uno o varios contenedores) puede estar en una subred aparte de forma aislada.

En el caso que entre algún tipo de virus o malware, solo afectará a esa estructura de contenedores, y no al resto. Utilizando Docker-Compose cada despliegue ya se realiza de forma automática en una subred independiente.

 

Posibilidad de probar el mismo código en diferentes entornos en segundos (cambio de versión de TOMCAT, JAVA, PHP, etc.)

El mismo código puede ser compartido entre diferentes contenedores, y cada contenedor puede tener una versión diferente de, por ejemplo, un apache.

De esta manera, sabemos cómo reacciona el mismo código al cambiar ese factor de nuestro entorno. Esto simplifica el seguimiento de compilaciones, la ramificación y el control de versiones para aplicaciones multiservicios, mientras itera de forma independiente el código sin romper la aplicación.

 

Facilita el testing

Docker puede hacer que las pruebas de control de calidad sean más fáciles, rápidas y efectivas. Los contenedores se pueden configurar para que solo contengan una parte o partes de toda la configuración del entorno.

De esta forma se puede construir pequeños subconjuntos de pruebas exploratorias y ser más efectivos para encontrar el problema. A todo esto hay que sumarle que el contenedor puede tener exactamente la misma configuración que el entorno de producción, por lo que nos evitaríamos sorpresas desagradables.

 

MENOS COSTES PARA LOS TESTS

Al poder lanzar varias pruebas de forma simultánea, e incluso con diferentes configuraciones en un mismo servidor, no es necesario tener varios servidores con diferentes configuraciones. Por este motivo, los costes disminuyen.

 

MENOS ESPACIO DE ALMACENAMIENTO PARA DIFERENTES SISTEMAS OPERATIVOS

Cada contenedor tiene su propio sistema operativo, menos el Kernel y algunas librerías de hardware que son “heredadas” del hierro, es decir, todo estos cálculos de arranque no existen porque el sistema operativo principal ya lo ha hecho.

Con ello, se ahorra archivos (ocupa menos espacio) y se ahorra tiempo al lanzar cada contenedor.

 

PORTABILIDAD

Los contenedores se crean bien por líneas de comando, o bien mediante un archivo de plantilla (Docker-Compose). Igualmente todo funciona bajo Docker. Es decir, si lanzamos el mismo comando o usamos la misma plantilla (teniendo en cuenta los volúmenes y un par de detalles propios del hierro, como la RAM y la CPU, si se especifica), el contenedor que funciona en la máquina A será exactamente igual que el contenedor que funciona en la máquina B. Por tanto, no habrá ninguna variación entre los entornos de desarrollo, pre-producción o producción.

 

FACILITA EL DESPLIEGUE DE APLICACIONES AL ENTORNO DE PRODUCCIÓN

Al usar las plantillas, los desarrolladores pueden aprovechar los mismos flujos de trabajo y pueden centrarse en el código y no en el resto de configuraciones.

 

EJEMPLO

Con Docker-Compose, queremos crear un entorno de Drupal y Mysql, con unas versiones específicas.

Para ello, solo tendríamos que escribir “docker-compose up -d” en nuestra terminal y leerá nuestra plantilla (archivo .yaml de docker-compose) con todos las especificaciones de nuestros dos contenedores, como las contraseñas, los volúmenes, etc.

Un contenedor será Drupal y el otro mysql. Esto se realizará en una subred aislada, y si tenemos las imágenes descargadas en el hierro, tardará menos de cinco segundos en montarlo todo.

Si lo volvemos a lanzar (teniendo en cuenta los puertos) crearemos otro entorno en otros cinco segundos. Además, podemos cambiarle en nuestro archivo yaml las versiones del Drupal o del Mysql, de forma que podemos crear entornos nuevos con diferentes versiones casi sin ningún esfuerzo.

 

Conclusiones

Los puntos más fuertes de Docker son la portabilidad, el aislamiento, la seguridad y el ahorro de tiempo, por lo que facilita mucho el desarrollo y testeo de aplicaciones.

¡Y lo más interesante de esta tecnología es que todavía le queda mucha historia por delante!

Related posts

El mundo de Angular Schematics

El mundo de Angular Schematics

Cómo compilar aplicaciones Android con Jenkins - SDOS

Cómo compilar aplicaciones Android con Jenkins

Comments
¿Qué opinas? Escríbenos. Nos encantará leerte :)