62
DevOps en AWS: Acelerando el desarrollo de software con AWS Developer Tools Henry Alvarado Arquitecto de Soluciones 17 de Agosto de 2017

DevOps en AWS: acelarando el desarrollo de software con Developer Tools

Embed Size (px)

Citation preview

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

¿Por qué estamos aquí hoy?

© 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.

En 2009, hicimos un estudio para ver donde existían aún ineficiencias

© 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

© 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

Tenemos una fuerte lista de partners aún en crecimiento

Source Build Test Deploy

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!

¡No olvide llenar su

evaluación!