1) O documento discute DevOps na AWS, incluindo o que é DevOps, a história de DevOps na Amazon, e serviços da AWS para DevOps.
2) Serviços como o AWS CodeBuild, AWS CodeDeploy e AWS CodePipeline podem automatizar o processo de build, teste e deploy de aplicações.
3) A AWS fornece diversas ferramentas para implementar práticas DevOps como entrega contínua e infraestrutura como código.
23. Ações automatizadas e
transições; do check-in
à produção
Benefícios:
• Mais rápido
• Mais seguro
• Simplificação e
Padronização
• Visualização do
processo
Pipelines
24. E funcionou muito bem…
Em 2014:
• Milhares de times de serviços na Amazon
• Construindo microserviços
• Utilizando entrega contínua
• Diversos ambientes (staging, beta, production)
50 milhões de deploys
25. Todos os anos na Amazon, realizamos uma pesquisa com todos os
nossos desenvolvedores de software. Os resultados de 2014
mostraram que apenas uma ferramenta / serviço de desenvolvimento
poderia ser correlacionada estatisticamente com um desenvolvedor
mais feliz:
Nosso serviço de pipeline!
Entrega contínua = Desenvolvedores mais felizes!
E funcionou muito bem…
29. Amazon CloudWatch
AWS CloudTrail
Monitoração e Log
AWS DevOps Portfolio
AWS CodeCommit
AWS CodeDeploy
AWS CodePipeline
Desenvolvimento de Software
AWS CloudFormation
AWS OpsWorks
AWS Config
Infraestrutura como código
AWS CodeBuild
AWS CodeStar
AWS OpsWorks for
Chef Automate
AWS X-Ray
30. Desenvolva e teste sua
aplicação
https://secure.flickr.com/photos/spenceyc/7481166880
31. Serviço de build totalmente gerenciado que compila o
código-fonte, executa testes e produz pacotes de
software
Escala continuamente e processa vários builds
simultaneamente
Você pode criar ambientes de build personalizados
utilizando imagens do Docker
Pague apenas pelos minutos dos recursos de
computação que você utilizar
Lançado com integração do AWS CodePipeline e
Jenkins
AWS CodeBuild
32. Como funciona ?
1. Realiza o download do código fonte
2. Executa os commandos definidos no arquivo build
spec em contêiners temporários (são criadas novas
instâncias para cada build)
3. Envia os logs do build para a console e para o
CloudWatch Logs
4. Envia os artefatos gerados para um bucket no S3
33. Como automatizar o processo de build com AWS CodeBuild?
• Integrado com o AWS CodePipeline para CI/CD
• Facilmente plugável (API/CLI)
• Construa seu ambiente de build
• Crie imagens Docker com as ferramentas que precisar
• Plugin open-source para o Jenkins
• Utilize o AWS CodeBuild como worker de um Jenkins Master
34. Exemplo do arquivo buildspec.yml
version: 0.1
environment_variables:
plaintext:
JAVA_HOME: "/usr/lib/jvm/java-8-openjdk-amd64"
phases:
install:
commands:
- apt-get update -y
- apt-get install -y maven
pre_build:
commands:
- echo Nothing to do in the pre_build phase...
build:
commands:
- echo Build started on `date`
- mvn install
post_build:
commands:
- echo Build completed on `date`
artifacts:
type: zip
files:
- target/messageUtil-1.0.jar
discard-paths: yes
• Variáveis a serem utilizadas na
fase de build
• Exemplo do que pode ser feito
na fase de build:
• Você pode instalar pacotes ou
executar commandos de
preparação do ambiente.
• Executar verificações de sintaxe
na etapa de pre_build.
• Executar o commando de build
• Testar sua aplicação ou criar
uma imagem na etapa de
post_build
• Criar e armazenar um artefato
no Amazon S3
35. Realizando o build do seu código
Tipicamente o processo de build se refere a
linguagens que precisam ser compiladas:
• .NET: C#, F#, VB.net, etc.
• Java e JVM: Java, Scala, JRuby
• Go
• iOS: Swift, Objective-C
Também nos referimos ao processo de criação
de imagens do Docker como build EC2
36. E se não precisar realizar o build…
Diversas linguagens não precisam de build. Elas
são consideradas linguagens interpretadas:
• PHP
• Ruby
• Python
• Node.js
Você simplesmente realiza o deploy do seu código
EC2
37. Testando seu código
O teste é uma ciência e uma forma de arte!
Objetivos para testar seu código:
• Garantir a funcionalidade desejada
• Capturar erros de sintaxe
• Padronizar o código
• Reduzir erros devido a falhas de lógica
• Tornar as aplicações mais seguras
39. Qual serviço e etapa do processo de release corresponde a quais testes?
UI
Service
Unit
Third-party
tooling
AWS CodeBuild
BuildTest
40. Realizando o Deploy
de sua aplicação
https://secure.flickr.com/photos/simononly/15386966677
41. Automatiza implantações de código em
qualquer instância
Lida com a complexidade de atualizar as
aplicações
Previne indisponibilidade durante o deploy
Realiza a volta automática em caso de falha
Deploy no Amazon EC2 ou servidores on-
premises, em qualquer linguagem e qualquer
sistema operacional
Integra-se com ferramentas de terceiros e AWS
AWS CodeDeploy
42. Exemplo do arquivo 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
• Remove / adiciona instâncias
ao Elastic Load Balancer
• Instala pacotes de
dependências
• Inicia o Apache
• Confirma o sucesso do deploy
• Envia arquivos da aplicação
para um diretório e os de
configuração para outro
• Define permissões específicas
em diretórios e arquivos
43. v2 v2 v2 v2 v2 v2
Um por vez
Metade por vez
Todos de uma vez
v2 v2 v2 v1 v1 v1
v2 v1 v1 v1 v1 v1 Agent Agent
Dev deployment group
OR
Prod deployment group
Agent
AgentAgent
Agent Agent
Agent
Escolha a velocidade e o grupo de implantação
44. Orquestrando o Build e o
Deploy com um Pipeline
https://www.flickr.com/photos/seattlemunicipalarchives/12504672623/
45. Serviço de entrega contínua para atualizações
rápidas e confiáveis de aplicações
Modele e visualize seu processo de release de
software
Realiza o build, testes, e deploy do código
sempre que ocorrer uma alteração
Integra-se com ferramentas de terceiros e
AWS
AWS CodePipeline
50. Repositório de código Git seguro, gerenciado e
escalável
Use ferramentas no padrão do Git
Escalabilidade, disponibilidade, e durabilidade do
Amazon S3
Criptografia em repouso com chaves do cliente
Repositório sem limite de tamanho
Gatilhos de pós commit para chamar o Amazon SNS
ou Lambda
AWS CodeCommit
51. Controle de códigos fonte na nuvem
Seguro Gerenciado Altamente
Disponível
Armazene
qualquer objeto
52. AWS CodeCommit
Git pull/push AWS CodeCommit
Objetos Git no
Amazon S3
Índice Git no
Amazon DynamoDB
Chaves de criptografia
no AWS KMS
SSH or HTTPS
54. AWS CodeStar
• Desenvolva, crie e implante
aplicativos rapidamente na AWS
• Comece a desenvolver na AWS em
minutos
• Trabalhe em toda a sua equipe, com
segurança
• Gerencie facilmente a entrega de
software
• Escolha entre uma variedade de
modelos de projetos
68. App & X-Ray
SDK
EC2 Instance/Containers/Lambda
X-Ray
Daemon
Loca lhost
UDP
X-Ray API
HTTPS
HTTPS
X-Ray console
App & X-Ray
SDK
On-premises server
X-Ray
Daemon
Local host
UDP
EC2 Role
AWS
Credentials
DevOps team
HTTPS
Fluxo do X-Ray
69. X-Ray SDK
Permite que você inicie rapidamente sem precisar instrumentar
manualmente o código da aplicação.
Código Fonte no GitHub https://github.com/aws?q=xray-sdk
Disponível para Java, .NET, .NET Core, Python, Ruby, Go, & Node.js
Adiciona filtros automaticamente para capturar chamadas:
Serviços AWS através do AWS SDK
Serviços non-AWS sobre HTTP e HTTPS
Bancos de Dados (MySQL, PostgreSQL, e Amazon DynamoDB)
Filas (Amazon SQS)
70. AWS Cloud9
Ambiente de desenvolvimento integrado
baseado em nuvem (IDE)
Permite você escrever, executar, e depurar
seu código somente com o browser
Compartilhe seu ambiente com a equipe para
colaboração em tempo real
Acesso direto ao terminal
Fornece ótima experiência no
desenvolvimento serverless: permite testes
locais e pré-configura o ambiente de
desenvolvimento com todos os SDKs,
bibliotecas e plugins