Webinar: Introdução à Distribuição Contínua na AWS

64
© 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved. © 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Paulo Miguel Almeida Arquiteto Soluções 20 de julho de 2016 DevOps na AWS: Introdução a entrega contínua na AWS

Transcript of Webinar: Introdução à Distribuição Contínua na AWS

Page 1: Webinar: Introdução à Distribuição Contínua na AWS

© 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Paulo Miguel AlmeidaArquiteto Soluções

20 de julho de 2016

DevOps na AWS:

Introdução a entrega contínua na AWS

Page 2: Webinar: Introdução à Distribuição Contínua na AWS

https://secure.flickr.com/photos/mgifford/4525333972

Por que

estamos aqui

hoje?

Page 3: Webinar: Introdução à Distribuição Contínua na AWS

A velocidade de desenvolvimento esta crescendo rapidamente

A criação e a distribuição de software estão mais fáceis e

mais rápidas do que nunca:

• As startups agora podem competir com gigantes com

pouco ou nenhum investimento.

• Colocar seu software nas mãos de milhões de pessoas

está a um download de distância

Page 4: Webinar: Introdução à Distribuição Contínua na AWS

Antigo modelo de fornecimento

de software

O modelo de distribuição de software mudou bastante

Novo modelo de fornecimento de

software

Page 5: Webinar: Introdução à Distribuição Contínua na AWS

Quais ferramentas são necessárias alcançar isso?

Disponibilizar software nesse novo cenário voltado para entrega de

software requer muitas coisas:

• Ferramentas para gerenciar o fluxo do processo de entrega de

desenvolvimento de software.

• Ferramentas para testar e inspecionar devidamente

o código quanto suas falhas e possíveis problemas.

• Ferramentas para deploy (implantar) suas aplicações.

Page 6: Webinar: Introdução à Distribuição Contínua na AWS

Primeiro, precisamos

entender um pouco mais

sobre os processos de

entrega de softwarehttps://www.flickr.com/photos/jurvetson/5201796697/

Page 7: Webinar: Introdução à Distribuição Contínua na AWS

• Testes de

integração com

outros sistemas

• Testes de carga

• Testes de

interface do

usuário

• Pen test

Processos de entrega têm quatro fases principais

Código Construção Teste Produção

• Desenvolver

código-fonte

como arquivos

.java.

• Revisar o novo

código

• Compilar

o código

• Testes de

unidade

• Verificadores

de estilo

• Métricas de

código

• Criar imagens

de contêiner

• Implantação em

ambientes de

produção

Page 8: Webinar: Introdução à Distribuição Contínua na AWS

Níveis dos processos de entrega

Código Construção Teste Produção

Integração contínua

Entrega contínua

Implantação contínua

Page 9: Webinar: Introdução à Distribuição Contínua na AWS

Níveis dos processos de liberação

Código Construção Teste Produção

Integração contínua

Implantação contínua

Entrega contínua

Nosso foco hoje

Page 10: Webinar: Introdução à Distribuição Contínua na AWS

Benefícios da entrega contínua

Melhorar

a produtividade do

desenvolvedor

Encontrar e resolver

bugs rapidamente

Fornecer atualizações

com mais rapidez

Automatizar o processo

de entrega de software

Page 11: Webinar: Introdução à Distribuição Contínua na AWS

Considerações sobre

o desenvolvimento

na Amazon...

https://secure.flickr.com/photos/pixelthing/15806918992/

Page 12: Webinar: Introdução à Distribuição Contínua na AWS

2001

Transformação do desenvolvimento na Amazon: 2001-2009

2009

aplicação

monolítico + equipesmicro serviços + equipes de 2 pizzas

Page 13: Webinar: Introdução à Distribuição Contínua na AWS

Tudo melhorou muito

com esse modelo

e as equipes estavam

desenvolvendo

funcionalidades mais

rápido do que nunca,

mas sentimos que ainda

podíamos melhorar.

Page 14: Webinar: Introdução à Distribuição Contínua na AWS

Em 2009,

realizamos um

estudo para

identificar onde

ainda poderia

haver ineficiências

Page 15: Webinar: Introdução à Distribuição Contínua na AWS

