Optimizar equipos con contenedores Docker

Vamos a seguir profundizando en como optimizar equipos de desarrollo.

Ya vimos en una entrada anterior que podíamos optimizar equipos mediante el concepto del aula invertida.  Con este planteamiento vimos que podíamos mejorar la formación de nuestro equipo para reducir los tiempos que necesitan para ser productivos.

Infraestructura

En esta ocasión vamos a tratar otra de las formas de malgasto de tiempo en nuestros equipos como es el tiempo dedicado a las infraestructuras, lo que popularmente se conoce como la «fontanería».

Visión histórica

Antiguamente cuando empezó toda esta arquitectura de aplicaciones basadas en el Web las aplicaciones solían ser bastante sencillas. Normalmente un servidor de aplicaciones y una base de datos y como librerías la de logs y el driver de acceso a base de datos. Y poco mas se usaba.

Hoy día en cambio las aplicaciones son bastante mas complejas, debido a que nuestros clientes nos exigen mas funcionalidades.

Porqué se dedica tanto tiempo a la infraestructura

El hecho de que las aplicaciones sean mas complejas y requieran de innumerables librerías, servidores de cache, de mensajería,  gestores de contenidos, de portales, etc, hace que la instalación de todas esas herramientas sea complejo.

En los entornos web normalmente el desarrollador suele tener la infraestructura instalada en su ordenador local. Lo que hace que los desarrolladores tengan que replicar todos esa infraestructura en su ordenador.

A proyecto mas grande, mas actualizaciones suele haber. Actualizaciones que el desarrollador tiene que incorporarse en su ordenador. Y al final si se hace a mano se dedica mucho tiempo.

Docker optimiza el desarrollo

Docker permite crear una infraestructura mediante una sintaxis muy sencilla y tenerla disponible para los desarrolladores, de tal forma que cualquier programador se pueda conectar al servidor de imágenes Docker, seleccionar la que necesite y bajarla a su ordenador.

Esto hace que sea relativamente sencillo distribuir a los desarrolladores servidores correctamente configurados para el proyecto en que se esté trabajando.

Con esta herramienta podemos reducir los tiempos necesarios para tener la infraestructura en local, tenerla documentada y de forma reproducible.

Formación en Docker

Si te interesa profundizar en Docker y lo que puede aportarte en la optimización del equipo de desarrollo, tengo un curso en Docker con lo que necesita saber un equipo de desarrollo sobre Docker.

Docker UI: Portainer, primer vistazo

Las personas que suelan utilizar Docker sabrán que la interface gráfica que trae por defecto, Kitematic, es un poco simple. Y la línea de comandos puede resultar un poco dura para ciertas personas.

Hay alternativas, como la que suelo utilizar yo, que es el plugin del eclipse. Que es ideal cuando utilizas para tu trabajo el Eclipse. El problema viene cuando no se usa habitualmente ya que es muy pesado abrirlo solo para manejar mas cómodamente el Docker.

Hoy os traigo una alternativa que se llama Portainer.io

Pero no me enrollo mas y os dejo el vídeo.

Curso Docker sencillo para desarrolladores: Ver logs

Esta es la última entrada basada en el curso sobre Docker sencillo para desarrolladores. En ella os cuento como ver los blogs de un contenedor.

Puede parecer algo trivial pero ya he tenido alguna persona que me ha preguntado por como se podían ver los los.

Además esta vez hay ración doble de vídeos, una con la teoría y otra con la práctica.

Recordar que tenéis disponible el curso en la opción Curso del menú superior.

Curso Docker sencillo para desarrolladores: Moda

Cada vez que surge una tecnología disruptiva una de las primeras pregunta que me suelo hacer es cuanto tiene de moda y cuanto de tecnología realmente disruptiva.

Creo que Docker tiene algo de moda, pero también que ha venido para quedarse. Puede que con el tiempo se le empiezan a encontrar carencias, pero que las soluciones tecnológicas serán diferentes, porque nos habremos acostumbrado a ciertas funcionalidades y será difícil que nos las substituyan por algo que no sea como mínimo igual o mejor que lo que ya tenemos.

En resumen creo que Docker ha venido para quedarse.

Os dejo el vídeo y os recuerdo que tenéis toda la información sobre el curso en la opción superior de Cursos. Con un descuento que deja el precio del curso bastante módico.

