Continuous Delivery, por donde empezar

56
www.sgcampus.com.mx @sgcampus Edwin Cruz Continuos Delivery, por donde empezar

Transcript of Continuous Delivery, por donde empezar

Page 1: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Edwin Cruz

Continuos Delivery, por donde empezar

Page 2: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

Edwin CruzPrincipal Consultant @ MagmaLabs

Page 3: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

¿Que es Continuous Delivery?

Page 4: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

¿Que es Continuous Delivery?

Continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time.

Page 5: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

¿Que es Continuous Delivery?

The ability to get changes, features, configuration changes, bug fixes, experiments into production or into the hands of users safely and quickly in a sustainable way.

Page 6: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

¿Que es Continuous Delivery?

A cheap way to deliver incremental changes to users

Page 7: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

Ah ha?• Tu Software se puede enviar a producción a través de un ciclo definido

• El principal objetivo del equipo es mantener el software fácil de enviar a producción, con mejor prioridad el agregar nuevas funcionalidades

• En cualquier momento, cualquier persona, puede recibir retroalimentación acerca del estado de la aplicación, aun y cuando se hacen cambios

• Se puede tener un botón de ‘enviar a producción’, donde en cualquier momento se puede presionar y se tendrá la seguridad de que funcionará

Page 8: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

¿Beneficios?

Reduce el riesgo, progreso real y retroalimentación de los usuarios más rápido

Page 9: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Entonces… ¿Porque?

¿Que tanto tiempo le toma a tu organización enviar a producción un cambio que involucra una sola linea de código?

Page 10: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Entonces… ¿Porque?

Construir la aplicación correcta

Page 11: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Entonces… ¿Porque?

Permite enviar a producción cambios que necesita el negocio sin restricciones como costos de operación.

Page 12: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Entonces… ¿Porque?

5 Programadores escribirían aproximadamente 5k lineas de código por semana, ¿Las enviarían todas a la vez a producción?

Page 13: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Entonces… ¿Porque?

Agile Manifesto: Our highest priority is to satisfy the customer through early and continuous delivery of valuable software

Page 14: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Entonces… ¿Porque?

Innova o muere Para cuando construyas algo que la gente pedía, ya querrán otra cosa diferente.

Page 15: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

Queremos eliminar el estrés que crea cada deployment

Page 16: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

Ok ok ok, ¿Por donde puedo empezar?

Page 17: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

12 Factor Methodology al rescate!

Page 18: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

1.- Codigo

El código debe estar guardado en un controlador de versiones, ejemplo: Git Extra: Git Flow

Page 19: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

2.- Dependencias

Declarar explícitamente las dependencias de la aplicación, incluyendo versiones compatibles

Page 20: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

3.- Configuración

Toda configuración tiene que ser via variable de ambiente, nada de configuraciones estáticas

Page 21: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

4.- Servicios externos

Cualquier servicio que la aplicación consuma a travez de la red debe poder ser reemplazado sin cambio de código, ejemplo: la base de datos

Page 22: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

5.- Compilar, Liberar y Ejecutar

Proceso por el cual se crea una nueva version de la aplicación Copilar: Crea un nuevo ‘binario’ Liberar: Aplica la configuración al binario Ejecutar: Ejecuta la nueva version

Page 23: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

5.- Compilar, Liberar y Ejecutar

Proceso por el cual se crea una nueva version de la aplicación Compilar: Crea un nuevo ‘binario’ Liberar: Aplica la configuración al binario Ejecutar: Ejecuta la nueva version

Page 24: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

6.- Procesos

Ejecuta la aplicación como un proceso totalmente independiente

Page 25: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

7.- Puerto de escucha

Ejecutar la aplicación para que escuche en un puerto dinámico, definido en tiempo de ejecución

Page 26: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

8.- Concurrencia

Para escalar, se hace de manera horizontal

Page 27: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

9.- Disponibilidad

Aplicación robusta con un rápido arranque y detención del proceso de una manera gentil

Page 28: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

10.- Paridad entre Dev & Prod

Mantener los ambientes de desarrollo y pruebas lo mas similar posible a producción

Page 29: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

11.- Logs

Manejar los logs como eventos en serie, etiquetados y con posibilidad de ser redireccionados a otra salida

Page 30: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

12.- Procesos de Administración

Procesos necesarios para la administración de la aplicación, por ejemplo migraciones a la base de datos deberían de correr en un ambiente idéntico al de la aplicación

Page 31: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

Deployments, ¿que tipos hay?

Page 32: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Deployments

Blue-Green Actualizar todo en un solo evento

Page 33: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Deployments

Canary Releases Dirigido a un porcentaje pequeño de los usuarios Reduce el riesgo Funciona para detectar problemas de rendimiento

Page 34: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

Deployment != Release

Page 35: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Deployment vs Release

Enviar código a producción no significa que esta activo Long-lived Branches Feature toggles, habilitar/deshabilitar modulos en tiempo real

Page 36: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

Reglas de Oro

Page 37: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

• El Software siempre es ‘deployable’ • Nada de ramas ‘long-lived’ • Ningún deployment se hace

manualmente

Page 38: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

Componentes necesarios

Page 39: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

• Control de versiones • Continuous Integration • Automated tests • Testing Environments

Page 40: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

¿Como lo implementamos nosotros?

Page 41: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Roles

Engineers QA Product Owners

Page 42: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Engineers

Escriben código teniendo siempre en cuenta hacer fácil su ejecución y portabilidad

Page 43: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Aseguramiento de la Calidad

• Automated • Manual • Manual/Automated

Page 44: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Product Owners

• Validación de la funcionalidad • No revisan Pixel perfect

Page 45: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Flujo de Trabajo

• Feature Branches • Pull requests • Review App por PR • Master branch está protegida • CI con flujo personalizado

Page 46: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Pull Requests

• Todo el trabajo se hace en feature branches • Engineers revisan su trabajo en la Review App • CI ejecuta las pruebas y validadores • Hasta que todo esta aprobado, se acepta el

cambio

Page 47: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

Pull Request Dashboard

Page 48: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

Pull Request

Page 49: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

Review Apps

Page 50: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Ambiente de Staging

• Una vez que las pruebas son ejecutadas y validadas, se hace deployment automáticamente a Staging

• QA revisa los criterios de aceptación incluyendo diferentes navegadores

• Si es un cambio de email, usamos Litmus

Page 51: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

Ambiente de Producción

Page 52: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Que hemos aprendido

• Planear el trabajo por adelantado (al menos 2 sprints)

• Tener una suite de pruebas confiables • Re-estimar el esfuerzo después de una

discusión técnica en los Sprint Planners

Page 53: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Que hemos aprendido

• Review Apps, replicar los datos de staging • No necesitamos las ramas de

‘Development’, ‘Release’ o ‘Staging’ • Feature toggle en vez de long lived PR’s

Page 54: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Que hemos aprendido

• En caso de un Hotfix, se crea una branch a partir de un tag de git

• En caso de una mala estimación, se parte la tarea en vez de editar la tarea

• Escalamiento horizontal es mas fácil y barato

Page 55: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Que hemos aprendido

• No necesitamos una posición dedicada a DevOps

• La elección de la herramienta de PM tiene que adaptarse al flujo de trabajo

Page 56: Continuous Delivery, por donde empezar

www.sgcampus.com.mx @sgcampus

www.sgcampus.com.mx

@sgcampus

Gracias

¿Preguntas?

Edwin Cruz MagmaLabs @softr8