Mais conteúdo relacionado Semelhante a DevOps en AWS, acelarando el desarrollo de software con Developer Tools (20) Mais de Amazon Web Services LATAM (20) DevOps en AWS, acelarando el desarrollo de software con Developer Tools1. DevOps en AWS: Acelerando el
desarrollo de software con AWS
Developer Tools
Henry Alvarado
Arquitecto de Soluciones
Mayo 25 de 2017
3. © 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
4. © 2017, Amazon Web Services
El modelo de entrega de software ha
cambiado drásticamente
• Modelo antiguo de entrega • Nuevo modelo de entrega
5. © 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
7. © 2017, Amazon Web Services
El proceso de liberación de software tiene 4
fases principales:
Códificación Construcción Pruebas Despliegue
8. © 2017, Amazon Web Services
El proceso de liberación de software tiene 4
fases principales:
Códificación Construcción Pruebas Despliegue
Código fuente
como .java
Revisión de
código
9. © 2017, Amazon Web Services
El proceso de liberación de software tiene 4
fases principales:
Códificación Construcción Pruebas Despliegue
Código fuente
como .java
Revisión de
código
Compilación de
código
Pruebas unitarias
Validación de
estilos
Métricas de
código
10. © 2017, Amazon Web Services
El proceso de liberación de software tiene 4
fases principales:
Códificación Construcción Pruebas Despliegue
Código fuente
como .java
Revisión de
código
Compilación de
código
Pruebas unitarias
Validación de
estilos
Métricas de
código
Pruebas de
integración
Pruebas de carga
Pruebas de
interfase de
usuarios
Pruebas de
penetración
11. © 2017, Amazon Web Services
El proceso de liberación de software tiene 4
fases principales:
Códificación Construcción Pruebas Despliegue
Código fuente
como .java
Revisión de
código
Compilación de
código
Pruebas unitarias
Validación de
estilos
Métricas de
código
Pruebas de
integración
Pruebas de carga
Pruebas de
interfase de
usuarios
Pruebas de
penetración
Despliegue a
ambientes de
producción
12. © 2017, Amazon Web Services
Niveles del proceso de liberación de software
Codificación Construcción Pruebas Despliegue
13. © 2017, Amazon Web Services
Niveles del proceso de liberación de software
Codificación Construcción Pruebas Despliegue
Integración Continua
14. © 2017, Amazon Web Services
Niveles del proceso de liberación de software
Codificación Construcción Pruebas Despliegue
Integración Continua
Entrega Continua
15. © 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
16. Una mirada atrás
del desarrollo en
Amazon..
https://secure.flickr.com/photos/pixelthing/15806918992/
17. © 2017, Amazon Web Services
Ciclo de vida de despliegue monolítico
desarrolladores
releasetestbuild
pipeline de entregaapp
18. © 2017, Amazon Web Services
Transformación del desarrollo en Amazon:
2001-2009
2001 2009
Monolítico
Aplicación + Equipos
Microservicios + 2 pizza teams
19. 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.
21. © 2017, Amazon Web Services
Estábamos simplemente esperando
WaitWrite
Code WaitBuild
Code WaitDeploy
to Test
Deploy
to Prod
22. © 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
23. © 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
24. © 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
25. © 2017, Amazon Web Services
Construimos herramientas
para automatizar el proceso
de lanzamiento de software
https://secure.flickr.com/photos/lindseygee/5894617854/
26. © 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
27. © 2017, Amazon Web Services
Despliegue de servicios
Despliegues sin
downtime
Rastreo de salud
Artefactos versionados y
rollbacks
28. © 2017, Amazon Web Services
Ciclo de vida del desarrollo de Micro Servicios
desarrolladores pipelines de entregaservicios
releasetestbuild
releasetestbuild
releasetestbuild
releasetestbuild
releasetestbuild
releasetestbuild
29. © 2017, Amazon Web Services
AWS Code Services
Codificación Construcción Pruebas Despliegue
30. © 2017, Amazon Web Services
AWS Code Services
Codificación Construcción Pruebas Despliegue
AWS CodeCommit
31. © 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 Git
en S3
Indexación en
Amazon
DynamoDB
Llaves de
encripción con
AWS KMS
SSH / HTTPS
32. © 2017, Amazon Web Services
AWS Code Services
Codificación Construcción Pruebas Despliegue
AWS CodeBuild
33. © 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
34. © 2017, Amazon Web Services
AWS Code Services
Codificación Construcción Pruebas Despliegue
AWS CodeDeploy
35. © 2017, Amazon Web Services
AWS CodeDeploy
Test
CodeDeployv1, 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
36. © 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
O
Prod Deployment group
Agent
AgentAgent
Agent Agent
Agent
Escoja el grupo y velocidad de despliegue
37. © 2017, Amazon Web Services
AWS Code Services
Codificación Construcción Pruebas Despliegue
AWS CodePipeline
38. © 2017, Amazon Web Services
AWS CodePipeline
Construcción
1) 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
39. © 2017, Amazon Web Services
AWS Code Services
Codificación Construcción Pruebas Despliegue
AWS CodeCommit AWS CodeBuild Herramientas de
Terceros
AWS CodeDeploy
AWS CodePipeline
43. 8. Retrieve build artifact
EC2 instance
CodePipeline
Source
Source
GitHub
Build
JenkinsOnEC2
Jenkins
Deploy
JavaApp
Elastic 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
45. 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
57. © 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?
58. © 2017, Amazon Web Services
Extienda AWS CodePipeline usando acciones
customizadas
Actualizar tickets Aprovisionar recursos
Actualizar dashboards
Pruebas móviles
Enviar notificaciones • Escaneos de seguridad
59. © 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
60. © 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!
Notas do Editor - when you're working with a monolithic app, you have many developers all pushing changes through a shared release pipeline
- this causes frictions at many points of the lifecycle
- upfront during development, engineers need to coordinate their changes to make sure they're not making changes that will break someone else's code
- if you want to upgrade a shared library to take advantage of a new feature, you need to convince everyone else to upgrade at the same time – good luck with that
- and if you want to quickly push an important fix for your feature, you still need to merge it in with everyone else's in process changes
- this leads to "merge Fridays", or worse yet "merge weeks", where all the developers have to compile their changes and resolve any conflicts for the next release
- even after development, you also face overhead when you're pushing the changes through the delivery pipeline
- you need to re-build the entire app, run all of the test suites to make sure there are no regressions, and re-deploy the entire app
- to give you an idea of this overhead, Amazon had a central team whose sole job it was to deploy this monolithic app into production
- even if you're just making a one-line change in a tiny piece of code you own, you still need to go through this heavyweight process and wait to catch the next train leaving the station
- for a fast growth company trying to innovate and compete, this overhead and sluggishness was unacceptable
- the monolith became too big to scale efficiently so we made a couple of big changes
- one was architectural, and the other was organizational
. - one of the first primitives to emerge was Apollo, a name that we clearly borrowed from Nasa
- Apollo is the deployment engine for Amazon, everything from the retail site to AWS services
- it's how we roll out software changes across our servers
- we first launched Apollo over a dozen years ago
- in that time we've been continually learning about how to manage deployments and baking that knowledge back into the service
- one capability was zero downtime deployments
- there's no way we would allow taking the retail site down just to push a software change
- Apollo supports rolling out a software change without taking down an application
- we also can't let a deployment bug take down the app, so Apollo tracks deployment health and stops bad deployments
- with these new tools, we completed the puzzle
- the teams were decoupled and they had the tools necessary to efficiently release on their own