SlideShare a Scribd company logo
1 of 45
DevOps
Es Como Trabajamos
Randy Shoup
@randyshoup
linkedin.com/in/randyshoup
Experiencia
• VP de Ingeniería en WeWork
o Espacios de trabajo como servicio
• VP de Ingeniería en Stitch Fix
o Revolucionando la venta de ropa usando ciencia de datos y “machine learning”
• Director de Ingeniería en Google App Engine
o Plataforma como servicio
• Ingeniero Principal en eBay
o Venta
Maximar Valor
y
Minimizar Tiempo
¿Velocidad
vs.
Estabilidad?
Organizaciones que usan DevOps:
Resultados de Velocidad
7m
1d
<1h
Pobre
desempeño
Alto
desempeño
Frecuencia de despliegue
1x
mes
1x
día
10x
día
Organizaciones que usan DevOps:
Resultados de Estabilidad
>1d
<1h
Pobre
desempeño
Alto
desempeño
55%
45%
100%
0%
Frecuencia de éxitos vs fallas en el despliegue
¡Velocidad
y
Estabilidad!
2.5x oportunidad de
superar sus metas
o Productividad
o Rentabilidad
o Satisfacción del cliente
Organizaciones que usan DevOps:
Resultados
DevOps
Es Como Trabajamos
•¿Cómo Organizamos?
•¿Qué Construimos?
•¿Cuándo Construimos?
•¿Cómo Construimos?
•¿Cómo Gestionamos?
DevOps
Es Como Trabajamos
•¿Cómo Organizamos?
•¿Qué Construimos?
•¿Cuándo Construimos?
•¿Cómo Construimos?
•¿Cómo Gestionamos?
Organizaciones
Tradicionales
Idea
Desarrollo
Calidad
Operación
Equipos
Completos
Idea
Desarrollo
Calidad
Operación
Idea
Desarrollo
Calidad
Operación
Idea
Desarrollo
Calidad
Operación
Equipos Pequeños
“de Dos Pizzas”
4-6
personas
“El equipo debe ser
suficientemente pequeño
para ser satisfecho por
dos pizzas grandes.”
-- Jeff Bezos, Amazon
DevOps
Es Como Trabajamos
•¿Cómo Organizamos?
•¿Qué Construimos?
•¿Cuándo Construimos?
•¿Cómo Construimos?
•¿Cómo Gestionamos?
¿Cuál problema
tratamos de
resolver?
“Construir el producto
incorrecto es la mayor perdida
en el desarrollo de software.”
-- Mary and Tom Poppendieck,
Lean Software Development
¿Cuál Problema Tratamos
de Resolver?
• Nos enfocamos en lo que es importante por la empresa
• En ocasiones, el problema puede ser resuelto sin
tecnología
o Redefiniendo el problema
o Modificando los procesos
o Automatizando el proceso luego de haberlo realizado muchas veces
manualmente
@randyshoup linkedin.com/in/randyshoup
“Un problema bien definido
es un problema resuelto al
50%.”
-- Charles Kettering, General Motors
Experimentar
con Disciplina
• Declaramos la hipótesis
o ¿Cuáles métricas esperamos mejorar? ¿Por qué?
o Establecemos una linea base
• Efectuamos una prueba A | B rigurosa
o Muestra representativa
o Grupos aislados de “experimento” y “control”
o No terminamos la prueba hasta final
• Recopilamos todos los logs y mediciones
o Analizar el comportamiento de los clientes y los sistemas
o Analizar por que este experimento fue exitoso o fallido
o Diseñar el próximo experimento
F(x) de Ordenamiento
de Búsqueda en eBay
• “F(x) de ordenamiento” determina el orden de resultados
o ¿Cuál producto debe aparacer en la posición número 1, 10, 100 ?
o Antes: Menos variables involucradas en la función construida manualmente
o Despues: Miles de variables involucradas en la función construida por “machine
learning”
• Experimentación incremental
o Cientos de pruebas A | B en paralelo
o Un año de trabajo, continuamente mejorando la F(x)
 2% incremento en las utilidades de eBay (~$120M / año)
