Empresas de ponta possuem ciclos de entrega de software medido em dias ao invés de meses. Essa agilidade é alcançada através de práticas de DevOps como entrega contínua, da qual permite automatizar a construção, testes e deploy mudanças no código da aplicação. Essa automação permite reconhecer problemas antecipadamente e aumentando a produtividade dos desenvolvedores.
Nesse webinar, vamos compartilhar os processos que os engenheiros da Amazon utilizam na prática de DevOps e discutir como você pode levar estes processos para sua empresa utilizando uma série de serviços (AWS CodePipeline e AWS CodeDeploy). Estes por sua vez, foram inspirados pela nossas ferramentas de desenvolvimento internos e cultura DevOps.
3. 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
4. Antigo modelo de fornecimento
de software
O modelo de distribuição de software mudou bastante
Novo modelo de fornecimento de
software
5. 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.
6. Primeiro, precisamos
entender um pouco mais
sobre os processos de
entrega de software
https://www.flickr.com/photos/jurvetson/5201796697/
7. • 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
8. Níveis dos processos de entrega
Código Construção Teste Produção
Integração contínua
Entrega contínua
Implantação contínua
9. 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
10. 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
13. 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.
20. 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
21. 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
22. 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
35. 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
36. 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
37. 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
40. 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
42. Exemplo de appspec.yml
version: 0.0
os: linux
files:
- source: /
destination: /var/www/html
permissions:
- object: /var/www/html
pattern: “*.html”
owner: root
group: root
mode: 755
hooks:
ApplicationStop:
- location: scripts/deregister_from_elb.sh
BeforeInstall:
- location: scripts/install_dependencies.sh
ApplicationStart:
- location: scripts/start_httpd.sh
ValidateService:
- 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
43. 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
OU
Grupo de implantação de produção
Agente
AgenteAgente
Agente Agente
Agente
Escolher velocidade e grupo de implantação
51. 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?
52. 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
53. 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
54.
55.
56.
57.
58.
59.
60.
61. 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!
62. Experimente hoje mesmo
Experimente o CodePipeline e aproveite uma estrutura
completa de fornecimento contínuo usando o Starter Kit
bit.ly/AWSCodeStarterKit
63. 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!