Febrero, 2018
No Trabajes en Local!
Presentado por Osvaldo Mercado Coss
Utiliza Vagrant o Docker
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/
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?
4
5
6
Cual es la versión de
producción de MongoDB?
Tuve que instalar una librería en
mi local para que funcionara
Necesitamos actualizar el servidor
y ver si la aplicación va a funcionar
con esa versión de MySQL
Es que ven, mira...
en mi compu si funciona
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
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
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
Qué es lo que puede pasar?
En la versión 7.2 de PHP, deprecaron varias funciones
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
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
18
Tiempo de conocer Vagrant y Docker
Vamos entendiendo de qué vamos a hablar
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
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.
21
Elementos Técnicos para Diferenciarlos
Vamos entendiendo de qué estamos hablando
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
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?
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
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
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
config.vm.provider "virtualbox" do |vb|
vb.name = "mi_box"
vb.instala_local = false
vb.usa_docker = true
vb.usa_vagrant = true
vb.geekend = “gracias”
end
Gracias!
Bienvenidas las preguntas, comentarios, quejas y sugerencias
omercadocoss@gmail.com
@omercadocoss
https://mx.linkedin.com/in/osvaldomercado
Querétaro Software
Development Meetup
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

Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)

  • 1.
    Febrero, 2018 No Trabajesen Local! Presentado por Osvaldo Mercado Coss Utiliza Vagrant o Docker
  • 2.
    2 Osvaldo Mercado Coss BackendDeveloper 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 esuna buena idea? ¿Son Vagrant y Docker soluciones? Conclusión ¿Qué es trabajar en local? ¿Qué espero de esta plática?
  • 4.
  • 5.
  • 6.
  • 8.
    Cual es laversión de producción de MongoDB?
  • 9.
    Tuve que instalaruna librería en mi local para que funcionara
  • 10.
    Necesitamos actualizar elservidor y ver si la aplicación va a funcionar con esa versión de MySQL
  • 11.
    Es que ven,mira... en mi compu si funciona
  • 12.
    Estas preguntas ycomportamientos 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 loque 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 loque 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 loque puede pasar? En la versión 7.2 de PHP, deprecaron varias funciones
  • 16.
    16 Una aplicación escondevarias 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 paradejar 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
  • 18.
    18 Tiempo de conocerVagrant y Docker Vamos entendiendo de qué vamos a hablar
  • 19.
    19 Qué es Vagrant? Vamosentendiendo 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? Vamosentendiendo 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.
  • 21.
    21 Elementos Técnicos paraDiferenciarlos Vamos entendiendo de qué estamos hablando
  • 26.
    26 No te vayascon 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 vayascon 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 pensarque 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 quesí 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 quesí 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
  • 31.
    config.vm.provider "virtualbox" do|vb| vb.name = "mi_box" vb.instala_local = false vb.usa_docker = true vb.usa_vagrant = true vb.geekend = “gracias” end
  • 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 personalesacerca 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