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
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
Atlassian Bamboo (propietario)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:
Despliegue Continuo
By Alex Fernández
Despliegue Continuo
- 4,707