Latencia de los Resultados
de Búsqueda en eBay
• Meta: Minimizar la latencia de los resultados observado
por usuarios de eBay
• Experimentación incremental
o Implementamos una posible mejora
o Desplegamos la mejora en una prueba A | B
o Monitorizamos todas las métricas importantes – “tiempo de recepción del primer
byte”, “tiempo transcurrido hasta el primer click”, “razón de click”, “razón de
compra”
 2% incremento en las utilidades de eBay (~$120M /
año)
DevOps
Es Como Trabajamos
•¿Cómo Organizamos?
•¿Qué Construimos?
•¿Cuándo Construimos?
•¿Cómo Construimos?
•¿Cómo Gestionamos?
Priorizar
• Siempre tenemos más tareas que recursos
• Con insuficiente recursos, tenemos que priorizar tareas
• Costo Menos Beneficio
o Si elegimos A, debemos tener en cuenta los beneficios de B (que no
elegimos)
@randyshoup linkedin.com/in/randyshoup
Menos Tareas
en Progreso
Funcionalidad 1
Funcionalidad 2
Funcionalidad 3
Funcionalidad 4
Funcionalidad 5
Organizaciones
Tradicionales
Mes 4
Funcionalidad 1
Funcionalidad 2
Funcionalidad 3
Funcionalidad 4
Funcionalidad 5
Despliegue Continuo:
Menos Tareas, Más Tareas Completadas
Mes 4Mes 2
Despliegue Continuo:
Despliegue en Iteraciones
Mes 4Mes 2
1a 1b 1c 1d
2a 2b 2c
3a 3b 3c 3d
4a 4b 4c
5a 5b
Menos Tareas en Progreso:
Beneficios
• Terminamos primero las tareas priorizadas
o Producimos las funcionalidades en el orden de sus prioridades
• Tiempo es valor
o Producimos valor al cliente más temprano
• Entregamos de forma incremental
o Podemos adaptar nuestro camino por la retroalimentación temprana del cliente
• Desarrollamos más eficientemente
o Dos personas pueden colaborar
@randyshoup linkedin.com/in/randyshoup
“Cuando se resuelve el primer
problema, el segundo gana
una promoción.”
DevOps
Es Como Trabajamos
•¿Cómo Organizamos?
•¿Qué Construimos?
•¿Cuándo Construimos?
•¿Cómo Construimos?
•¿Cómo Gestionamos?
Disciplina de
Calidad
• Calidad es una funcionalidad con “prioridad 0”
o Si la aplicación no funciona, no importa que sea bonita
• Los miembros de un equipo son responsables por:
o Desarrollo
o Calidad
o Desempeño
o Consistencia
o Seguridad
o Manejabilidad
Desarrollo Guiado
por Pruebas (TDD)
• Las pruebas producen mejores códigos
o Cuando rompimos una funcionalidad, podemos identificar rápidamente el
problema
o Podemos refactorizar nuestro sistema con confianza
• Las pruebas producen mejores sistemas
o Detectamos bugs más temprano
@randyshoup linkedin.com/in/randyshoup
TDD Mejora
el Esfuerzo de Desarrollo
@randyshoup linkedin.com/in/randyshoup
• 75% leyendo
códigos existentes
• 20% modificando
códigos existentes
• 5% produciendo
nuevos códigos
https://blogs.msdn.microsoft.com/peterhal/2006/01/04/what-do-programmers-really-do-anyway-aka-part-2-of-the-yardstick-saga/
TDD Mejora
el Esfuerzo de Desarrollo
@randyshoup linkedin.com/in/randyshoup
• 75% leyendo
códigos existentes
• 20% modificando
códigos existentes
• 5% produciendo
nuevos códigos
https://blogs.msdn.microsoft.com/peterhal/2006/01/04/what-do-programmers-really-do-anyway-aka-part-2-of-the-yardstick-saga/
“¿Tenemos tiempo para
hacerlo dos veces?”
“¡No tenemos tiempo para
hacerlo mejor!”
Por muchas restricciones que
tengamos de tiempo y
recursos, lo más importante es
construir correctamente desde
el principio.
Construir Correctamente
desde el Principio
• Preferimos construir una funcionalidad completa en
lugar de dos funcionalidades incompletas
• Correcta no significa perfecta
•  En Stitch Fix, basicamente no existe un sistema de
gestión de bugs
o Cuando encontramos un bug, priorizamos su solución
o “Backlog” contiene nuevas funcionalidades para desarrollar
o “Backlog” contiene tareas de “deuda tecnica”
@randyshoup linkedin.com/in/randyshoup
DevOps
Es Como Trabajamos
•¿Cómo Organizamos?
•¿Qué Construimos?
•¿Cuándo Construimos?
•¿Cómo Construimos?
•¿Cómo Gestionamos?
“Usted lo construye, usted lo
maneja.”
-- Werner Vogels, CTO en Amazon
Despliegue
Continuo
• Pipeline Repetible de Despliegue
o Rápida entrega
o Rápida recuparación
• Desplegamos múltiples aplicaciones muchas veces por
día
• Producimos sistemas más estables
o Entregamos micro-funcionalidades
o Más fáciles de reparar, de comprender, y de diagnosticar
@randyshoup linkedin.com/in/randyshoup
Post-Mortems
sin Culpable
• Post-mortem después de cada incidente
o Documentamos que pasó exactamente
o ¿Qué sucedió?
o ¿Qué fue mal?
• Tenemos una discusión constructiva
o ¿Qué contribuyó al incidente?
o ¿Qué podríamos hacer mejor?
Nuestros ingenieros compiten por asumir la
responsabilidad (!)
@randyshoup linkedin.com/in/randyshoup
La discusión es constructiva
Quisiera mejorar mi sistema
Post-Mortems
sin Culpable
• Producimos un listado de acciones
o ¿Cómo cambiaremos el proceso, la tecnología, la documentación, etc.
o ¿Cómo podríamos automatizar la solución?
o ¿Cómo podríamos diagnosticar más rápido?
o ¿Cómo podríamos restablecer el servicio más rápido?
• Aseguramos su implementación
@randyshoup linkedin.com/in/randyshoup
DevOps
Es Como Trabajamos
•¿Cómo Organizamos?
•¿Qué Construimos?
•¿Cuándo Construimos?
•¿Cómo Construimos?
•¿Cómo Gestionamos?
¡Gracias!
• @randyshoup
• linkedin.com/in/randyshoup

