View
549
Download
1
Category
Preview:
Citation preview
© 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
https://secure.flickr.com/photos/mgifford/4525333972
Por que
estamos aqui
hoje?
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
Antigo modelo de fornecimento
de software
O modelo de distribuição de software mudou bastante
Novo modelo de fornecimento de
software
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.
Primeiro, precisamos
entender um pouco mais
sobre os processos de
entrega de softwarehttps://www.flickr.com/photos/jurvetson/5201796697/
• 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
Níveis dos processos de entrega
Código Construção Teste Produção
Integração contínua
Entrega contínua
Implantação contínua
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
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
Considerações sobre
o desenvolvimento
na Amazon...
https://secure.flickr.com/photos/pixelthing/15806918992/
2001
Transformação do desenvolvimento na Amazon: 2001-2009
2009
aplicação
monolítico + equipesmicro serviços + equipes de 2 pizzas
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.
Em 2009,
realizamos um
estudo para
identificar onde
ainda poderia
haver ineficiências
Ficamos somente esperando.
EsperarEscrever
código EsperarConstrução
código EsperarImplantar para testar
Implantar para
produção
Ficamos somente esperando.
EsperarEscrever
código EsperarConstrução
código EsperarImplantar para testar
Implantar para
produção
Min. Dias Min. Dias Min. Dias Min.
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.
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
Criamos ferramentas
para automatizar nosso
processo de entrega de
softwarehttps://secure.flickr.com/photos/lindseygee/5894617854/
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
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
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
Código
Código
GitHub
Construção
JenkinsOnEC2
Jenkins
Implantação
JavaApp
Elastic Beanstalk
EstruturaEstágio
Ação
Transição
CodePipeline
MyApplication
Código
Código
GitHub
Construção
JenkinsOnEC2
Jenkins
Implantação
JavaApp
Elastic Beanstalk
Notificar_Devs
Lambda
CodePipeline
MyApplication
Ações paralelas
Código
Código
GitHub
Construção
JenkinsOnEC2
Jenkins
Implantação
JavaApp
Elastic Beanstalk
Notificar_Devs
Lambda
TesteAPI
Runscope
CodePipeline
MyApplication
Ações sequenciais
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
Temos uma boa lista de parceiros, que está crescendo
Código Construção Teste Implantação
Integrações de serviços da AWS
Código Invocar lógica Implantar
AWS Elastic BeanstalkAmazon S3
AWS CodeDeploy
AWS Lambda
AWS CodeCommit
Criando seu processo de
entrega contínua de com
o AWS Pipeline
https://www.flickr.com/photos/seattlemunicipalarchives/12504672623/
Construindo e testando
seu aplicativo
https://secure.flickr.com/photos/spenceyc/7481166880
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
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
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
Implantação de
aplicações
https://secure.flickr.com/photos/simononly/15386966677
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
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
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
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
https://www.flickr.com/photos/spacex/16510243060/
Implantação em
produção
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?
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
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
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!
Experimente hoje mesmo
Experimente o CodePipeline e aproveite uma estrutura
completa de fornecimento contínuo usando o Starter Kit
bit.ly/AWSCodeStarterKit
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!
Obrigado!
Recommended