SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
ALCANZANDO EL NIRVANA:
                     CONTINUOS DELIVERY, RAD, PAAS
domingo 6 de noviembre de 2011
QUIENES SOMOS?




                                  Ezequiel Apfel                Martin Paoletta
                                 Red Bee Studios   Jefe de grupo de Enterprise Architecture
                                     @eapfel                 GlobalLogic Argentina
                                                               @martinpaoletta
                                                        Guitarra en 4 Elementos
domingo 6 de noviembre de 2011
TODOS TENEMOS UN MUERTO EN EL
     PLACARD




@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
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
@martinpaoletta
domingo 6 de noviembre de 2011
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 environment


domingo 6 de noviembre de 2011
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
@martinpaoletta
domingo 6 de noviembre de 2011
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
@martinpaoletta
domingo 6 de noviembre de 2011
SI PUDIERAMOS SOLO APRETAR UN BOTÓN




@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
CASO DE ÉXITO

     •   Con build y deployment bajo script:
         20’

          •   12’ solo ejecutando tests

          •   3,33% del tiempo original




@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
EXISTE UN MUNDO MEJOR!
domingo 6 de noviembre de 2011
@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
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
@martinpaoletta
domingo 6 de noviembre de 2011
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
@martinpaoletta
domingo 6 de noviembre de 2011
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
@martinpaoletta
domingo 6 de noviembre de 2011
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 artefactos
domingo 6 de noviembre de 2011
@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
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



@martinpaoletta
domingo 6 de noviembre de 2011
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
@martinpaoletta
domingo 6 de noviembre de 2011
PAAS - PLATFORM AS A SERVICE



                                    PAAS

          IAAS
@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
ENTORNOS




@eapfel
@martinpaoletta                  Ambientes más parecidos a producción
domingo 6 de noviembre de 2011
ENTORNOS




@eapfel
@martinpaoletta                  Ambientes más parecidos a producción
domingo 6 de noviembre de 2011
ENTORNOS




                    Play! Framework


       PostgreSQL      MongoDB          Solr




                         PowerBook G4




@eapfel
@martinpaoletta                                Ambientes más parecidos a producción
domingo 6 de noviembre de 2011
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ón
domingo 6 de noviembre de 2011
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ón
domingo 6 de noviembre de 2011
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ón
domingo 6 de noviembre de 2011
ENTORNOS BLUE-GREEN


                                 Web Server     Application Server   Base de datos

                                 Apache Azul       Tomcat Azul        MySQL Azul



                                 Apache Verde     Tomcat Verde       MySQL Verde




@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
DATABASE MIGRATIONS




@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
DATABASE MIGRATIONS




@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
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
@martinpaoletta
domingo 6 de noviembre de 2011
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
@martinpaoletta
domingo 6 de noviembre de 2011
EL GAP DE LA ULTIMA MILLA




@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
EL GAP DE LA ULTIMA MILLA




@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
RAD - RAPID APPLICATION DEVELOPMENT




@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
•   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
@martinpaoletta
domingo 6 de noviembre de 2011
DEMO


domingo 6 de noviembre de 2011
DEMO