More Related Content

More from Randy Shoup

DevOps - It's About How We Work
DevOps - It's About How We WorkDevOps - It's About How We Work
DevOps - It's About How We Work
Randy Shoup
 
Ten Lessons of the DevOps Transition
Ten Lessons of the DevOps TransitionTen Lessons of the DevOps Transition
Ten Lessons of the DevOps Transition
Randy Shoup
 

More from Randy Shoup (20)

Scaling Your Architecture with Services and Events
Scaling Your Architecture with Services and EventsScaling Your Architecture with Services and Events
Scaling Your Architecture with Services and Events
 
Learning from Learnings: Anatomy of Three Incidents
Learning from Learnings: Anatomy of Three IncidentsLearning from Learnings: Anatomy of Three Incidents
Learning from Learnings: Anatomy of Three Incidents
 
Minimum Viable Architecture - Good Enough is Good Enough
Minimum Viable Architecture - Good Enough is Good EnoughMinimum Viable Architecture - Good Enough is Good Enough
Minimum Viable Architecture - Good Enough is Good Enough
 
Managing Data at Scale - Microservices and Events
Managing Data at Scale - Microservices and EventsManaging Data at Scale - Microservices and Events
Managing Data at Scale - Microservices and Events
 
Service Architectures at Scale
Service Architectures at ScaleService Architectures at Scale
Service Architectures at Scale
 
Monoliths, Migrations, and Microservices
Monoliths, Migrations, and MicroservicesMonoliths, Migrations, and Microservices
Monoliths, Migrations, and Microservices
 
Evolving Architecture and Organization - Lessons from Google and eBay
Evolving Architecture and Organization - Lessons from Google and eBayEvolving Architecture and Organization - Lessons from Google and eBay
Evolving Architecture and Organization - Lessons from Google and eBay
 
