SlideShare una empresa de Scribd logo
1 de 33
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

Más contenido relacionado

La actualidad más candente

T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!Iván López Martín
 
Docker para desarrolladores .NET
Docker para desarrolladores .NETDocker para desarrolladores .NET
Docker para desarrolladores .NETAdrian Diaz Cervera
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?Micael Gallego
 
Backdrop como evolución alternativa y sana para drupal 7
Backdrop como evolución alternativa y sana para drupal 7Backdrop como evolución alternativa y sana para drupal 7
Backdrop como evolución alternativa y sana para drupal 7Victor Kane
 

La actualidad más candente (6)

JAVA3.0
JAVA3.0JAVA3.0
JAVA3.0
 
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
 
Docker para desarrolladores .NET
Docker para desarrolladores .NETDocker para desarrolladores .NET
Docker para desarrolladores .NET
 
Gwt I - entendiendo gwt
Gwt I - entendiendo gwtGwt I - entendiendo gwt
Gwt I - entendiendo gwt
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Backdrop como evolución alternativa y sana para drupal 7
Backdrop como evolución alternativa y sana para drupal 7Backdrop como evolución alternativa y sana para drupal 7
Backdrop como evolución alternativa y sana para drupal 7
 

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

Consejos de un perro viejo programador
Consejos de un perro viejo programadorConsejos de un perro viejo programador
Consejos de un perro viejo programadorBraulio Diez Botella
 
¿Se puede vivir del open source? T3chfest
¿Se puede vivir del open source? T3chfest¿Se puede vivir del open source? T3chfest
¿Se puede vivir del open source? T3chfestjavier ramirez
 
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019 Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019 Santi Macias Rodriguez
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyJorge Antonio Linares Vera
 
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyBootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyTelefónica
 
Presentación Jornada Drupal Sevilla Febrero 2015
Presentación Jornada Drupal Sevilla Febrero 2015Presentación Jornada Drupal Sevilla Febrero 2015
Presentación Jornada Drupal Sevilla Febrero 2015Javier Prada Oliva
 
Gdglima docker-ecosystem
Gdglima docker-ecosystemGdglima docker-ecosystem
Gdglima docker-ecosystemEdith Puclla
 
Plug&play:deploying big data_solutions
Plug&play:deploying big data_solutionsPlug&play:deploying big data_solutions
Plug&play:deploying big data_solutionsDavid Piris
 
Inteligencia artificial in house con servicios cognitivos y docker
Inteligencia artificial in house con servicios cognitivos y dockerInteligencia artificial in house con servicios cognitivos y docker
Inteligencia artificial in house con servicios cognitivos y dockerLuis Beltran
 
Cloud para tu juego en una tarde
Cloud para tu juego en una tardeCloud para tu juego en una tarde
Cloud para tu juego en una tardeIgnacio Segura
 
Meetup: Sesión #8 Domain Driven Design
Meetup: Sesión #8 Domain Driven DesignMeetup: Sesión #8 Domain Driven Design
Meetup: Sesión #8 Domain Driven DesignOsvaldo Mercado Coss
 
Presentacion drupal on the box de Oskar de Documentados
Presentacion drupal on the box de Oskar de DocumentadosPresentacion drupal on the box de Oskar de Documentados
Presentacion drupal on the box de Oskar de DocumentadosWORKbox
 
DevOps, por donde comenzar? - DrupalCon Latin America 2015
DevOps, por donde comenzar?  - DrupalCon Latin America 2015DevOps, por donde comenzar?  - DrupalCon Latin America 2015
DevOps, por donde comenzar? - DrupalCon Latin America 2015Taller Negócio Digitais
 

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

Consejos de un perro viejo programador
Consejos de un perro viejo programadorConsejos de un perro viejo programador
Consejos de un perro viejo programador
 
FULLSTACK JS DEV in 2017
FULLSTACK JS DEV in 2017FULLSTACK JS DEV in 2017
FULLSTACK JS DEV in 2017
 
CodeIgniter
CodeIgniterCodeIgniter
CodeIgniter
 
¿Se puede vivir del open source? T3chfest
¿Se puede vivir del open source? T3chfest¿Se puede vivir del open source? T3chfest
¿Se puede vivir del open source? T3chfest
 
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019 Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
 
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyBootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
 
Presentación Jornada Drupal Sevilla Febrero 2015
Presentación Jornada Drupal Sevilla Febrero 2015Presentación Jornada Drupal Sevilla Febrero 2015
Presentación Jornada Drupal Sevilla Febrero 2015
 
Gdglima docker-ecosystem
Gdglima docker-ecosystemGdglima docker-ecosystem
Gdglima docker-ecosystem
 
Workshop calabash appium
Workshop calabash appiumWorkshop calabash appium
Workshop calabash appium
 
introducción a Docker
introducción a Dockerintroducción a Docker
introducción a Docker
 
Mongodb
MongodbMongodb
Mongodb
 
Plug&play:deploying big data_solutions
Plug&play:deploying big data_solutionsPlug&play:deploying big data_solutions
Plug&play:deploying big data_solutions
 
Inteligencia artificial in house con servicios cognitivos y docker
Inteligencia artificial in house con servicios cognitivos y dockerInteligencia artificial in house con servicios cognitivos y docker
Inteligencia artificial in house con servicios cognitivos y docker
 
Cloud para tu juego en una tarde
Cloud para tu juego en una tardeCloud para tu juego en una tarde
Cloud para tu juego en una tarde
 
Framework Catalyst
Framework CatalystFramework Catalyst
Framework Catalyst
 
Meetup: Sesión #8 Domain Driven Design
Meetup: Sesión #8 Domain Driven DesignMeetup: Sesión #8 Domain Driven Design
Meetup: Sesión #8 Domain Driven Design
 
Presentacion drupal on the box de Oskar de Documentados
Presentacion drupal on the box de Oskar de DocumentadosPresentacion drupal on the box de Oskar de Documentados
Presentacion drupal on the box de Oskar de Documentados
 
Drupalonthebox
DrupalontheboxDrupalonthebox
Drupalonthebox
 
DevOps, por donde comenzar? - DrupalCon Latin America 2015
DevOps, por donde comenzar?  - DrupalCon Latin America 2015DevOps, por donde comenzar?  - DrupalCon Latin America 2015
DevOps, por donde comenzar? - DrupalCon Latin America 2015
 

Último

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 

Último (10)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 

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

  • 1. Febrero, 2018 No Trabajes en Local! Presentado por Osvaldo Mercado Coss Utiliza Vagrant o Docker
  • 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?
  • 4. 4
  • 5. 5
  • 6. 6
  • 7.
  • 8. Cual es la versión de producción de MongoDB?
  • 9. Tuve que instalar una librería en mi local para que funcionara
  • 10. Necesitamos actualizar el servidor 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 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
  • 18. 18 Tiempo de conocer Vagrant y Docker Vamos entendiendo de qué vamos a hablar
  • 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.
  • 21. 21 Elementos Técnicos para Diferenciarlos Vamos entendiendo de qué estamos hablando
  • 22.
  • 23.
  • 24.
  • 25.
  • 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
  • 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 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