Nuestro blog

Entérate de todas las novedades sobre Big Data y de la opinión de nuestros expertos en Data Science y Data Engineering.

DOCKER

Artículo de Carlos Palomares

Docker es un proyecto opensource que te permite manejar instancias dentro de tu PC, previa instalación del software que lo gestiona, basándose en lo que se denomina como virtualizacion ligera, manejando estos contenedores y su interior con ficheros de “tipo scripting” que pueden ser portados a cualquier otro PC.
 
El nombre de contenedores viene de los recipientes de carga estandarizados que se utilizan en barcos, camiones y trenes, que permiten cargar, descargar y apilar los contenedores. 
 
Docker lleva el mismo concepto al mundo del software, permitiendo encapsular cualquier infraestructura, convirtiéndola en un contenedor portable y auto-suficiente, con una capa de red aislada y un fylesystem propio que no interfiera en el de la maquina host.
 
Ofrece una diversidad de ventajas al equipo de desarrollo asi como al de sistemas, y una forma rapida y facil de presentar arquitecturas en su fase inicial a clientes interesados en nuevos proyectos.
 
 
Alguna de las principales ventajas que nos ofrece en los equipos de desarrollo son:

1. Arquitecturas/Entornos de desarrollo completamente portables, que permiten desarrollar en local con las mismas versiones de las herramientas en cada puesto de desarrollo y sobre cualquier sistema operativo, Esto hace que todo el equipo trabaje con las misma herramientas sin la necesidad de perder días en la configuración del puesto de desarrollo.

2. Capa de red y sistema de ficheros aisla del sistema host, lo que permite no interferir en las herramientas propias del host.
 
3. Entornos de desarrollo mas reales o similares a nuestro entrono de producción.
 
4. Fácil integración con herramientas de terceros, ya que se instalaran en un sistema totalmente independiente al del host.
 
El uso de Docker en definitiva nos permite el desarrollo de la PoC de una manera totalmente autónoma en cuanto a infraestructura Big Data, abaratando costes al cliente, al retrasar la tarea de definición de la infraestructura a futuro, teniendo más tiempo y en base a la experiencia que nos de la PoC, a seleccionar más detalladamente nuestra infraestructura como tal, e incluso las herramientas que utilicemos para implementar nuestra Arquitectura.

Es por esto por lo que desde SBD aconsejamos concienzudamente el uso de Docker en las primeras fases de un desarrollo, bien de una PoC o bien en los inicios del diseño de una Arquitectura. Además, mediante el uso de docker-compose herramienta la cual se utiliza para definir y ejecutar aplicaciones multi-contenedor, podemos definir todo un entramado de cual sería nuestra futura infraestructura en producción, pero pudiendo ser ejecutado en el equipo del desarrollador.
 

Por ultimo todo este trabajo no sería en vano y podría ser aprovechado en producción, bien mediante el uso de componente como Docker swarn(https://docs.docker.com/engine/swarm/) que despliegan estos contenedores como piezas de un sistema de producción o en la nube mediante servicios como Google container engine (https://cloud.google.com/container-engine/?hl=es) o ECS de AWS(Elastic Container Service: https://aws.amazon.com/es/ecs/), haciendo que el trabajo en esta fase de desarrollo pueda ser aprovechado al llegar a producción.