devops en aws: acelarando el desarrollo de software con developer tools
TRANSCRIPT
DevOps en AWS: Acelerando el desarrollo de software con AWS
Developer Tools
Henry Alvarado
Arquitecto de Soluciones
17 de Agosto de 2017
© 2017, Amazon Web Services
Actualmente, el software se mueve rápidamente
La creación y distribución de software es más fácil y más rápido que nunca:
Ahora las “Startups” tienen la capacidad de desarrollar, con poco o casi nada de presupuesto
Poner a disposición de millones de usuarios el software está al alcance de una descarga
Habilidad para moverse rápido es igual a la velocidad de disrupción
© 2017, Amazon Web Services
El modelo de entrega de software ha cambiado drásticamente
• Modelo antiguo de entrega • Nuevo modelo de entrega
© 2017, Amazon Web Services
Qué herramientas son necesarias para moverse rápido?
Tener la capacidad de liberar software en esta época, requiere de múltiples herramientas:
Herramientas para gestionar el flujo de liberación de software
Herramientas para probar y validar el código, para la identificación de defectos o problemas potenciales
Herramientas para desplegar las aplicaciones
Primero, necesitamos entender un poco del proceso de lanzamiento de software.
https://www.flickr.com/photos/jurvetson/5201796697/
© 2017, Amazon Web Services
El proceso de liberación de software tiene 4 fases principales:
Codificación Construcción Pruebas Despliegue
© 2017, Amazon Web Services
El proceso de liberación de software tiene 4 fases principales:
Codificación Construcción Pruebas Despliegue
Código fuente como .javaRevisión de código
© 2017, Amazon Web Services
El proceso de liberación de software tiene 4 fases principales:
Codificación Construcción Pruebas Despliegue
Código fuente como .javaRevisión de código
Compilación de códigoPruebas unitariasValidación de estilosMétricas de código
© 2017, Amazon Web Services
El proceso de liberación de software tiene 4 fases principales:
Codificación Construcción Pruebas Despliegue
Código fuente como .javaRevisión de código
Compilación de códigoPruebas unitariasValidación de estilosMétricas de código
Pruebas de integraciónPruebas de cargaPruebas de interfaz de usuariosPruebas de penetración
© 2017, Amazon Web Services
El proceso de liberación de software tiene 4 fases principales:
Codificación Construcción Pruebas Despliegue
Código fuente como .javaRevisión de código
Compilación de códigoPruebas unitariasValidación de estilosMétricas de código
Pruebas de integraciónPruebas de cargaPruebas de interfaz de usuariosPruebas de penetración
Despliegue a ambientes de producción
© 2017, Amazon Web Services
Niveles del proceso de liberación de software
Codificación Construcción Pruebas Despliegue
© 2017, Amazon Web Services
Niveles del proceso de liberación de software
Codificación Construcción Pruebas Despliegue
Integración Continua
© 2017, Amazon Web Services
Niveles del proceso de liberación de software
Codificación Construcción Pruebas Despliegue
Integración Continua
Entrega Continua
© 2017, Amazon Web Services
Niveles del proceso de liberación de software
Codificación Construcción Pruebas Despliegue
Integración Continua
Entrega Continua
Despliegue Continuo
Una mirada atrás del desarrollo en Amazon..
https://secure.flickr.com/photos/pixelthing/15806918992/
© 2017, Amazon Web Services
Ciclo de vida de despliegue monolítico
desarrolladores
releasetestbuild
pipeline de entregaapp
© 2017, Amazon Web Services
Transformación del desarrollo en Amazon: 2001-2009
2001 2009
MonolíticoAplicación + Equipos
Microservicios + 2 pizza teams
Las cosas fueron mucho mejor bajo este modelo y los equipos estaban desarrollando características más rápido que nunca, pero sentimos que aún podíamos mejorar.
© 2017, Amazon Web Services
Estábamos simplemente esperando
WaitWrite Code WaitBuild
Code WaitDeploy to Test
Deploy to Prod
© 2017, Amazon Web Services
Estábamos simplemente esperando
WaitWrite Code WaitBuild
Code WaitDeploy to Test
Deploy to Prod
Mins Días Mins Días Mins Días Mins
© 2017, Amazon Web Services
Estábamos simplemente esperando
WaitWrite Code WaitBuild
Code WaitDeploy to Test
Deploy to Prod
Semanas
Mins Mins Mins MinsDías Días Días
© 2017, Amazon Web Services
Semanas
Estábamos simplemente esperando
WaitWrite Code WaitBuild
Code WaitDeploy to Test
Deploy to Prod
Mins Days Mins Days Mins Days Mins
© 2017, Amazon Web Services
Construimos herramientas para automatizar el proceso de lanzamiento de software
https://secure.flickr.com/photos/lindseygee/5894617854/
© 2017, Amazon Web Services
Acciones automáticas y transiciones; desde el check-in a producción
Beneficios para desarrolladores:
•Más rápido
•Más seguro
• Consistente & Estandarizado
• Visualización del proceso
Pipelines
© 2017, Amazon Web Services
Despliegue de servicios
Despliegues sin
downtime
Rastreo de salud
Artefactos versionados y
rollbacks
© 2017, Amazon Web Services
Ciclo de vida del desarrollo de Micro Servicios
desarrolladores pipelines de entregaservicios
releasetestbuild
releasetestbuild
releasetestbuild
releasetestbuild
releasetestbuild
releasetestbuild
© 2017, Amazon Web Services
AWS Code Services
Codificación Construcción Pruebas Despliegue
AWS CodeCommit
© 2017, Amazon Web Services
AWS CodeCommit
Usa las herramientas de Git
Cifrado en reposo con llaves personalizadas
Escalabilidad, disponibilidad y durabilidad con Amazon S3
git pull/push CodeCommit
Objetos Giten S3
Indexación enAmazon DynamoDB
Llaves de encripción conAWS KMS
SSH / HTTPS
© 2017, Amazon Web Services
AWS Code Services
Codificación Construcción Pruebas Despliegue
AWS CodeBuild
© 2017, Amazon Web Services
AWS CodeBuild
Código Fuente Trigger CodeBuild Artefactos
Ningún servidor que administrar o mantener
Bajo costo, pago por uso
Use ambientes de construcción pre configurados o use los suyos
© 2017, Amazon Web Services
AWS Code Services
Codificación Construcción Pruebas Despliegue
AWS CodeDeploy
© 2017, Amazon Web Services
AWS CodeDeploy
TestCodeDeployv1, v2, v3
Producción
Dev
Revisiones de la aplicación
Grupos de Despliegue
Facilidad de despliegue
Facilidad de escalamiento
Despliegue a cualquier tipo de servidor (en la nube o en algún centro de datos local
© 2017, Amazon Web Services
v2 v2 v2 v2 v2 v2
Uno por vez
Mitad por vez
Todos a la vez
v2 v2 v2 v1 v1 v1
v2 v1 v1 v1 v1 v1 Agent Agent
Dev Deployment group
OProd Deployment group
Agent
AgentAgent
Agent Agent
Agent
Escoja el grupo y velocidad de despliegue
© 2017, Amazon Web Services
AWS Code Services
Codificación Construcción Pruebas Despliegue
AWS CodePipeline
© 2017, Amazon Web Services
AWS CodePipeline
Construcción1) Construcción
2) Pruebas
Unitarias
1) Despliegue
2) Pruebas de
Interface
Fuente Beta Producción
1) Despliegue
2) Pruebas de
Carga
Gamma
1) Despliegue Inicial
2) Despliegue Región 1
3) Despliegue Región 2
1) Pull
Fácil integración con herramientas de terceros
Acelere su proceso de despliegue
Valide, de manera consistente, sus despliegues
© 2017, Amazon Web Services
AWS Code Services
Codificación Construcción Pruebas Despliegue
AWS CodeCommit AWS CodeBuild Herramientas deTerceros
AWS CodeDeploy
AWS CodePipeline
Source
SourceGitHub
Build
JenkinsOnEC2Jenkins
Deploy
JavaAppElastic Beanstalk
PipelineStage
Action
Transition
CodePipeline
MyApplication
Source
SourceGitHub
Build
JenkinsOnEC2Jenkins
Deploy
JavaAppElastic Beanstalk
NotifyDevelopersLambda
CodePipeline
MyApplication
Acciones paralelas
Source
SourceGitHub
Build
JenkinsOnEC2Jenkins
Deploy
JavaAppElastic Beanstalk
NotifyDevelopersLambda
TestAPIRunscope
CodePipeline
MyApplication
Acciones secuenciales
8. Retrieve build artifact
EC2 instance
CodePipeline
Source
SourceGitHub
Build
JenkinsOnEC2Jenkins
Deploy
JavaAppElastic Beanstalk
Source Artifact
S3
Build Artifact
S3
5. Get source artifact
1. Get Changes
6. Store build artifact
3. Poll for Job
4. Acknowledge Job
7. Put Success
9. Deploy build artifact
Elastic Beanstalk
Web container
Java App
MyApplication
Integración con servicios AWS
Source Build Invoke Logic Deploy
Amazon S3
AWS CodeCommit
AWS ElasticBeanstalk
AWS CodeDeploy
AWS CloudFormation
AWS OpsWorks
AWS LambdaAWS CodeBuild
© 2017, Amazon Web Services
Lanzando a producción
• Tras haber realizado el build y las pruebas de su código, seguramente serán realizados algunos despliegues pre-productivos y finalmente es tiempo de producción!
• Usted querrá pensar en cosas como:• El impacto en los clientes
• El impacto en la infraestructura
• El impacto en el negocio
• ¿Cómo podemos rastrear esto y comunicar los despliegues?
© 2017, Amazon Web Services
Extienda AWS CodePipeline usando acciones customizadas
Actualizar tickets Aprovisionar recursos
Actualizar dashboards
Pruebas móviles
Enviar notificaciones • Escaneos de seguridad
© 2017, Amazon Web Services
¿Qué método de extensión debería usar?
Lambda Custom Action
Tareas de corta duración son fáciles de construir
Puede ejecutar cualquier tipo de trabajo
Tareas de larga duración requieren más trabajo
Control sobre los links desplegados en la consola de AWS CodePipeline
Soporte para Node.js, Python, C# y Java Soporte para cualquier lenguaje
Rueda sobre AWS Podría rodar on-premises
No hay que aprovisionar o administrar servidores
Requiere recursos de cómputo
© 2017, Amazon Web Services
FIN, ACK
• Hemos dado una rápida pasada sobre los beneficios de la Entrega Continua en el proceso de lanzamiento de software:
• La Integración Continua (build/test) ayuda a reducir de gran manera el ciclo de retroalimentación
• Podemos presentar software a nuestros usuarios con mucha más rapidez
• Al movernos rápidamente, podemos de hecho asegurar mayor calidad
• AWS CodePipeline permite la integración con casi cualquier herramienta o servicio que usted pueda imaginar!
• Además de visualización de lo que está ocurriendo!