Moving Fast At Scale
Moving Fast At ScaleMoving Fast At Scale
Moving Fast At Scale
 
DevOps - It's About How We Work
DevOps - It's About How We WorkDevOps - It's About How We Work
DevOps - It's About How We Work
 
Ten Lessons of the DevOps Transition
Ten Lessons of the DevOps TransitionTen Lessons of the DevOps Transition
Ten Lessons of the DevOps Transition
 
Managing Data in Microservices
Managing Data in MicroservicesManaging Data in Microservices
Managing Data in Microservices
 
Effective Microservices In a Data-centric World
Effective Microservices In a Data-centric WorldEffective Microservices In a Data-centric World
Effective Microservices In a Data-centric World
 
Pragmatic Microservices
Pragmatic MicroservicesPragmatic Microservices
Pragmatic Microservices
 
A CTO's Guide to Scaling Organizations
A CTO's Guide to Scaling OrganizationsA CTO's Guide to Scaling Organizations
A CTO's Guide to Scaling Organizations
 
From the Monolith to Microservices - CraftConf 2015
From the Monolith to Microservices - CraftConf 2015From the Monolith to Microservices - CraftConf 2015
From the Monolith to Microservices - CraftConf 2015
 
Service Architectures At Scale - QCon London 2015
Service Architectures At Scale - QCon London 2015Service Architectures At Scale - QCon London 2015
Service Architectures At Scale - QCon London 2015
 
Concurrency at Scale: Evolution to Micro-Services
Concurrency at Scale:  Evolution to Micro-ServicesConcurrency at Scale:  Evolution to Micro-Services
Concurrency at Scale: Evolution to Micro-Services
 
Minimum Viable Architecture -- Good Enough is Good Enough in a Startup
Minimum Viable Architecture -- Good Enough is Good Enough in a StartupMinimum Viable Architecture -- Good Enough is Good Enough in a Startup
Minimum Viable Architecture -- Good Enough is Good Enough in a Startup
 
Why Enterprises Are Embracing the Cloud
Why Enterprises Are Embracing the CloudWhy Enterprises Are Embracing the Cloud
Why Enterprises Are Embracing the Cloud
 
DevOpsDays Silicon Valley 2014 - The Game of Operations
DevOpsDays Silicon Valley 2014 - The Game of OperationsDevOpsDays Silicon Valley 2014 - The Game of Operations
DevOpsDays Silicon Valley 2014 - The Game of Operations
 