Curso Docker sencillo para desarrolladores: DevOps

La pregunta que podemos hacernos es si encaja Docker en la tendencia actual por los temas de DevOps.

La respuesta es que si, en el momento que permite acercar los mundos de desarrollo y de operadores, ya que permite que los desarrolladores trabajen con la infraestructura que les proporcionan los operadores de una forma mas sencilla.

Ya no estaremos en las tipicas situaciones en las que los desarrolladores instalamos la infraestructura bajo nuestro criterio. Criterio que luego no coincide con el de los operadores.

Docker permite que la infraestructura se convierta en software y consiguientemente se pueda manejar como tal.

Os dejo la clase de mi cruso sobre Docker en la que hablo sobre este aspecto.

https://youtu.be/EU6kjP31EO8

Podeis acceder a mi curso completo sobre Docker en la página de cursos

Curso Docker sencillo para desarrolladores: Tamaño

Quizá pueda parecer que el problema de distribuir un entorno de trabajo no sea un problema tan importante.

Pero hay que tener en cuenta el tamaño. En un proyecto pequeño las posibilidades de tener cambios en la infraestructura suelen ser pequeños, pero en equipos u organizaciones grandes si hay más posibilidades.

En este vídeo, que es parte del curso sobre Docker que tengo, os hablo un poco de este tema.

Curso Docker sencillo para Desarrolladores: Visión histórica

Os podréis preguntar, como se ha llegado a la necesidad de utilizar herramientas como Docker y porque antes no eran necesarias.

En este vídeo os cuento un poco de visión histórica de como se han desarrollado las aplicaciones web, desde hace casi veinte años.

Obviamente está basado en mi experiencia personal. Pero creo que es bastante representativa.

Este vídeo es parte del curso que dispongo sobre Docker. En este enlace podéis acceder a el curso con un cupón de descuento incluido.

Curso Docker sencillo para desarrolladores: Problemática

En esta ocasión os voy a presentar cual es la problemática habitual en los equipos de desarrollo, sobre todo en aplicaciones web con Java.

Básicamente lo que pretendemos resolver es el disponer de un entorno de desarrollo en los puestos locales de los desarrolladores y que esté actualizado con los cambios que se producen en la infraestructura.

Lección

https://youtu.be/uQRoDbLoAYI

Este vídeo es parte del curso sobre Docker que tengo. El enlace ya aplica un cupón de descuento.

Transcripción de la lección: Docker, problemas

 

¿Entonces cuál es la problemática?, ¿cuál es el enfoque de este curso?

Pues es ver Docker como una herramienta que nos puede ayudar a aliviar estos problemas, pero desde una perspectiva de desarrollo.

Es decir no es tanto un curso para sistemas, para ser un especialista en todos los parámetros, todas las posibilidades de docker, sino un curso orientado a que la gente que está desarrollando sea capaz de manejarse con soltura utilizando Docker.

¿Y por qué Docker puede ser útil para éstas cosas?

Para esta problemática. Porque realmente viene a ayudar a uno de los problemas que suele haber en los entornos de trabajo en los entornos locales. Que es tener el entorno actualizado. El principal problema que hay y cuanto más grande es el proyecto o la organización más grande es el problema es tener los entornos actualizados.

Curso Docker sencillo para desarrolladores: Presentación

Os quiero compartir la presentación del curso Docker sencillo para desarrolladores.

Este vídeo a diferencia de otros vídeos que tengo en el canal de YouTube es parte del curso que tengo en la plataforma Udemy.

Es la primera clase en la que hago una primera presentación del curso, contando quien soy y mostrando cual es el problema que se pretende resolver en el curso.

Como sabes los que me seguís estoy muy focalizado en la optimización de equipos de desarrollo y este curso es parte de los conceptos de esa optimización.

Os dejo el vídeo

El curso completo, más de 7 horas de formación, sobre Docker está en la siguiente dirección, con un cupón de descuento incluido.

No dejéis de inscribiros en mi newsletter, en la que voy publicando contenido especial y ofertas, solo para los inscritos.

Transcripción Curso Docker sencillo, presentación

Para los que no tengáis facilidad para ver un video o prefiráis leer el contenido os dejo la transcripción.

Bienvenidos a este curso sobre Docker.

Permitirme que me presente antes de nada soy Iñigo Serrano. Soy un consultor especializado en la optimización de equipos de desarrollo.