Ficamos somente esperando.

EsperarEscrever

código EsperarConstrução

código EsperarImplantar para testar

Implantar para

produção

Page 16: Webinar: Introdução à Distribuição Contínua na AWS

Ficamos somente esperando.

EsperarEscrever

código EsperarConstrução

código EsperarImplantar para testar

Implantar para

produção

Min. Dias Min. Dias Min. Dias Min.

Page 17: Webinar: Introdução à Distribuição Contínua na AWS

Ficamos somente esperando.

EsperarEscrever

código EsperarConstrução

código EsperarImplantar para testar

Implantar para

produção

Semanas

Min. Dias Min. Dias Min. Dias Min.

Page 18: Webinar: Introdução à Distribuição Contínua na AWS

Ficamos somente esperando.

EsperarEscrever

código EsperarConstrução

código EsperarImplantar para testar

Implantar para

produção

Semanas

Min Dias Min Dias Min Dias Min

Page 19: Webinar: Introdução à Distribuição Contínua na AWS

Criamos ferramentas

para automatizar nosso

processo de entrega de

softwarehttps://secure.flickr.com/photos/lindseygee/5894617854/

Page 20: Webinar: Introdução à Distribuição Contínua na AWS

Ações e transições automatizadas; do início até a produção

Benefícios de desenvolvimento:

• Mais rápido

• Mais seguro

• Consistente e padronizado

• Visualização do processo

Pipelines

Page 21: Webinar: Introdução à Distribuição Contínua na AWS

Serviço de entrega contínua para atualizações

de aplicativo rápidas e confiáveis

Elabore e visualize seu processo de entrega

de software

Cria, testa e implanta seu código sempre que

há uma alteração de código

Integra-se a ferramentas de terceiros e da AWS

AWS CodePipeline

Page 22: Webinar: Introdução à Distribuição Contínua na AWS

Benefícios do AWS CodePipeline

Fluxo de trabalho

configurável

Fácil de integrar Melhora a qualidade

das entregas

Entrega rápida Comece a usar

rapidamente

Page 23: Webinar: Introdução à Distribuição Contínua na AWS

Código

Código

GitHub

Construção

JenkinsOnEC2

Jenkins

Implantação

JavaApp

Elastic Beanstalk

EstruturaEstágio

Ação

Transição

CodePipeline

MyApplication

Page 24: Webinar: Introdução à Distribuição Contínua na AWS

Código

Código

GitHub

Construção

JenkinsOnEC2

Jenkins

Implantação

JavaApp

Elastic Beanstalk

Notificar_Devs

Lambda

CodePipeline

MyApplication

Ações paralelas

Page 25: Webinar: Introdução à Distribuição Contínua na AWS

Código

Código

GitHub

Construção

JenkinsOnEC2

Jenkins

Implantação

JavaApp

Elastic Beanstalk

Notificar_Devs

Lambda

TesteAPI

Runscope

CodePipeline

MyApplication

Ações sequenciais

Page 26: Webinar: Introdução à Distribuição Contínua na AWS

8. Recuperar artefato

construído

Instância do EC2

CodePipeline

Código

Código

GitHub

Construção

JenkinsOnEC2

Jenkins

Implantação

JavaApp

Elastic Beanstalk

Artefato de origem

S3

Criar artefato

S3

5. Obter artefato

de origem

1. Obter alterações

6. Armazenar artefato

construído

3. Satisfazer tarefa

4. Confirmar tarefa

7. Realizar com êxito

9. Implantar artefato

construído

Elastic Beanstalk

Contêiner da Web

Aplicativo

Java

MyApplication

Page 27: Webinar: Introdução à Distribuição Contínua na AWS

Temos uma boa lista de parceiros, que está crescendo

Código Construção Teste Implantação

Page 28: Webinar: Introdução à Distribuição Contínua na AWS

Integrações de serviços da AWS

Código Invocar lógica Implantar

AWS Elastic BeanstalkAmazon S3

AWS CodeDeploy

AWS Lambda

AWS CodeCommit

Page 29: Webinar: Introdução à Distribuição Contínua na AWS

Criando seu processo de

entrega contínua de com

o AWS Pipeline