DevOps - Es Como Trabajamos

  • 1. DevOps Es Como Trabajamos Randy Shoup @randyshoup linkedin.com/in/randyshoup
  • 2. Experiencia • VP de Ingeniería en WeWork o Espacios de trabajo como servicio • VP de Ingeniería en Stitch Fix o Revolucionando la venta de ropa usando ciencia de datos y “machine learning” • Director de Ingeniería en Google App Engine o Plataforma como servicio • Ingeniero Principal en eBay o Venta
  • 5. Organizaciones que usan DevOps: Resultados de Velocidad 7m 1d <1h Pobre desempeño Alto desempeño Frecuencia de despliegue 1x mes 1x día 10x día
  • 6. Organizaciones que usan DevOps: Resultados de Estabilidad >1d <1h Pobre desempeño Alto desempeño 55% 45% 100% 0% Frecuencia de éxitos vs fallas en el despliegue
  • 8. 2.5x oportunidad de superar sus metas o Productividad o Rentabilidad o Satisfacción del cliente Organizaciones que usan DevOps: Resultados
  • 9. DevOps Es Como Trabajamos •¿Cómo Organizamos? •¿Qué Construimos? •¿Cuándo Construimos? •¿Cómo Construimos? •¿Cómo Gestionamos?
  • 10. DevOps Es Como Trabajamos •¿Cómo Organizamos? •¿Qué Construimos? •¿Cuándo Construimos? •¿Cómo Construimos? •¿Cómo Gestionamos?
  • 13. Equipos Pequeños “de Dos Pizzas” 4-6 personas “El equipo debe ser suficientemente pequeño para ser satisfecho por dos pizzas grandes.” -- Jeff Bezos, Amazon
  • 14. DevOps Es Como Trabajamos •¿Cómo Organizamos? •¿Qué Construimos? •¿Cuándo Construimos? •¿Cómo Construimos? •¿Cómo Gestionamos?
  • 16. “Construir el producto incorrecto es la mayor perdida en el desarrollo de software.” -- Mary and Tom Poppendieck, Lean Software Development
  • 17. ¿Cuál Problema Tratamos de Resolver? • Nos enfocamos en lo que es importante por la empresa • En ocasiones, el problema puede ser resuelto sin tecnología o Redefiniendo el problema o Modificando los procesos o Automatizando el proceso luego de haberlo realizado muchas veces manualmente @randyshoup linkedin.com/in/randyshoup
  • 18. “Un problema bien definido es un problema resuelto al 50%.” -- Charles Kettering, General Motors
  • 19. Experimentar con Disciplina • Declaramos la hipótesis o ¿Cuáles métricas esperamos mejorar? ¿Por qué? o Establecemos una linea base • Efectuamos una prueba A | B rigurosa o Muestra representativa o Grupos aislados de “experimento” y “control” o No terminamos la prueba hasta final • Recopilamos todos los logs y mediciones o Analizar el comportamiento de los clientes y los sistemas o Analizar por que este experimento fue exitoso o fallido o Diseñar el próximo experimento
  • 20. F(x) de Ordenamiento de Búsqueda en eBay • “F(x) de ordenamiento” determina el orden de resultados o ¿Cuál producto debe aparacer en la posición número 1, 10, 100 ? o Antes: Menos variables involucradas en la función construida manualmente o Despues: Miles de variables involucradas en la función construida por “machine learning” • Experimentación incremental o Cientos de pruebas A | B en paralelo o Un año de trabajo, continuamente mejorando la F(x)  2% incremento en las utilidades de eBay (~$120M / año)
  • 21. Latencia de los Resultados de Búsqueda en eBay • Meta: Minimizar la latencia de los resultados observado por usuarios de eBay • Experimentación incremental o Implementamos una posible mejora o Desplegamos la mejora en una prueba A | B o Monitorizamos todas las métricas importantes – “tiempo de recepción del primer byte”, “tiempo transcurrido hasta el primer click”, “razón de click”, “razón de compra”  2% incremento en las utilidades de eBay (~$120M / año)
  • 22. DevOps Es Como Trabajamos •¿Cómo Organizamos? •¿Qué Construimos? •¿Cuándo Construimos? •¿Cómo Construimos? •¿Cómo Gestionamos?
  • 23. Priorizar • Siempre tenemos más tareas que recursos • Con insuficiente recursos, tenemos que priorizar tareas • Costo Menos Beneficio o Si elegimos A, debemos tener en cuenta los beneficios de B (que no elegimos) @randyshoup linkedin.com/in/randyshoup
  • 25. Funcionalidad 1 Funcionalidad 2 Funcionalidad 3 Funcionalidad 4 Funcionalidad 5 Organizaciones Tradicionales Mes 4
  • 26. Funcionalidad 1 Funcionalidad 2 Funcionalidad 3 Funcionalidad 4 Funcionalidad 5 Despliegue Continuo: Menos Tareas, Más Tareas Completadas Mes 4Mes 2
  • 27. Despliegue Continuo: Despliegue en Iteraciones Mes 4Mes 2 1a 1b 1c 1d 2a 2b 2c 3a 3b 3c 3d 4a 4b 4c 5a 5b
  • 28. Menos Tareas en Progreso: Beneficios • Terminamos primero las tareas priorizadas o Producimos las funcionalidades en el orden de sus prioridades • Tiempo es valor o Producimos valor al cliente más temprano • Entregamos de forma incremental o Podemos adaptar nuestro camino por la retroalimentación temprana del cliente • Desarrollamos más eficientemente o Dos personas pueden colaborar @randyshoup linkedin.com/in/randyshoup
  • 29. “Cuando se resuelve el primer problema, el segundo gana una promoción.”
  • 30. DevOps Es Como Trabajamos •¿Cómo Organizamos? •¿Qué Construimos? •¿Cuándo Construimos? •¿Cómo Construimos? •¿Cómo Gestionamos?
  • 31. Disciplina de Calidad • Calidad es una funcionalidad con “prioridad 0” o Si la aplicación no funciona, no importa que sea bonita • Los miembros de un equipo son responsables por: o Desarrollo o Calidad o Desempeño o Consistencia o Seguridad o Manejabilidad
  • 32. Desarrollo Guiado por Pruebas (TDD) • Las pruebas producen mejores códigos o Cuando rompimos una funcionalidad, podemos identificar rápidamente el problema o Podemos refactorizar nuestro sistema con confianza • Las pruebas producen mejores sistemas o Detectamos bugs más temprano @randyshoup linkedin.com/in/randyshoup
  • 33. TDD Mejora el Esfuerzo de Desarrollo @randyshoup linkedin.com/in/randyshoup • 75% leyendo códigos existentes • 20% modificando códigos existentes • 5% produciendo nuevos códigos https://blogs.msdn.microsoft.com/peterhal/2006/01/04/what-do-programmers-really-do-anyway-aka-part-2-of-the-yardstick-saga/
  • 34. TDD Mejora el Esfuerzo de Desarrollo @randyshoup linkedin.com/in/randyshoup • 75% leyendo códigos existentes • 20% modificando códigos existentes • 5% produciendo nuevos códigos https://blogs.msdn.microsoft.com/peterhal/2006/01/04/what-do-programmers-really-do-anyway-aka-part-2-of-the-yardstick-saga/
  • 35. “¿Tenemos tiempo para hacerlo dos veces?” “¡No tenemos tiempo para hacerlo mejor!”
  • 36. Por muchas restricciones que tengamos de tiempo y recursos, lo más importante es construir correctamente desde el principio.
  • 37. Construir Correctamente desde el Principio • Preferimos construir una funcionalidad completa en lugar de dos funcionalidades incompletas • Correcta no significa perfecta •  En Stitch Fix, basicamente no existe un sistema de gestión de bugs o Cuando encontramos un bug, priorizamos su solución o “Backlog” contiene nuevas funcionalidades para desarrollar o “Backlog” contiene tareas de “deuda tecnica” @randyshoup linkedin.com/in/randyshoup
  • 38. DevOps Es Como Trabajamos •¿Cómo Organizamos? •¿Qué Construimos? •¿Cuándo Construimos? •¿Cómo Construimos? •¿Cómo Gestionamos?
  • 39. “Usted lo construye, usted lo maneja.” -- Werner Vogels, CTO en Amazon
  • 40. Despliegue Continuo • Pipeline Repetible de Despliegue o Rápida entrega o Rápida recuparación • Desplegamos múltiples aplicaciones muchas veces por día • Producimos sistemas más estables o Entregamos micro-funcionalidades o Más fáciles de reparar, de comprender, y de diagnosticar @randyshoup linkedin.com/in/randyshoup
  • 41. Post-Mortems sin Culpable • Post-mortem después de cada incidente o Documentamos que pasó exactamente o ¿Qué sucedió? o ¿Qué fue mal? • Tenemos una discusión constructiva o ¿Qué contribuyó al incidente? o ¿Qué podríamos hacer mejor? Nuestros ingenieros compiten por asumir la responsabilidad (!) @randyshoup linkedin.com/in/randyshoup
  • 42. La discusión es constructiva Quisiera mejorar mi sistema
  • 43. Post-Mortems sin Culpable • Producimos un listado de acciones o ¿Cómo cambiaremos el proceso, la tecnología, la documentación, etc. o ¿Cómo podríamos automatizar la solución? o ¿Cómo podríamos diagnosticar más rápido? o ¿Cómo podríamos restablecer el servicio más rápido? • Aseguramos su implementación @randyshoup linkedin.com/in/randyshoup
  • 44. DevOps Es Como Trabajamos •¿Cómo Organizamos? •¿Qué Construimos? •¿Cuándo Construimos? •¿Cómo Construimos? •¿Cómo Gestionamos?