Este documento habla sobre las desventajas de trabajar en un entorno local y propone las herramientas Vagrant y Docker como soluciones. Explica que trabajar en local puede causar problemas debido a las diferencias entre versiones de software y configuraciones entre ambientes. Luego define brevemente a Vagrant y Docker, señalando que Vagrant crea ambientes virtuales mientras que Docker enfoca contenedores de software. Finalmente, discute algunos casos en los que cada herramienta puede ser más adecuada.
2. 2
Osvaldo Mercado Coss
Backend Developer por error
● De Guadalajara, México
● Senior Backend Developer en PSL Group
● Estudios en Multimedia, de alguna manera termine codeando en el
backend
○ Stack: LA|EMP, PHP + Framework & NodeJS
○ DevOps: AWS + Vagrant/Docker + Chef
○ DBs: MySQL/MariaDB, Amazon Aurora, CouchDB, Couchbase,
MongoDB y desgraciadamente SQL Server
○ Interesado en Software Escalable, DevOps, BigData & Perros
● Host del Querétaro Software Development Meetup
Un poco sobre mi:
Hola!
omercadocoss@gmail.com
https://mx.linkedin.com/in/osvaldomercado
@omercadocoss
https://www.meetup.com/Queretaro-Software-Development-Meetup/
3. Agenda
¿Porqué no es una buena idea?
¿Son Vagrant y Docker soluciones?
Conclusión
¿Qué es trabajar en local?
¿Qué espero de esta plática?
12. Estas preguntas y comportamientos
nos dan a entrever que existe un
problema de información y
operación durante el desarrollo, que
puede llegar a impactar en algún
momento
13. 13
Qué es lo que puede pasar?
Una de las problemáticas comunes durante desarrollos sin estandarización de versiones
DEV
PHP 7.1.2
STAGING
PHP 7.2.2
LOCAL
PHP 7.0.14
PROD
PHP 7.2.1
14. 14
Qué es lo que puede pasar?
Una de las problemáticas comunes durante desarrollos sin estandarización de versiones
DEV
PHP 7.1.2
STAGING
PHP 7.2.1
LOCAL
PHP 7.0.14
PROD
PHP 7.2.1
15. 15
Qué es lo que puede pasar?
En la versión 7.2 de PHP, deprecaron varias funciones
16. 16
Una aplicación esconde varias cosas
Una aplicación por más sencilla que parezca, esconde múltiples librerías y paquetes que se deben de tomar en cuenta
Apache 2.2 PHP 5.6 MySQL 5.7 Mongo 3.4 Composer 1.6
CentOS 6.9
Curl 7.20pdo
json
mbstring
mongodb
tabla
usuarios
colección
cache
Git 1.7
tabla
pagos
17. 17
4 razones para dejar de instalar cosas en Local
Hay más, pero empecemos con estas
No puedes
manejar múltiples
proyectos en
paralelo
Que pasa si te piden
trabajar con NodeJS
8 en un proyecto y
NodeJS 6 en otro?
Estarás instalando y
desinstalando?
Va a ser difícil que
encuentres un
paquete que
tenga lo que
realmente
necesitas
Cuando consigues
bundles es difícil que
vayas a encontrar las
versiones que
realmente usas en
producción, lo que
puede generar
errores
Crear una
configuración te va
a tomar tiempo... y
tiempo es dinero
Tienes que registrarte
y crear cuenta para
bajar una librería? o
buscar en
repositorios la
versión que quieres?
Estás tomando
tiempo de desarrollo
para hacer esto
Es difícil
compartir un
ambiente
Trabajas en MacOS y
alguien de tu equipo
en Windows?
Entonces tendrán
algo difícil el
compartir un
ambiente con la
misma configuración
19. 19
Qué es Vagrant?
Vamos entendiendo de qué estamos hablando
Vagrant es una herramienta para crear y
administrar ambientes virtuales en un solo
flujo de trabajo. Con un flujo fácil y orientado
a la automatización, Vagrant baja los tiempos
de configuración de ambiente, incrementa la
paridad con producción y elimina la excusa
de “funciona en mi máquina”.
20. 20
Qué es Docker?
Vamos entendiendo de qué estamos hablando
Docker es un proyecto de código abierto que
automatiza el despliegue de aplicaciones
dentro de contenedores de software,
proporcionando una capa adicional de
abstracción y automatización de
Virtualización a nivel de sistema operativo
en Linux.
26. 26
No te vayas con la finta, realmente no es un VS
Existe un montonal de artículos en la red tratando de compararlos como si fueran alternativas uno del otro, pero, lo son?
27. 27
No te vayas con la finta, realmente no es un VS
Existe un montonal de artículos en la red tratando de compararlos como si fueran alternativas uno del otro, pero, lo son?
28. Es incorrecto pensar que es
una decisión de uno vs otro.
Más bien, es como pensar en
Ilustrador y Photoshop: los dos
te dan una imagen al final, pero
el proceso de creación y uso
son diferentes
29. 29
Cuando digo que sí a Vagrant
Basado en mi experiencia personal
No estoy
buscando
administrar
producción o
hacer DevOps en
su totalidad
Vagrant no se va a
producción, es una
herramienta creada
para espacios de
desarrollo, no para
ser deployeada en
producción
Tengo un equipo
más familiarizado
con Virtualboxes y
Configuration
Management
Si mi equipo de trabajo
está más familiarizado y
experimentado con
estas herramientas y no
pienso hacer
microservicios, Vagrant
es una herramienta
excelente y que
agregara valor
Estoy trabajando
con un ambiente de
un proyecto legacy
Cuando ya tienes
toda una arquitectura
y set de hardware
definido y no se
piensa actualizar, es
mejor tener tu local
que se asemeje al
ambiente producción
Tengo una
arquitectura en
un solo lugar y es
de gran escala
Existen aplicaciones
que aún no han sido
divididas y requieren
de múltiples librerías
y DBs al mismo
tiempo, si es
imposible cambiarla o
no es parte de mi plan
de desarrollo hacerlo,
prefiero Vagrant
30. 30
Cuando digo que sí a Docker
Basado en mi experiencia personal
Estoy buscando
crear
microservicios
Microservicios son la
verdadera joya que
ofrece Docker
(sin embargo puede
ser usado sin ellos), si
esto está en el plan,
Docker es mi primera
opción.
Tengo control del
servidor donde se
estará ejecutando
Docker en
producción
Docker termina
siendo un sinfín de
comandos de los
cuales, si no tengo
acceso a ver como y
que se está
ejecutando, es difícil
apostar por calidad
en los deployments
Es una nueva
aplicación/siendo
re-escrita o es una
arquitectura de
aplicaciones
Los containers de
Docker te permiten
pensar en nuevas
maneras de solucionar
problemas y
arquitecturar tu(s)
aplicación(es).
Tengo CI y CD en
control para el
proyecto (o está
planeado)
Lanzar Docker a
producción sin un
plan sólido de CI y CD
es sólo buscar
problemas, Docker es
una herramienta (a mi
forma de ver) que
requiere un ambiente
más maduro
32. Gracias!
Bienvenidas las preguntas, comentarios, quejas y sugerencias
omercadocoss@gmail.com
@omercadocoss
https://mx.linkedin.com/in/osvaldomercado
Querétaro Software
Development Meetup
33. Lecturas Recomendadas
Recomendaciones personales acerca del tema
Vagrant vs Docker
https://www.vagrantup.com/intro/vs/docker.html
So, when do you use a container or vm?
https://blog.docker.com/2016/05/vm-or-containers/
Tips for deploying official Nginx Docker image
https://blog.docker.com/2015/04/tips-for-deploying-nginx-official-
image-with-docker/
[Infographic] Docker vs. Vagrant
https://www.upguard.com/articles/docker-vs-vagrant
Should I use Vagrant or Docker for creating an isolated
environment?
https://stackoverflow.com/questions/16647069/should-i-use-
vagrant-or-docker-for-creating-an-isolated-environmentWhat is the difference between Docker and Vagrant?
https://www.quora.com/What-is-the-difference-between-Docker-
and-Vagrant-When-should-you-use-each-one
When to use Containers or Virtual Machines, and Why
https://www.nextplatform.com/2015/08/06/containers-versus-
virtual-machines-when-to-use-each-one-and-why/
When and Why to use Docker
https://linode.com/docs/applications/containers/when-and-why-to-
use-docker/
Docker official documentation
https://docs.docker.com/
Docker Hub (Images for Docker)
https://hub.docker.com/explore/
Docker Curriculum
https://docker-curriculum.com/
Vagrant Cloud (Boxes for Vagrant)
https://app.vagrantup.com/boxes/search