https://www.flickr.com/photos/seattlemunicipalarchives/12504672623/

Page 30: Webinar: Introdução à Distribuição Contínua na AWS
Page 31: Webinar: Introdução à Distribuição Contínua na AWS
Page 32: Webinar: Introdução à Distribuição Contínua na AWS
Page 33: Webinar: Introdução à Distribuição Contínua na AWS
Page 34: Webinar: Introdução à Distribuição Contínua na AWS

Construindo e testando

seu aplicativo

https://secure.flickr.com/photos/spenceyc/7481166880

Page 35: Webinar: Introdução à Distribuição Contínua na AWS

Construção/Compilação do código

“Construir” o código normalmente envolve

linguagens que precisam ser compiladas:

• Linguagens .NET: C#, F#, VB.net etc.

• Linguagens que rodam em cima de uma JVM:

Java, Scala, JRuby

• Go

• Linguagens: iOS: Swift, Objective-C

Também chamamos o processo de criação de

imagens do contêiner de Docker de ”construção" da

imagem.EC2

Page 36: Webinar: Introdução à Distribuição Contínua na AWS

Caso onde compilar não é necessário

Muitas linguagens não precisam de criação. Elas

são consideradas linguagens interpretadas:

• PHP

• Ruby

• Python*

• Node.js*

Você pode simplesmente implantar seu código!EC2

Page 37: Webinar: Introdução à Distribuição Contínua na AWS

Testando seu código

O teste é tanto uma ciência quanto uma forma de

arte!

Objetivos do teste do código:

• Confirmar a funcionalidade desejada

• Identificar erros de sintaxe de programação

• Padronizar formato e padrões de código

• Reduzir bugs decorrentes do uso indesejado do

aplicativo e falhas lógicas

• Deixar os aplicativos mais seguros

Page 38: Webinar: Introdução à Distribuição Contínua na AWS
Page 39: Webinar: Introdução à Distribuição Contínua na AWS

Implantação de

aplicações

https://secure.flickr.com/photos/simononly/15386966677

Page 40: Webinar: Introdução à Distribuição Contínua na AWS

Automatiza as implantações de código em

qualquer instância

Lida com a complexidade da atualização dos

aplicativos

Evite o tempo de indisponibilidade durante

a implantação da aplicação.

Funciona com Amazon EC2 ou em

servidores locais, em qualquer linguagem e

em qualquer sistema operacional

Integra-se a ferramentas de terceiros

e da AWS

AWS CodeDeploy

Page 41: Webinar: Introdução à Distribuição Contínua na AWS

Exemplo de appspec.ymlversion: 0.0os: linuxfiles:

- source: /destination: /var/www/html

permissions:- object: /var/www/html

pattern: “*.html”owner: rootgroup: rootmode: 755

hooks:ApplicationStop:

- location: scripts/deregister_from_elb.shBeforeInstall:

- location: scripts/install_dependencies.shApplicationStart:

- location: scripts/start_httpd.shValidateService:

- location: scripts/test_site.sh- location: scripts/register_with_elb.sh

Page 42: Webinar: Introdução à Distribuição Contínua na AWS

Exemplo de appspec.ymlversion: 0.0os: linuxfiles:

- source: /destination: /var/www/html

permissions:- object: /var/www/html

pattern: “*.html”owner: rootgroup: rootmode: 755

hooks:ApplicationStop:

- location: scripts/deregister_from_elb.shBeforeInstall:

- location: scripts/install_dependencies.shApplicationStart:

- location: scripts/start_httpd.shValidateService:

- location: scripts/test_site.sh- location: scripts/register_with_elb.sh

• Remover/adicionar instância ao

ELB

• Instalar pacotes de dependência

• Iniciar Apache

• Confirmar implantação bem-

sucedida

• Mais!

• Enviar arquivos do aplicativo para

um diretório

e os arquivos de configuração

para outro

• Definir permissões específicas

em diretórios

e arquivos específicos

Page 43: Webinar: Introdução à Distribuição Contínua na AWS

v2 v2 v2 v2 v2 v2

um de cada vez

metade de cada vez

tudo de uma vez

v2 v2 v2 v1 v1 v1

