Docker

Los beneficios de Docker para los desarrollos cuál es la ventaja sobre las aplicaciones...???

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Sr. Negativo

Re: Docker

Pues no lo he usado, pero dicen que ahorra trabajo a los administradores de sitios web.
En vez de crear una o varias máquinas virtuales (y la instalación del OS, de herramientas de administración, desarrollo,etc.) Docker se encarga de ello creando entornos y permitiendo su administración.
Una imagen podría ayudarte a entender eso.

Imagen de ezamudio

No entiendo

No entendí bien tu pregunta.

¿Qué ventaja tiene para las aplicaciones? Creo que ninguna.

Las ventajas de docker son para los desarrolladores y para los administradores de sistemas, o en su caso, para los devops.

La vida sin docker:

Tú como programador haces una aplicación, la pruebas en tu ambiente controlado, la mandas a staging, no jala porque faltaban cosas, pones lo que falta, cuando jala bien ya la mandan a producción, te avisan que truena porque faltan cosas (una tabla, un permiso, un archivo, un jar, la versión de Java no es la misma, etc) y tienen que corregir eso de inmediato o dar rollback.

Seis meses después, ya no aguanta la carga, te preguntan qué se necesita para echar a andar otra instancia, revisan lo necesario, ponen otro tomcat o lo que sea, meten ahí tu app, configuran balanceo de cargas en el apache o nginx, rezas que todo salga bien, con suerte resulta que después de varias horas de estar configurando un montón de cosas, ya tienen una segunda instancia de tu app corriendo.

Mientras tanto tú le haces correcciones y mejoras a la app, mandas la nueva versión, va de nuevo todo el mismo proceso esperando que esta vez no fallen las mismas cosas, tal vez fallen otras, en fin. Afortunadamente ya tienen dos instancias así que manualmente pueden bajar una, actualizarla, levantarla y luego bajar la segunda, actualizarla y levantarla. Cuidado con el balanceo de cargas y todo eso mientras. Tú nada más ves nervioso cómo hacen todo el desmadre.

La vida con docker:

Tú como programador haces una aplicación, la pruebas en tu ambiente controlado, creas una imagen de docker con tu aplicación y todo lo que necesita, la pruebas localmente, falla, corriges tu imagen, pruebas de nuevo hasta que funciona, mandas la imagen a staging, la echan a andar y funciona porque trae todas las dependencias y todo lo necesario ahí dentro, cuando pasa las pruebas la mandan a producción, te avisan que ya está funcionando y todo está bien.

Seis meses después, ya no aguanta la carga, el sysadmin o el devops echa a andar una segunda instancia de tu imagen de docker en el cluster de kubernetes y comienza a funcionar bien, tú ni te enteras.

Cuando terminas tus correcciones y mejoras, haces nuevamente la imagen de docker, la pruebas localmente y cuando todo funciona, la mandas a staging, de ahí se va a producción, tiempo después te avisan que ya actualizaron la app y todo funcionó bien porque con kubernetes las actualizaciones son automágicas y cada instancia se quita del balanceador de cargas, se da de baja, se levanta con la nueva imagen, y se agrega de nuevo y así hasta que las 2 o 5 o X instancias se hayan reiniciado con la nueva imagen de docker.

Imagen de ezamudio

Otra ventaja de docker

Docker nos ha facilitado la vida mucho en donde trabajo actualmente, por lo siguiente:

Tenemos un sistema complejo, en el cual trabajan varios equipos diferentes: uno enfocado a la base de datos, otro enfocado a varios servicios de backend, otro que maneja el frontend, etc. Hay varias tecnologías involucradas: React, PHP, Go, Java, varias bases de datos. Echar a andar el sistema completo en una laptop para poder desarrollar es extremadamente complicado, porque hay que instalar muchísimas cosas; estamos hablando de pedirle a un front-end que instale Java, compile un proyecto grande, eche a andar varios servicios, instale dos bases de datos distintas y las llene con datos de prueba, arranque algún middleware, todo para poder hacer su trabajo en una parte del sistema.

Por otra parte, es pedirle a un programador de backend que eche a andar toda la parte de front-end para poder probar que su servicio funciona correctamente y que todo está bien integrado. Entonces todos los programadores necesitan tener todas las tecnologías instaladas. Es demasiado. Y cuando llega uno nuevo, es peor, porque tiene que instalar un montón de cosas y se puede tardar días en establecer su ambiente de trabajo.

Pero con Docker ya no es así; ahora hay un script que los programadores corren y se levantan un montón de imágenes de docker: dos imágenes para las distintas bases de datos, otra con los servicios en Go, otra con servicios en Java, otra con el sitio en PHP, otra con la parte de React. Para los de backend es una maravilla porque ya no tienen que preocuparse en instalar la versión correcta de PHP y configurar un web server y poner React y además Go y no sé qué tantas cosas; para los de front-end es una maravilla porque no tienen que instalar Java ni bases de datos ni nada. La primera vez es tardado porque se compilan un montón de cosas y se generan las imágenes, pero a partir de ahí es muy rápido porque ya solamente se actualizan algunas cosas. Y todo mundo puede tener el ambiente completo de desarrollo que necesitan para trabajar.