Técnicas para Implementación de
Desarrollo Continuo en AWS
Bruno Laurenti
Arquitecto de Soluciones
#AWSCloudExperience
En el desarrollo de Software,
la velocidad importa.
¿Cómo aceleramos la entrega
de software?
Primero, entendamos sobre las
etapas del desarrollo de software
Codificación Construcción Pruebas Despliegue
Integración continua
Delivery continuo
Despliegue continuo
Pipeline de Desarrollo de Software
¿Que beneficios tengo al
automatizar mis procesos?
46x
más despliegues
intervalo entre
despliegues
440xmenor
5xmenos fallas
recuperación
96x
más rápida
Source: 2017 State of DevOps Report (Puppet)
44%
Más tiempo empleado
desarrollando nuevas
funcionalidades.
¿Cómo era el desarrollo de
software en amazon.com?
https://secure.flickr.com/photos/pixelthing/15806918992/
2001
Transformación en Amazon: 2001-2009
2009
App monolítica +
equipos en silos
microservicios + 2 pizza teams
Con esta
transformación
pasamos a entregar
software mucho
más rápido. Pero
sentíamos que aún
faltaba algo...
En 2009,
realizamos un
estudio para
descubrir dónde
aún podrían existir
ineficiencias
La mayor parte del tiempo estabamos esperando…
EsperarCodificación EsperarConstrucción EsperarPruebas Despliegue
La mayor parte del tiempo estabamos esperando…
Minutos Días Minutos Días Minutos Días Minutos
EsperarCodificación EsperarConstrucción EsperarPruebas Despliegue
La mayor parte del tiempo estabamos esperando…
Minutos Días Minutos Días Minutos Días Minutos
Semanas
EsperarCodificación EsperarConstrucción EsperarPruebas Despliegue
La mayor parte del tiempo estabamos esperando…
Minutos Días Minutos Días Minutos Días Minutos
Semanas
Horas
EsperarCodificación EsperarConstrucción EsperarPruebas Despliegue
Construimos herramientas para
automatizar el desarrollo de Software
https://secure.flickr.com/photos/lindseygee/5894617854/
Codificación Construcción Prueba Despliegue
Entrega de Software:
AWS Code Services
Entrega de Software:
AWS CodeCommit
AWS Code Services
Codificación Construcción Prueba Despliegue
AWS CodeBuild
AWS Code Services
Codificación Construcción Prueba Despliegue
Entrega de Software:
Herramientas
de terceros
AWS Code Services
Codificación Construcción Prueba Despliegue
Entrega de Software:
AWS CodeDeploy
EC2 On-Prem
AWS Code Services
Codificación Construcción Prueba Despliegue
Entrega de Software:
Codificación Construcción Prueba Despliegue
AWS CodePipeline
AWS Code Services
Entrega de Software:
Codificación Construcción Prueba Despliegue
AWS CodePipeline
AWS CodeDeployHerramientas
de terceros
AWS CodeBuildAWS CodeCommit
AWS Code Services
Entrega de Software:
• Control de código fuente GIT seguro, escalable y administrado
• Herramienta GIT estándar
• Durabilidad, disponibilidad y escalabilidad del Amazon S3
• Datos cifrados en reposo con claves proporcionadas por el cliente
• Sin límites de repositorio
• Web-hooks a través de acciones con SNS / Lambda
AWS CodeCommit
AWS CodeCommit
AWS CodeBuild
• No es necesario administrar servidores
• Bajo costo, pago por uso
• Entornos de compilación pre-configurados o personalizados
• Integración con Jenkins
• Procesamiento de varios Builds en forma concurrente.
Código fuente Build Trigger CodeBuild Artefactos de salida
• Automatiza el despliegue de código en cualquier instancia
• Maneja la complejidad de actualizar sus aplicaciones
• Evite pérdida de servicio durante el despliegue de la aplicación
• Despliega en Amazon EC2 o en servidores on-premise, en cualquier
lenguaje de programación y en cualquier OS
• Se integra con herramientas de terceros y AWS
AWS CodeDeploy
AWS CodeDeploy
• Servicio de entrega continua para actualizaciones de aplicaciones
rápidas y confiables
• Modele y visualice su proceso de despliegue de software
• Crea, prueba y despliega su código cada vez que hay un cambio de
código
• Se integra con herramientas de terceros y AWS
AWS CodePipeline
AWS CodePipeline
Source
Source
GitHub
Build
JenkinsOnEC2
Jenkins
Deploy
JavaApp
Elastic Beanstalk
PipelineEtapas
Accione
s
Transicione
s
My Application
AWS CodePipeline
Source
Source
GitHub
Build
JenkinsOnEC2
Jenkins
Deploy
JavaApp
Elastic Beanstalk
NotifyDevelopers
Lambda
MyApplication
Acción Paralela
AWS CodePipeline
Source
Source
GitHub
Build
JenkinsOnEC2
Jenkins
Deploy
JavaApp
Elastic Beanstalk
NotifyDevelopers
Lambda
TestAPI
Runscope
My Application
Acción
Secuencial
AWS CodePipeline
Build
JenkinsOnEC2
Jenkins
Staging-Deploy
JavaApp
Elastic Beanstalk
Prod-Deploy
JavaApp
Elastic Beanstalk
QATeamReview
Manual Approval
My Application
Aprobaciones
Manuales
Review
AWS CodePipeline
Aprobación Manual
• Puede agregar una aprobación manual en cualquier punto del
pipeline, el flujo dejará de ejecutarse hasta que alguien apruebe o
rechace la revisión en curso.
• Pipeline dejará de ejecutarse cuando haya alcanzado el punto en el
que establece la acción de aprobación y solo se reanuda cuando haya
sido aprobada
• Acción de aprobación administrada con permisos de administración
de identidades y acceso (IAM) de AWS
• Notificar a los aprobadores de varias maneras, incluyendo correo
electrónico, SMS, webhooks y más
AWS CodePipeline AWS CodeCommit AWS CodeBuildAWS CodeDeploy
23 Agosto 2018
Ignacio Verdejo
DevOps Team Leader
Success Path
Calidad
a. menos errores
b. menos procesos manuales
c. aislamiento de errores
Eficiencia
a. proceso único
b. menos desarrollo correctivo
c. mayor autonomía
d. menos revisiones manuales
Predictibilidad
a. detección temprana de errores
b. disminución del riesgo
Results
50+ proyectos simultáneos
70+ integrantes del equipo
40K builds mensuales
2K deployments mensuales
200 deployments en producción por mes
Success Case
Continuous integration
a. todos los stacks (incl. mobile)
b. pruebas de carga
c. análisis estático
d. ciberseguridad
Continuous deployment
Mejora de procesos
a. acelerar nuestros kickoffs
b. stacks híbridos
Testing post deployment
a. rollbacks automáticos
Next Steps
Califica nuestra charla

Técnicas para la Implementación de Desarrollo Continuo en AWS