v2 v1 v1 v1 v1 v1 Agente Agente

Grupo de implantação de

desenvolvimento

OUGrupo de implantação de produção

Agente

AgenteAgente

Agente Agente

Agente

Escolher velocidade e grupo de implantação

Page 44: Webinar: Introdução à Distribuição Contínua na AWS
Page 45: Webinar: Introdução à Distribuição Contínua na AWS
Page 46: Webinar: Introdução à Distribuição Contínua na AWS
Page 47: Webinar: Introdução à Distribuição Contínua na AWS
Page 48: Webinar: Introdução à Distribuição Contínua na AWS
Page 49: Webinar: Introdução à Distribuição Contínua na AWS
Page 50: Webinar: Introdução à Distribuição Contínua na AWS

https://www.flickr.com/photos/spacex/16510243060/

Implantação em

produção

Page 51: Webinar: Introdução à Distribuição Contínua na AWS

Implantação em produção

Depois de criar e testar o código e passar por

algumas implantações de pré-produção,

é hora de passar para o mundo real!

Convém pensar sobre:

• Impacto para os clientes

• Impacto para a infraestrutura

• Impacto para a empresa

Como podemos acompanhar isso

e comunicar as implantações?

Page 52: Webinar: Introdução à Distribuição Contínua na AWS

Usando ações personalizadas o AWS CodePipeline

Atualizar tickets Provisionar recursos

Atualizar painéis

Testes em

dispositivos móveis

Enviar notificações Verificação de

segurança

Page 53: Webinar: Introdução à Distribuição Contínua na AWS

Qual método de extensão devo usar?

Lambda Ação personalizada

Tarefas curtas são fáceis de criar É possível executar qualquer tipo de

tarefas

As tarefas longas envolvem mais

trabalho

Controle sobre os links exibidos no

console

Suporte para Node.js, Python e Java Suporte para qualquer linguagem

Executado na AWS Pode ser executado em ambiente on-

premises

Nenhum servidor para provisionar ou

gerenciar

Requer recursos de computação

Page 54: Webinar: Introdução à Distribuição Contínua na AWS
Page 55: Webinar: Introdução à Distribuição Contínua na AWS
Page 56: Webinar: Introdução à Distribuição Contínua na AWS
Page 57: Webinar: Introdução à Distribuição Contínua na AWS
Page 58: Webinar: Introdução à Distribuição Contínua na AWS
Page 59: Webinar: Introdução à Distribuição Contínua na AWS
Page 60: Webinar: Introdução à Distribuição Contínua na AWS
Page 61: Webinar: Introdução à Distribuição Contínua na AWS

FIN, ACK

Vimos um breve resumo hoje dos benefícios da entrega contínua para

o nosso processo de entrega de software:

• A integração contínua (construção/teste) ajuda a diminuir muito o

ciclo de feedback

• Podemos disponibilizar o software para os usuários com muito mais

rapidez

• Melhorias na qualidade do software através da automação de

processos.

• O CodePipeline permite a integração com praticamente qualquer

serviço ou ferramenta que se possa imaginar!

• Maior visualização do que está acontecendo!

Page 62: Webinar: Introdução à Distribuição Contínua na AWS

Experimente hoje mesmo

Experimente o CodePipeline e aproveite uma estrutura

completa de fornecimento contínuo usando o Starter Kit

bit.ly/AWSCodeStarterKit

Page 63: Webinar: Introdução à Distribuição Contínua na AWS

Recursos para saber mais:• Integração contínua: https://aws.amazon.com/devops/continuous-integration/

• Entrega contínua: https://aws.amazon.com/devops/continuous-delivery/

• CodePipeline

• https://aws.amazon.com/codepipeline/

• https://aws.amazon.com/documentation/codepipeline/

• CodeDeploy

• https://aws.amazon.com/codedeploy/

• https://aws.amazon.com/documentation/codedeploy/

• https://github.com/awslabs/aws-codedeploy-samples

• Code Services Starter Kit: http://bit.ly/AWSCodeStarterKit

Aguarde porque ainda tem muito mais!

Page 64: Webinar: Introdução à Distribuição Contínua na AWS

Obrigado!