Despliegue Continuo

Un lujo a tu alcance


Fuente: E.pfeiffer@gmx.net

Vuestro anfitrión esta noche


Ingeniero de software  con malsanas tendencias hacia DevOps

Actualmente en MediaSmart Mobile

alejandrofer,  alexfernandez, @pinchito

Lo que no os espera


No es: TDD


No es: añadir pruebas a lo loco


No es: un seminario de Jenkins, Travis, Bamboo...


No es: demo completa

Pruebas Unitarias


Pufff...


No, si tengo que hacerlas...


Es que... señooo... no he hecho la tarea...


 El día que me ponga...

Foto no relacionada

Fuente: Alex E. Proimos

#facepalm

Foto no relacionada



(Fuente: S.H.I.T.
)


#fail

Fotos no relacionadas


(Fuente: Centro de Estudios Borjanos, blog.heraldo.es)


#EpicFail

Pruebas automáticas

Guardamos todos los tests y los lanzamos

  •  Un único botón
  •  Errores llamativos
  •  Sin interacción humana


Haz tu vida más fácil:

Diseña tu sistema para que sea testable

Pruebas de integración


Pruebas del sistema completo


Deben pasar por todos los puntos del sistema:

Petición → Servidor web →Base de datos


Entorno de pruebas (maqueta, preproducción, staging)


Ortogonales con pruebas de sistema

Pruebas de carga

Lanzamos peticiones sintéticas contra un servidor

Medimos la respuesta (tiempo total, latencia...)


Condiciones lo más realistas posibles


Resultado: peticiones por segundo, latencia

Más Pruebas automáticas

¡También podemos lanzar pruebas de integración!

¡Y de carga!


Siguen aplicando las tres condiciones:

  •  Un único botón
  •  Errores llamativos
  •  Sin interacción humana


¿Listos para el siguiente paso?

Despliegue tradicional

Puesta en producción de código nuevo


Nuevas funcionalidades o cambios


Acumulación de fallos


¡Una pesadilla!


Conclusión: cuantos menos despliegues, mejor

Foto no relacionada



(Fuente: comicvine?)


#facepalm

Foto no relacionada


(Fuente: Super Pirulo Txou)


#fail

Fotos no relacionadas


(Fuente: arte.about.com?)


#EpicFail

Contra corriente

¿Qué tal si desplegamos más a menudo?


  •  Menos complicación
  •  Menos código cambiado
  • Menos posibilidad de fallo
  • Menos sitios donde buscar
  • Menos entropía (os lo juro)


Mejor muchos cambios pequeños que uno grande


¿Una pesadilla continua?

Radiografía de un Despliegue Exitoso


Pruebas unitarias

Pruebas de integración


Pruebas de carga


Despliegue de código


¡Todo automatizable y automatizado!

La felicidad...

es un despliegue bien hecho


(Fuente: twotsi.com)

Paquetes

Jenkins CI (Java)


Atlassian Bamboo (propietario)

Travis CI (Ruby)


Monitorización


Tras un despliegue, vigila el sistema

Monitorización proactiva


Haz tu vida más fácil:
Diseña tu sistema para que sea monitorizable

No Bajes la Guardia



(Fuente: Wikipedia)

¿He sido yo?

Juntándolo todo


Pruebas unitarias

Pruebas de integración


Pruebas de carga


Despliegue de código

Monitorización

Stop!

Demo Time!

Atajos en la demo


Usa lo que proporciona el entorno: git pull, npm install, npm test


Usa base de datos de producción; configuración en fichero


No reinicia el servicio: supervisor, forever, Upstart, systemd


Despliegue en una única máquina


Notificación

Cambio Cultural


El despliegue continuo está preparado para tu organización


¿Está tu organización preparada para el despliegue continuo?


Se requiere un "integrador" boss


Los problemas de build tienen máxima prioridad:

Nadie se va a casa con el build roto

¡Gracias!

Pruebas asíncronas:

http://www.godtic.com/blog/2013/07/11/pruebas-asincronas-en-node-js/


Pruebas de carga:

http://www.godtic.com/blog/2013/08/27/pruebas-de-carga/


Librería deployment:
https://npmjs.org/package/deployment

Presentación disponible en:

https://slid.es/alexfernandez/despliegue-continuo

Despliegue Continuo

By Alex Fernández

Despliegue Continuo

  • 4,707