continuous delivery-preso-barcamp

44
ALCANZANDO EL NIRVANA: CONTINUOS DELIVERY, RAD, PAAS domingo 6 de noviembre de 2011

Upload: martin-paoletta

Post on 02-Jul-2015

482 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Continuous delivery-preso-barcamp

ALCANZANDO EL NIRVANA:CONTINUOS DELIVERY, RAD, PAAS

domingo 6 de noviembre de 2011

Page 2: Continuous delivery-preso-barcamp

Ezequiel ApfelRed Bee Studios

@eapfel

Martin PaolettaJefe de grupo de Enterprise Architecture

GlobalLogic Argentina@martinpaoletta

Guitarra en 4 Elementos

QUIENES SOMOS?

domingo 6 de noviembre de 2011

Page 3: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

TODOS TENEMOS UN MUERTO EN EL PLACARD

domingo 6 de noviembre de 2011

Page 4: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

CASO DE ESTUDIOCMS PARA EMPRESA DE MEDIOS (USA)

• Arquitectura compleja

• 3 aplicaciones interactuando:

• Admin

• Publisher

• Content Server

• Desarrollado bajo TDD

• Cobertura 90%

• Grails, RabbitMQ, Oracle, Jackrabbit, Lucene, Tomcat

domingo 6 de noviembre de 2011

Page 5: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

UAT * PRD *DEV *

CMS-TOOL

CMS-PUBLISHERCONTENT

LOCAL-REPOJackRabbit

CMS-TOOLINTERACTS WITH CMS-STAGE THROUGH CMS-PUBLISHER

SAVVIS CMS-TOOL

SITE

ContentServer

SITE

ContentServer

SITE

ContentServer

SITE

ContentServer

SITE

ContentServer

SITE

ContentServer

Preview

Live

RabbitMQ

SAVVIS CMS-PUBLISHER

Message between artefacts are asinchronous

Preview is Mandatory for production environment

Environments

High Level Architecture

domingo 6 de noviembre de 2011

Page 6: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

CASO DE ESTUDIOPROBLEMAS

• Pasaje de ambiente integration a QA: 10 hs promedio

• Deltas de BD

• Muchos archivos de con!guración en cada server

• Proceso de build complejo

• Interacciones entre componentes

domingo 6 de noviembre de 2011

Page 7: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

DONDE FALLAMOS?• Excesivos archivos de

con!guración

• Subestimar la complejidad del build

• Sobreestimar la complejidad del build

• ¿Donde están los test?

• Problemas de ambientes

• Builds tardes al cliente

• La última milla

domingo 6 de noviembre de 2011

Page 8: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

SI PUDIERAMOS SOLO APRETAR UN BOTÓN

domingo 6 de noviembre de 2011

Page 9: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

CASO DE ÉXITO

• Con build y deployment bajo script: 20’

• 12’ solo ejecutando tests

• 3,33% del tiempo original

domingo 6 de noviembre de 2011

Page 10: Continuous delivery-preso-barcamp

EXISTE UN MUNDO MEJOR!domingo 6 de noviembre de 2011

Page 11: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

domingo 6 de noviembre de 2011

Page 12: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

• El deployment debe ser repetible y con!able

• Automatizar todo!

• Si algo resulta difícil o cuesta mucho, hacerlo más seguido (mejorar el proceso)

• Versionar todo

• Terminado signi!ca en producción

• Calidad desde el día cero

• Todos son responsables del proceso de release

• Mejorar continuamente

CONTINUOS DELIVERY - PRINCIPIOS

domingo 6 de noviembre de 2011

Page 13: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

• 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

CONTINUOS DELIVERY - PRÁCTICAS

domingo 6 de noviembre de 2011

Page 14: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

BUILD PIPELINEAumento de confianza en el producto

Ambientes más parecidos a producción

Feedback más temprano

Tests de aceptación de

usuariosEtapa de commit

CompilaciónTests unitarios

AnálisisEmpaquetado

Tests de capacidad

ProducciónTests de

aceptación automáticos

domingo 6 de noviembre de 2011

Page 15: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

BUILD PIPELINE

TestersDeploy de binarios

Operaciones Pulsan botón para release

DesarrolladoresRevisar métricas de código y

fallos en la suite de tests

Almacena binarios y metadata Binarios Almacena

metadata Binarios

VersionadoCódigo fuente Ambiente y configuraciones

Ambiente y configuraciones

Repositorio de artefactos

Etapa de commitCompilación

Tests unitariosAnálisis

Empaquetado

Tests de aceptación automáticos

Configurar ambienteDeploy de binarios

Smoke testTests de aceptación

UATConfigurar ambienteDeploy de binarios

Smoke test

Tests de capacidadConfigurar ambienteDeploy de binarios

Smoke testPruebas de capacidad

ProducciónConfigurar ambienteDeploy de binarios

Smoke test

domingo 6 de noviembre de 2011

Page 16: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

domingo 6 de noviembre de 2011

Page 17: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

domingo 6 de noviembre de 2011

Page 18: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

domingo 6 de noviembre de 2011

Page 19: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

domingo 6 de noviembre de 2011

Page 20: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

Jenkins MasterCentOS 5

Tests de aceptación automáticos

Configurar ambienteDeploy de binarios

Smoke testTests de aceptación

UAT

Stress Tests

ProducciónConfigurar ambienteDeploy de binarios

Smoke test

DesarrolloCoding

Tests unitariosMétricas locales

Commit en repositorio

Ambientes de pruebas

Configurar ambienteDeploy de binarios

Smoke testTests de aceptación

