Continuous delivery-preso-barcamp

812 views
734 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
812
On SlideShare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Continuous delivery-preso-barcamp

  1. 1. ALCANZANDO EL NIRVANA: CONTINUOS DELIVERY, RAD, PAASdomingo 6 de noviembre de 2011
  2. 2. QUIENES SOMOS? Ezequiel Apfel Martin Paoletta Red Bee Studios Jefe de grupo de Enterprise Architecture @eapfel GlobalLogic Argentina @martinpaoletta Guitarra en 4 Elementosdomingo 6 de noviembre de 2011
  3. 3. TODOS TENEMOS UN MUERTO EN EL PLACARD@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  4. 4. CASO DE ESTUDIO CMS PARA EMPRESA DE MEDIOS (USA) • Arquitectura compleja • Desarrollado bajo TDD • 3 aplicaciones interactuando: • Cobertura 90% • Admin • Grails, RabbitMQ, Oracle, Jackrabbit, Lucene, Tomcat • Publisher • Content Server@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  5. 5. High Level SAVVIS CMS-TOOL CMS-TOOL Architecture INTERACTS WITH CMS-STAGE THROUGH CMS-PUBLISHER CMS-TOOL Message between artefacts are asinchronous SAVVIS CMS-PUBLISHER CONTENT Rabbit LOCAL-REPO CMS-PUBLISHER JackRabbit MQ Environments DEV * UAT * PRD * SITE SITE SITE Preview Content Content Content Server Server Server SITE SITE SITE Live Content Content Content Server Server Server@eapfel@martinpaoletta Preview is Mandatory for production environmentdomingo 6 de noviembre de 2011
  6. 6. CASO DE ESTUDIO PROBLEMAS • Pasaje de ambiente integration a QA: • Interacciones entre componentes 10 hs promedio • Deltas de BD • Muchos archivos de con guración en cada server • Proceso de build complejo@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  7. 7. DONDE FALLAMOS? • Excesivos archivos de • Problemas de ambientes con guración • Builds tardes al cliente • Subestimar la complejidad del build • La última milla • Sobreestimar la complejidad del build • ¿Donde están los test?@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  8. 8. SI PUDIERAMOS SOLO APRETAR UN BOTÓN@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  9. 9. CASO DE ÉXITO • Con build y deployment bajo script: 20’ • 12’ solo ejecutando tests • 3,33% del tiempo original@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  10. 10. EXISTE UN MUNDO MEJOR!domingo 6 de noviembre de 2011
  11. 11. @eapfel@martinpaolettadomingo 6 de noviembre de 2011
  12. 12. CONTINUOS DELIVERY - PRINCIPIOS • El deployment debe ser repetible y • Terminado signi ca en producción con able • Calidad desde el día cero • Automatizar todo! • Todos son responsables del proceso • Si algo resulta difícil o cuesta mucho, de release hacerlo más seguido (mejorar el proceso) • Mejorar continuamente • Versionar todo@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  13. 13. CONTINUOS DELIVERY - PRÁCTICAS • Construir los binarios una única vez • Usar el mismo mecanismo de deployment para todos los ambientes • Correr un smoke test • Si cualquier cosa falla, parar la linea de producción@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  14. 14. BUILD PIPELINE Aumento de confianza en el producto Ambientes más parecidos a producción Tests de aceptación de usuarios Etapa de commit Compilación Tests de Tests unitarios aceptación Producción Análisis automáticos Empaquetado Tests de capacidad Feedback más temprano@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  15. 15. BUILD Código fuente Ambiente y configuraciones Versionado Ambiente y configuraciones PIPELINE Testers UAT Configurar ambiente Deploy de binarios Deploy de binarios Smoke test Desarrolladores Revisar métricas de código y fallos en la suite de tests Tests de aceptación Etapa de commit Tests de capacidad Compilación automáticos Configurar ambiente Tests unitarios Configurar ambiente Deploy de binarios Análisis Deploy de binarios Smoke test Empaquetado Smoke test Pruebas de capacidad Tests de aceptación Operaciones Producción Pulsan botón para release Configurar ambiente Deploy de binarios Smoke test Almacena binarios y Almacena Binarios Binarios metadata metadata@eapfel@martinpaoletta Repositorio de artefactosdomingo 6 de noviembre de 2011
  16. 16. @eapfel@martinpaolettadomingo 6 de noviembre de 2011
  17. 17. @eapfel@martinpaolettadomingo 6 de noviembre de 2011
  18. 18. @eapfel@martinpaolettadomingo 6 de noviembre de 2011
  19. 19. @eapfel@martinpaolettadomingo 6 de noviembre de 2011
  20. 20. Tests de aceptación UAT Etapa de commit Producción Compilación automáticos Configurar ambiente Configurar ambiente Tests unitarios Deploy de binarios Deploy de binarios Análisis Smoke test Smoke test Empaquetado Stress Tests Tests de aceptación Jenkins Master CentOS 5 Infraestructura On Premise Ambientes de pruebas UAT Producción Configurar ambiente Configurar ambiente Configurar ambiente Deploy de binarios Deploy de binarios Deploy de binarios Smoke test Smoke test Smoke test Tests de aceptación Jenkins Slave Windows 2008 Server Desarrollo Coding Tests unitarios Métricas locales Commit en repositorio Jenkins Slave OS X ? iTunes AppStore Dispositivos iOS OTA deployment Configurar ambiente Deploy de binarios@eapfel Smoke test@martinpaolettadomingo 6 de noviembre de 2011
  21. 21. ENTORNOS Ambientes más parecidos a producción Tests de aceptación de usuarios Etapa de commit Compilación Tests de Tests unitarios aceptación Producción Análisis automáticos Empaquetado Tests de capacidad@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  22. 22. PAAS - PLATFORM AS A SERVICE PAAS IAAS@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  23. 23. @eapfel@martinpaolettadomingo 6 de noviembre de 2011
  24. 24. @eapfel@martinpaolettadomingo 6 de noviembre de 2011
  25. 25. ENTORNOS@eapfel@martinpaoletta Ambientes más parecidos a produccióndomingo 6 de noviembre de 2011
  26. 26. ENTORNOS@eapfel@martinpaoletta Ambientes más parecidos a produccióndomingo 6 de noviembre de 2011
  27. 27. ENTORNOS Play! Framework PostgreSQL MongoDB Solr PowerBook G4@eapfel@martinpaoletta Ambientes más parecidos a produccióndomingo 6 de noviembre de 2011
  28. 28. ENTORNOS Desarrollo: blue-tree-213 Play! Framework PostgreSQL MongoDB Solr PowerBook G4 Dyno Heroku MongoHQ Websolr@eapfel Postgres@martinpaoletta Ambientes más parecidos a produccióndomingo 6 de noviembre de 2011
  29. 29. ENTORNOS Desarrollo: blue-tree-213 UAT: messy-swamp-87 Play! Framework PostgreSQL MongoDB Solr Dyno Dyno Heroku PowerBook G4 MongoHQ Websolr Postgres Dyno Heroku MongoHQ Websolr@eapfel Postgres@martinpaoletta Ambientes más parecidos a produccióndomingo 6 de noviembre de 2011
  30. 30. ENTORNOS Desarrollo: blue-tree-213 UAT: messy-swamp-87 Prod: furious-smog-528 Play! Framework PostgreSQL MongoDB Solr Dyno Dyno Dyno Dyno Dyno Dyno Dyno Dyno Heroku Heroku PowerBook G4 MongoHQ Websolr MongoHQ Websolr Postgres Postgres Dyno Heroku MongoHQ Websolr@eapfel Postgres@martinpaoletta Ambientes más parecidos a produccióndomingo 6 de noviembre de 2011
  31. 31. ENTORNOS BLUE-GREEN Web Server Application Server Base de datos Apache Azul Tomcat Azul MySQL Azul Apache Verde Tomcat Verde MySQL Verde@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  32. 32. DATABASE MIGRATIONS@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  33. 33. DATABASE MIGRATIONS@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  34. 34. DATABASE MIGRATIONS • Versionar la base de datos y usar una • Asegurar que los tests creen los datos herramienta para manejar los cambios necesarios, evitar con ictos (vía particionamiento) • Intentar mantener compatibilidad hacia adelante y atrás con respecto al • Evitar integraciones vía bases de datos esquema de DB entre aplicaciones • Tratar de hacer siempre cambios aditivos@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  35. 35. ELIMINANDO EL GAP DE LA ULTIMA MILLA • “Entregado” (desarrollador) está muy • Que falta? lejos de “en producción, estable y produciendo valor” • Pruebas de integración automáticas • “En mi máquina funciona” • Pruebas de aceptación de usuario • Montado y deployment en otros ambientes • Producción!!@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  36. 36. EL GAP DE LA ULTIMA MILLA@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  37. 37. EL GAP DE LA ULTIMA MILLA@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  38. 38. RAD - RAPID APPLICATION DEVELOPMENT@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  39. 39. • Hotswap de clases, templates, etc • Stack completo • Diagnóstico y solución rápida de errores • Modelo stateless • Asíncrono • Java, Groovy y Scala@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  40. 40. DEMOdomingo 6 de noviembre de 2011
  41. 41. DEMO@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  42. 42. BIBLIOGRAFÍA • http://www.vance.com/steve/ • http://martinfowler.com/bliki/ perforce/Branching_Strategies.html BlueGreenDeployment.html • http://blog.heroku.com/archives/ 2009/2/23/ why_instant_deployment_matters/ • http://www.amazon.com/Continuous- Delivery-Deployment-Automation- Addison-Wesley/dp/0321601912@eapfel@martinpaolettadomingo 6 de noviembre de 2011
  43. 43. !"#$"%&#($) *+,-./0 !"#$%&()*$&+,-#*.!#)/,!&)0#(-")0 1!"#$%&()*$&+%&!2,3&%./%++,!&)444 5#!-&&2,!&)06789:;<=<><?9;@>7@A64 B&"$"-,!&)0!"#$%&()*$&+)"+C!4 !"#"$%"&()$#%&#**"+&#,-#,&."#."#&)/01#domingo 6 de noviembre de 2011
  44. 44. @eapfel ezequiel.apfel@globallogic.com @martinpaoletta martin.paoletta@globallogic.comdomingo 6 de noviembre de 2011

×