Aparte de este tipo de cursos podéis encontrarme también en en mi web en www.inigoserrano.com y en youtube y en twitter.

En youtube tenéis algunos videos también un poco de este estilo pero más centrados en lo que serían píldoras. A diferencia de esto que es un curso más completo, más organizado en youtube hay contenidos sobre este tema pero más estilo píldoras.

¿Y en este curso que es lo que lo que pretendemos resolver? Básicamente es un curso muy muy práctico basado en las experiencias que ha ido teniendo en los diferentes sitios por los que he ido, en los que he ido trabajando. Viendo cómo optimizar los equipos de desarrollo.

Entonces el problema que pretendemos abordar en este curso sobre docker es, o se puede manifestar en una pregunta.

¿Cuántos servidores hay en tu proyecto o en tu organización?…

Realmente habéis contado bien porque normalmente cuando haces este tipo de preguntas la gente suele decir: bien vale tengo el entorno de desarrollo, tengo el entorno de preproducción o pruebas y tengo el entorno de producción.

Es decir tengo tresentornos en cada entorno tengo no sé cuántos servidores y sale el número de servidores que tienen.

Pero normalmente a la gente se le suele olvidar los entornos locales. Es decir donde trabaja el desarrollador. Y a diferencia de en los entornos de desarrollo, pruebas y producción que hay
una serie de máquinas, en los entornos locales suele haber bastante servidores. Bastante gente trabajando desarrollando.

Esto lo que hace es que normalmente muchas veces, muchas organizaciones se acaban olvidando de esos servidores, de esos servidores que tienen en los PC de cada desarrollador.

Porque parece como que no son tan importantes y se centran mucho en producción en pruebas y en desarrollo en esos entornos.

Pero realmente dónde está la masa de gente utilizando los servidores es en los entornos locales. Porque es fácil encontrarse con
proyectos con 20 con 50 personas trabajando.

¿Que es lo que pasa si tenemos problemas en un servidor?.

Lógicamente si el problema es en el entorno de producción pues lógicamente puede haber un daño económico y un prestigio de cara a nuestros usuarios o a nuestros clientes.

¿Pero qué es lo que pasa si esos problemas con los servidores los tenemos en los entornos previos?.

Sobre todo si los tenemos en los entornos locales, donde está la gente desarrollando. Bueno si realmente lo tienes, no vas a tener un problema de cara a la imagen que tienes al exterior porque tus clientes no se van a dar cuenta. Pero realmente cada problema que tienes, si pierdes una hora en producción, que no das servicio una hora, puede ser un problema. Pero sí pierdes una hora en un equipo de 20 personas no has perdido una hora as perdió 20 horas. Entonces empiezas a tener problemas económicos porque te está costando por gente que está parada. Sí que es cierto que de cara al cliente no va a ver esos esos errores, no va a estar la aplicación caída.

Pero realmente tienes un problema a la hora, en los entornos locales, tienes un problema a la hora de llegar a plazos. Realmente claro si tú estás teniendo problemas para actualizarte los entornos, los entornos están caídos en sus entornos locales, pues eso repercute en los plazos de entrega porque normalmente suelen estar bastante bastante ajustados.

Y lógicamente eso lo que implica es que los desarrolladores van a sentir o van a tener muchísima más presión para llegar a esos plazos. Con lo cual el la presión a la que se somete a la gente de desarrollo pues es bastante alta.

Docker como herramienta de utilidades

Cuando hablamos de Docker y vemos el uso que nos puede dar, lo primero que vemos es la facilidad que nos da para tener imágenes con los servidores que necesitamos en nuestro trabajo. Servidores web, de aplicaciones, de bases de datos, etc.

Pero Docker puede darnos muchas mas posibilidades como herramienta de utilidades.

Cuantas veces no hemos tenido que instalar una herramienta de línea de comandos simplemente para hacer un uso esporádico. Y cuantas veces no hemos hecho un script para hacer ciertas tareas, script que luego hemos acabado perdiendo y pasando a un compañero que se lo ha tenido que ajustar a sus características.

Pues ahí Docker también nos puede ayudar.

Os dejo estas y otras reflexiones en un vídeo.

Y recordar que si os interesa el tema de Docker, como optimizar equipos de desarrollo, tengo un curso, muy económico, en el que os cuento Docker desde la perspectiva de un desarrollador en un proyecto de desarrollo.