UATConfigurar ambienteDeploy de binarios

Smoke test

ProducciónConfigurar ambienteDeploy de binarios

Smoke test

iTunes AppStore

Jenkins SlaveOS X

Jenkins SlaveWindows 2008 Server

OTA deploymentDispositivos iOSConfigurar ambienteDeploy de binarios

Smoke test

Etapa de commitCompilación

Tests unitariosAnálisis

Empaquetado

?

InfraestructuraOn Premise

domingo 6 de noviembre de 2011

Page 21: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

ENTORNOS

Ambientes más parecidos a producción

Tests de aceptación de

usuariosEtapa de commit

CompilaciónTests unitarios

AnálisisEmpaquetado

Tests de capacidad

ProducciónTests de

aceptación automáticos

domingo 6 de noviembre de 2011

Page 22: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

PAAS - PLATFORM AS A SERVICE

IAAS

PAAS

domingo 6 de noviembre de 2011

Page 23: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

domingo 6 de noviembre de 2011

Page 24: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

domingo 6 de noviembre de 2011

Page 25: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

ENTORNOS

Ambientes más parecidos a produccióndomingo 6 de noviembre de 2011

Page 26: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

ENTORNOS

Ambientes más parecidos a produccióndomingo 6 de noviembre de 2011

Page 27: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

ENTORNOS

PowerBook G4

PostgreSQL MongoDB Solr

Play! Framework

Ambientes más parecidos a produccióndomingo 6 de noviembre de 2011

Page 28: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

ENTORNOS

PowerBook G4

PostgreSQL MongoDB Solr

Play! Framework

Desarrollo: blue-tree-213

Heroku Postgres MongoHQ Websolr

Dyno

Ambientes más parecidos a produccióndomingo 6 de noviembre de 2011

Page 29: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

ENTORNOS

PowerBook G4

PostgreSQL MongoDB Solr

Play! Framework

Desarrollo: blue-tree-213

Heroku Postgres MongoHQ Websolr

Dyno

UAT: messy-swamp-87

Heroku Postgres MongoHQ Websolr

Dyno Dyno

Ambientes más parecidos a produccióndomingo 6 de noviembre de 2011

Page 30: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

ENTORNOS

PowerBook G4

PostgreSQL MongoDB Solr

Play! Framework

Desarrollo: blue-tree-213

Heroku Postgres MongoHQ Websolr

Dyno

UAT: messy-swamp-87

Heroku Postgres MongoHQ Websolr

Dyno Dyno

Prod: furious-smog-528

Heroku Postgres MongoHQ Websolr

Dyno Dyno Dyno DynoDyno Dyno

Ambientes más parecidos a produccióndomingo 6 de noviembre de 2011

Page 31: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

ENTORNOS BLUE-GREEN

Web Server Application Server Base de datos

Apache Azul

Apache Verde

Tomcat Azul

Tomcat Verde

MySQL Azul

MySQL Verde

domingo 6 de noviembre de 2011

Page 32: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

DATABASE MIGRATIONS

domingo 6 de noviembre de 2011

Page 33: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

DATABASE MIGRATIONS

domingo 6 de noviembre de 2011

Page 34: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

• Versionar la base de datos y usar una herramienta para manejar los cambios

• Intentar mantener compatibilidad hacia adelante y atrás con respecto al esquema de DB

• Tratar de hacer siempre cambios aditivos

• Asegurar que los tests creen los datos necesarios, evitar con"ictos (vía particionamiento)

• Evitar integraciones vía bases de datos entre aplicaciones

DATABASE MIGRATIONS

domingo 6 de noviembre de 2011

Page 35: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

• “Entregado” (desarrollador) está muy lejos de “en producción, estable y produciendo valor”

• “En mi máquina funciona”

• Que falta?

• Pruebas de integración automáticas

• Pruebas de aceptación de usuario

• Montado y deployment en otros ambientes

• Producción!!

ELIMINANDO EL GAP DE LA ULTIMA MILLA

domingo 6 de noviembre de 2011

Page 36: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

EL GAP DE LA ULTIMA MILLA

domingo 6 de noviembre de 2011

Page 37: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

EL GAP DE LA ULTIMA MILLA

domingo 6 de noviembre de 2011

Page 38: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

RAD - RAPID APPLICATION DEVELOPMENT

domingo 6 de noviembre de 2011

Page 39: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

• Hotswap de clases, templates, etc

• Stack completo

• Diagnóstico y solución rápida de errores

• Modelo stateless

• Asíncrono

• Java, Groovy y Scala

domingo 6 de noviembre de 2011

Page 40: Continuous delivery-preso-barcamp

DEMO

domingo 6 de noviembre de 2011

Page 41: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

DEMO

domingo 6 de noviembre de 2011

Page 42: Continuous delivery-preso-barcamp

@eapfel@martinpaoletta

• http://www.vance.com/steve/perforce/Branching_Strategies.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

• http://martinfowler.com/bliki/BlueGreenDeployment.html

BIBLIOGRAFÍA

domingo 6 de noviembre de 2011

Page 43: Continuous delivery-preso-barcamp

!"#$"%&'#($)''*+,-./0''

!"#$%&'(')'*$&+,-#*.!#)/,!&)0#(-")01'!"#$%&'(')'*$&+%&!2,3&%./%'++,!&)4445#!'-&&2,!&)06789:;<=<><?9;@>7@A64B&"$"-',!&)0!"#$%&'(')'*$&+)"+C!4

!"#"$%"&'()$#%'&'#**"+'&#,-#,'&."#."#&)/01#domingo 6 de noviembre de 2011