@eapfel
@martinpaoletta
domingo 6 de noviembre de 2011
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
@martinpaoletta
domingo 6 de noviembre de 2011
!"#$"%&'#($)''
      *+,-./0''



         !"#$%&'(')'*$&+,-#*.!#)/,!&)0#(-")0
         1'!"#$%&'(')'*$&+%&!2,3&%./%'++,!&)444
         5#!'-&&2,!&)06789:;<=<><?9;@>7@A64
         B&"$"-',!&)0!"#$%&'(')'*$&+)"+C!4




                     !"#"$%"&'()$#%'&'#**"+'&#,-#,'&."#."#&)/01#
domingo 6 de noviembre de 2011
@eapfel
                                 ezequiel.apfel@globallogic.com

                                 @martinpaoletta
                                 martin.paoletta@globallogic.com




domingo 6 de noviembre de 2011

Más contenido relacionado

Similar a Continuous delivery-preso-barcamp

Greach 2011 - Cloud Foundry
Greach 2011 - Cloud FoundryGreach 2011 - Cloud Foundry
Greach 2011 - Cloud Foundrygreach_es
 
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic BeanstalkAWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic BeanstalkMauro Parra-Miranda
 
Oracle-Developer-Day-Colombia_MySQL-Feb27_12
Oracle-Developer-Day-Colombia_MySQL-Feb27_12Oracle-Developer-Day-Colombia_MySQL-Feb27_12
Oracle-Developer-Day-Colombia_MySQL-Feb27_12Mysql Latinoamérica
 
Case final
Case finalCase final
Case finalbecko_sb
 
José Uriarte - Administración Pública
José Uriarte - Administración PúblicaJosé Uriarte - Administración Pública
José Uriarte - Administración Públicayoulivek
 
Symfony Framework para el desarrollo de aplicaciones web
Symfony Framework para el desarrollo de aplicaciones webSymfony Framework para el desarrollo de aplicaciones web
Symfony Framework para el desarrollo de aplicaciones webEsteban Saavedra
 
Herramientas para el diseño e implementación de Cubos .pptx
Herramientas para el diseño e implementación de Cubos .pptxHerramientas para el diseño e implementación de Cubos .pptx
Herramientas para el diseño e implementación de Cubos .pptxAlejandroGuerrero892330
 
atSistemas - Presentación Integración Continua AUG Barcelona enero13
atSistemas - Presentación Integración Continua AUG Barcelona enero13atSistemas - Presentación Integración Continua AUG Barcelona enero13
atSistemas - Presentación Integración Continua AUG Barcelona enero13atSistemas
 
Taller de herramientas case
Taller de herramientas caseTaller de herramientas case
Taller de herramientas casebecko_sb
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelDomingo Suarez Torres
 
Cableado estructurado
Cableado estructuradoCableado estructurado
Cableado estructuradoCONALEP 153
 
Aprendamos tecnologia de almacenamiento y CLOUD COMPUTING
Aprendamos tecnologia de almacenamiento y CLOUD COMPUTINGAprendamos tecnologia de almacenamiento y CLOUD COMPUTING
Aprendamos tecnologia de almacenamiento y CLOUD COMPUTINGleoaranibar
 
08 Cast V Semana CMMI 2009
08 Cast V Semana CMMI 200908 Cast V Semana CMMI 2009
08 Cast V Semana CMMI 2009Pepe
 

Similar a Continuous delivery-preso-barcamp (20)

Greach 2011 - Cloud Foundry
Greach 2011 - Cloud FoundryGreach 2011 - Cloud Foundry
Greach 2011 - Cloud Foundry
 
Cloud foundry
Cloud foundryCloud foundry
Cloud foundry
 
Cloud foundry
Cloud foundryCloud foundry
Cloud foundry
 
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic BeanstalkAWS Summit Mexico City 2018 - Usando Elastic Beanstalk
AWS Summit Mexico City 2018 - Usando Elastic Beanstalk
 
Oracle-Developer-Day-Colombia_MySQL-Feb27_12
Oracle-Developer-Day-Colombia_MySQL-Feb27_12Oracle-Developer-Day-Colombia_MySQL-Feb27_12
Oracle-Developer-Day-Colombia_MySQL-Feb27_12
 
Ruby on Rails en Grandes Companias, Casos Reales
Ruby on Rails en Grandes Companias, Casos RealesRuby on Rails en Grandes Companias, Casos Reales
Ruby on Rails en Grandes Companias, Casos Reales
 
Introduction grails-es
Introduction grails-esIntroduction grails-es
Introduction grails-es
 
Case final
Case finalCase final
Case final
 
José Uriarte - Administración Pública
José Uriarte - Administración PúblicaJosé Uriarte - Administración Pública
José Uriarte - Administración Pública
 
Symfony Framework para el desarrollo de aplicaciones web
Symfony Framework para el desarrollo de aplicaciones webSymfony Framework para el desarrollo de aplicaciones web
Symfony Framework para el desarrollo de aplicaciones web
 
Herramientas para el diseño e implementación de Cubos .pptx
Herramientas para el diseño e implementación de Cubos .pptxHerramientas para el diseño e implementación de Cubos .pptx
Herramientas para el diseño e implementación de Cubos .pptx
 
atSistemas - Presentación Integración Continua AUG Barcelona enero13
atSistemas - Presentación Integración Continua AUG Barcelona enero13atSistemas - Presentación Integración Continua AUG Barcelona enero13
atSistemas - Presentación Integración Continua AUG Barcelona enero13
 
Taller de herramientas case
Taller de herramientas caseTaller de herramientas case
Taller de herramientas case
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache Camel
 
Blaapps - Servidor de Aplicaciones
Blaapps - Servidor de AplicacionesBlaapps - Servidor de Aplicaciones
Blaapps - Servidor de Aplicaciones
 
Un "TFS" para gobernarlos a todos
Un "TFS" para gobernarlos a todosUn "TFS" para gobernarlos a todos
Un "TFS" para gobernarlos a todos
 
Escalabilidad de Websites
Escalabilidad de WebsitesEscalabilidad de Websites
Escalabilidad de Websites
 
Cableado estructurado
Cableado estructuradoCableado estructurado
Cableado estructurado
 
Aprendamos tecnologia de almacenamiento y CLOUD COMPUTING
Aprendamos tecnologia de almacenamiento y CLOUD COMPUTINGAprendamos tecnologia de almacenamiento y CLOUD COMPUTING
Aprendamos tecnologia de almacenamiento y CLOUD COMPUTING
 
08 Cast V Semana CMMI 2009
08 Cast V Semana CMMI 200908 Cast V Semana CMMI 2009
08 Cast V Semana CMMI 2009
 

Continuous delivery-preso-barcamp

  • 1. ALCANZANDO EL NIRVANA: CONTINUOS DELIVERY, RAD, PAAS domingo 6 de noviembre de 2011
  • 2. QUIENES SOMOS? Ezequiel Apfel Martin Paoletta Red Bee Studios Jefe de grupo de Enterprise Architecture @eapfel GlobalLogic Argentina @martinpaoletta Guitarra en 4 Elementos domingo 6 de noviembre de 2011
  • 3. TODOS TENEMOS UN MUERTO EN EL PLACARD @eapfel @martinpaoletta domingo 6 de noviembre de 2011
  • 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 @martinpaoletta domingo 6 de noviembre de 2011
  • 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 environment domingo 6 de noviembre de 2011
  • 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 @martinpaoletta domingo 6 de noviembre de 2011
  • 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 @martinpaoletta domingo 6 de noviembre de 2011
  • 8. SI PUDIERAMOS SOLO APRETAR UN BOTÓN @eapfel @martinpaoletta domingo 6 de noviembre de 2011
  • 9. CASO DE ÉXITO • Con build y deployment bajo script: 20’ • 12’ solo ejecutando tests • 3,33% del tiempo original @eapfel @martinpaoletta domingo 6 de noviembre de 2011
  • 10. EXISTE UN MUNDO MEJOR! domingo 6 de noviembre de 2011
  • 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 @martinpaoletta domingo 6 de noviembre de 2011
  • 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 @martinpaoletta domingo 6 de noviembre de 2011
  • 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 @martinpaoletta domingo 6 de noviembre de 2011
  • 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 artefactos domingo 6 de noviembre de 2011
  • 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 @martinpaoletta domingo 6 de noviembre de 2011
  • 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 @martinpaoletta domingo 6 de noviembre de 2011
  • 22. PAAS - PLATFORM AS A SERVICE PAAS IAAS @eapfel @martinpaoletta domingo 6 de noviembre de 2011
  • 25. ENTORNOS @eapfel @martinpaoletta Ambientes más parecidos a producción domingo 6 de noviembre de 2011
  • 26. ENTORNOS @eapfel @martinpaoletta Ambientes más parecidos a producción domingo 6 de noviembre de 2011
  • 27. ENTORNOS Play! Framework PostgreSQL MongoDB Solr PowerBook G4 @eapfel @martinpaoletta Ambientes más parecidos a producción domingo 6 de noviembre de 2011
  • 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ón domingo 6 de noviembre de 2011
  • 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ón domingo 6 de noviembre de 2011
  • 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ón domingo 6 de noviembre de 2011
  • 31. ENTORNOS BLUE-GREEN Web Server Application Server Base de datos Apache Azul Tomcat Azul MySQL Azul Apache Verde Tomcat Verde MySQL Verde @eapfel @martinpaoletta domingo 6 de noviembre de 2011
  • 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 @martinpaoletta domingo 6 de noviembre de 2011
  • 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 @martinpaoletta domingo 6 de noviembre de 2011
  • 36. EL GAP DE LA ULTIMA MILLA @eapfel @martinpaoletta domingo 6 de noviembre de 2011
  • 37. EL GAP DE LA ULTIMA MILLA @eapfel @martinpaoletta domingo 6 de noviembre de 2011
  • 38. RAD - RAPID APPLICATION DEVELOPMENT @eapfel @martinpaoletta domingo 6 de noviembre de 2011
  • 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 @martinpaoletta domingo 6 de noviembre de 2011
  • 40. DEMO domingo 6 de noviembre de 2011
  • 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 @martinpaoletta domingo 6 de noviembre de 2011
  • 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. @eapfel ezequiel.apfel@globallogic.com @martinpaoletta martin.paoletta@globallogic.com domingo 6 de noviembre de 2011