continuous delivery-preso-barcamp

Post on 02-Jul-2015

483 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

ALCANZANDO EL NIRVANA:CONTINUOS DELIVERY, RAD, PAAS

domingo 6 de noviembre de 2011

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

@eapfel@martinpaoletta

TODOS TENEMOS UN MUERTO EN EL PLACARD

domingo 6 de noviembre de 2011

@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

@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

@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

@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

@eapfel@martinpaoletta

SI PUDIERAMOS SOLO APRETAR UN BOTÓN

domingo 6 de noviembre de 2011

@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

EXISTE UN MUNDO MEJOR!domingo 6 de noviembre de 2011

@eapfel@martinpaoletta

domingo 6 de noviembre de 2011

@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

@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

@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

@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

@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

@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

@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

@eapfel@martinpaoletta

PAAS - PLATFORM AS A SERVICE

IAAS

PAAS

domingo 6 de noviembre de 2011

@eapfel@martinpaoletta

domingo 6 de noviembre de 2011

@eapfel@martinpaoletta

domingo 6 de noviembre de 2011

@eapfel@martinpaoletta

ENTORNOS

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

@eapfel@martinpaoletta

ENTORNOS

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

@eapfel@martinpaoletta

ENTORNOS

PowerBook G4

PostgreSQL MongoDB Solr

Play! Framework

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

@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

@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

@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

@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

@eapfel@martinpaoletta

DATABASE MIGRATIONS

domingo 6 de noviembre de 2011

@eapfel@martinpaoletta

DATABASE MIGRATIONS

domingo 6 de noviembre de 2011

@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

@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

@eapfel@martinpaoletta

EL GAP DE LA ULTIMA MILLA

domingo 6 de noviembre de 2011

@eapfel@martinpaoletta

EL GAP DE LA ULTIMA MILLA

domingo 6 de noviembre de 2011

@eapfel@martinpaoletta

RAD - RAPID APPLICATION DEVELOPMENT

domingo 6 de noviembre de 2011

@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

DEMO

domingo 6 de noviembre de 2011

@eapfel@martinpaoletta

DEMO

domingo 6 de noviembre de 2011

@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

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

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

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

top related