© 2021, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark.
AWSWebinar Series Brasil
Juliana Takeuchi
Arquiteta de Soluções - AWS
Automatize seu processo de entrega de software
com CI/CD na AWS
Como interagir durante o evento?
Você tem um projeto e
quer conversar com o
time comercial da
AWS?
Acesse o LIVE CHAT
neste QR code ou pelo
link enviado no chat do
evento.
Perguntas & Respostas ao
vivo durante todo o
evento
Tire suas dúvidas com os
especialistas da AWS!
Clique no símbolo “?” e
envie suas perguntas.
O que é DevOps?
… aumentam a capacidade de uma organização de fornecer
aplicações e serviços em alta velocidade
Cultura Práticas Ferramentas
O que é DevOps
• Objetivo global
• Times autônomos e empoderados
• Colaboração e Comunicação
• Foco na entrega de valor para o cliente
• Microserviços
• Integração/Entrega/Implantação Contínua
• Desenvolvimento Ágil
• Infra as a Code
• Automação
• Testes de Qualidade e Segurança
• Monitoramento
• Ferramentas de Infra as a Code
Cultura
Ferramentas
Práticas
• Microserviços
• Sair de uma arquitetura “monolíta” para a utilização de vários serviços
individualmente.
Práticas de DevOps
Práticas de DevOps
• Integração contínua
• Entrega & implantação contínua
Práticas de DevOps
• Infraestrutura como código
• Modele seus recursos AWS usando código
Práticas de DevOps
• Monitoramento e registro
• Rastrear e analisar métricas e logs
• Entenda o desempenho em tempo real de infraestrutura e aplicação
Confiabilidade
Velocidade
Escala
Entregas rápidas
Colaboração melhorada
Segurança
Benefícios de DevOps
CI/CD Tools Monitoring & Tracing
SDKs
JavaScript Python PHP .NET Ruby Java Go Node.js C++
IDE
IDE and DevOps Toolkits
Eclipse
IntelliJ PyCharm Visual Studio
Visual Studio
Code
VSTS
CLI and Scripting Tools
AWS CLI Tools for
PowerShell
Infrastructure as Code
AWS Cloud Dev.
Kit (CDK)
Web Apps
Mobile
AWS
Amplify
Amazon
Corretto
Languages
Conjunto abrangente de serviços e ferramentas
Pipelines CI/CD
O que é um pipeline?
Continuous integration
Continuous deployment
Continuous delivery
Source Build Test Deploy
Estratégias de branch
O que é Branch?
Integração Contínua
Push
Feedback
Tests
Integração Contínua é uma prática onde os desenvolvedores mesclam seu novo código no
repositório remoto regularmente.
Principais objetivos:
• Encontrar e resolver bugs rapidamente
• Melhorar a qualidade
• Reduzir o tempo entre desenvolver, validar e lançar
novos recursos.
Integração Contínua
Push
Feedback
Tests
1. Os desenvolvedores verificam
regularmente o código em um repositório
central compartilhado.
2. Verificações automatizadas são
executadas regularmente contra a base de
código compartilhado.
3. Desenvolvedores recebem feedback das
verificações automatizadas sobre seu
código
Integração contínua
Continuous Integration Continuous Delivery
2
Pull code to your git
local repository
3
1 Write code
Compile and run
unit tests locally
4
Push code to a git
remote repository
6
QualityTests
5 Triggers
Pipeline
Buid & Create Image
8
Push to Registry
9
7
SecurityTests
Fast Feedback
Continuous Integration
Entrega Contínua
Continuous Integration Continuous Delivery
2
Pull code to your git
local repository
3
1 Write code
Compile and run
unit tests locally
4
Push code to a git
remote repository
6
QualityTests
5 Triggers
Pipeline
Buid & Create Image
8
Push to Registry
9
Deploy to Dev
7
SecurityTests Deploy to QA Deploy to Prod
11 AutomatedTests
10 12
13 AutomatedTests
14
More confident
Continuous Delivery
Jornada DevOps
Conforme sua organização amadurece, ela continuará a desenvolver o modelo CI / CD para incluir mais das
seguintes melhorias:
• Mais ambientes de preparação para testes específicos
• Testes unitários de infraestrutura e código de configuração, juntamente com o código de aplicação
• Integração com outros sistemas e processos
• Integração com a migração do esquema de banco de dados (se aplicável)
• Etapas adicionais para auditoria e aprovação de negócios
Source Build Test Production
Ferramentas
de
terceiros
AWS CodeCommit AWS CodeBuild AWS CodeDeploy
AWS CodePipeline
Pipeline de software-release:
AWS
CodeBuild
AWS Code Services
AWS CodeCommit
AWS CodeCommit
• Um repositório git seguro, gerenciado e escalável
• Mesma ferramenta padrão Git
• Escalabilidade, disponibilidade e durabilidade do Amazon S3
• Criptografia em descanso usando customer Keys
• Tamanho de repositório ilimitado
• Post-commit triggers podem invocar Amazon SNS ou Lambda
AWS CodeCommit
Git pull/push
AWS CodeCommit
Git objects on
Amazon S3
Git index on
Amazon DynamoDB
Cryptography keys
on AWS KMS
SSH or HTTPS
Mantenha a mesma experiência com git
$ git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/aws-cli
Cloning into 'aws-cli'...
Receiving objects: 100% (16032/16032), 5.55 MiB | 1.25 MiB/s, done.
Resolving deltas: 100% (9900/9900), done.
Checking connectivity... done.
$ nano README.rst
$ git commit -am 'updated README'
[master 4fa0318] updated README
1 file changed, 1 insertion(+)
AWS CodeBuild
AWS CodeBuild
• Gerencie o servidor de compilação que compila código-fonte, execute
testes e construa pacotes de software
• Escala continuamente e processa vários builds em paralelo
• Você pode criar ambientes de compilação personalizados usando
imagens do Docker
• Pague apenas pelo que você usou
• Integração nativa com AWS CodePipeline e Jenkins
Como funciona?
1. Baixa o Código fonte
2. Executa os comandos definidos no arquivo buildspec usando containers temporários ( novos
containers são criados para cada build)
3. Envia os logs de build para a console e para oAmazon CloudWatch logs
4. Manda os artefatos do build para um bucket noAmazon S3.
Como automatizar o processo de compilação com o AWS
CodeBuild?
• AWS CodePipeline totalmente integrado para CI/CD
• Plug-and-play (API/CLI)
• Crie seu ambiente de compilação
• Crie imagens docker com suas ferramentas
• Plugin de código aberto Jenkins
• Use o AWS CodeBuild como um trabalhador mestre do Jenkins
Exemplo de 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
AWS CodeDeploy
AWS CodeDeploy
• Lida com a complexidade de atualizar aplicativos
• Evita a indisponibilidade durante o deploy
• Realiza rollback automático em caso de falha
• Deploy em Amazon EC2 ou servidores on-premises, usando qualquer
linguagem e qualquer sistema operacional
• Integra-se com ferramentas de terceiros e AWS
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
Send application files to one directory
and configuration files to another
Set specific permissions on directories
and files.
Remove / add instances to Elastic Load
Balancing
Install dependency packages
Start Apache
Confirm deployment success
AWS CodePipeline
AWS CodePipeline
• Serviço de entrega contínua para atualizações rápidas e confiáveis de
aplicativos
• Modele e visualize seu processo de liberação de software
• Builds, tests, e deploys do código sempre que uma mudança ocorre
• Integra-se com ferramentas de terceiros e AWS
Source
Source
GitHub
Build
AWS CodeBuild
AWS CodeBuild
Deploy
JavaApp
AWS Elastic Beanstalk
Pipeline
Stage
Action
Transition
MyApplication
Build
AWS CodeBuild
AWS CodeBuild
Notify Developers
AWS Lambda
Ações paralelas
Source
Source
GitHub
MyApplication
Deploy
JavaApp
Elastic Beanstalk
Build
AWS CodeBuild
AWS CodeBuild
NotifyDevelopers
Lambda
Test API
Runscope
Ações sequenciais
Deploy
JavaApp
Elastic Beanstalk
Source
Source
GitHub
MyApplication
Build
AWS CodeBuild
AWS CodeBuild
Staging-Deploy
JavaApp
Elastic Beanstalk
Prod-Deploy
JavaApp
Elastic Beanstalk
QATeamReview
Manual Approval Aprovações manuais
Review
MyApplication
Obrigada!
Fique por dentro das
próximas sessões
Acesse a agenda de
webinars neste QR code
e inscreva-se!
QR CODE
Conte-nos o que achou
do webinar
Clique em “sair” para
responder uma rápida
pesquisa de satisfação.

Automatize seu processo de entrega de software com CI/CD na AWS

  • 1.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark. AWSWebinar Series Brasil Juliana Takeuchi Arquiteta de Soluções - AWS Automatize seu processo de entrega de software com CI/CD na AWS
  • 2.
    Como interagir duranteo evento? Você tem um projeto e quer conversar com o time comercial da AWS? Acesse o LIVE CHAT neste QR code ou pelo link enviado no chat do evento. Perguntas & Respostas ao vivo durante todo o evento Tire suas dúvidas com os especialistas da AWS! Clique no símbolo “?” e envie suas perguntas.
  • 3.
    O que éDevOps? … aumentam a capacidade de uma organização de fornecer aplicações e serviços em alta velocidade Cultura Práticas Ferramentas
  • 4.
    O que éDevOps • Objetivo global • Times autônomos e empoderados • Colaboração e Comunicação • Foco na entrega de valor para o cliente • Microserviços • Integração/Entrega/Implantação Contínua • Desenvolvimento Ágil • Infra as a Code • Automação • Testes de Qualidade e Segurança • Monitoramento • Ferramentas de Infra as a Code Cultura Ferramentas Práticas
  • 5.
    • Microserviços • Sairde uma arquitetura “monolíta” para a utilização de vários serviços individualmente. Práticas de DevOps
  • 6.
    Práticas de DevOps •Integração contínua • Entrega & implantação contínua
  • 7.
    Práticas de DevOps •Infraestrutura como código • Modele seus recursos AWS usando código
  • 8.
    Práticas de DevOps •Monitoramento e registro • Rastrear e analisar métricas e logs • Entenda o desempenho em tempo real de infraestrutura e aplicação
  • 9.
  • 10.
    CI/CD Tools Monitoring& Tracing SDKs JavaScript Python PHP .NET Ruby Java Go Node.js C++ IDE IDE and DevOps Toolkits Eclipse IntelliJ PyCharm Visual Studio Visual Studio Code VSTS CLI and Scripting Tools AWS CLI Tools for PowerShell Infrastructure as Code AWS Cloud Dev. Kit (CDK) Web Apps Mobile AWS Amplify Amazon Corretto Languages Conjunto abrangente de serviços e ferramentas
  • 11.
  • 12.
    O que éum pipeline? Continuous integration Continuous deployment Continuous delivery Source Build Test Deploy
  • 13.
  • 14.
    O que éBranch?
  • 15.
  • 16.
    Push Feedback Tests Integração Contínua éuma prática onde os desenvolvedores mesclam seu novo código no repositório remoto regularmente. Principais objetivos: • Encontrar e resolver bugs rapidamente • Melhorar a qualidade • Reduzir o tempo entre desenvolver, validar e lançar novos recursos. Integração Contínua
  • 17.
    Push Feedback Tests 1. Os desenvolvedoresverificam regularmente o código em um repositório central compartilhado. 2. Verificações automatizadas são executadas regularmente contra a base de código compartilhado. 3. Desenvolvedores recebem feedback das verificações automatizadas sobre seu código Integração contínua
  • 18.
    Continuous Integration ContinuousDelivery 2 Pull code to your git local repository 3 1 Write code Compile and run unit tests locally 4 Push code to a git remote repository 6 QualityTests 5 Triggers Pipeline Buid & Create Image 8 Push to Registry 9 7 SecurityTests Fast Feedback Continuous Integration
  • 19.
  • 20.
    Continuous Integration ContinuousDelivery 2 Pull code to your git local repository 3 1 Write code Compile and run unit tests locally 4 Push code to a git remote repository 6 QualityTests 5 Triggers Pipeline Buid & Create Image 8 Push to Registry 9 Deploy to Dev 7 SecurityTests Deploy to QA Deploy to Prod 11 AutomatedTests 10 12 13 AutomatedTests 14 More confident Continuous Delivery
  • 21.
    Jornada DevOps Conforme suaorganização amadurece, ela continuará a desenvolver o modelo CI / CD para incluir mais das seguintes melhorias: • Mais ambientes de preparação para testes específicos • Testes unitários de infraestrutura e código de configuração, juntamente com o código de aplicação • Integração com outros sistemas e processos • Integração com a migração do esquema de banco de dados (se aplicável) • Etapas adicionais para auditoria e aprovação de negócios
  • 22.
    Source Build TestProduction Ferramentas de terceiros AWS CodeCommit AWS CodeBuild AWS CodeDeploy AWS CodePipeline Pipeline de software-release: AWS CodeBuild AWS Code Services
  • 23.
  • 24.
    AWS CodeCommit • Umrepositório git seguro, gerenciado e escalável • Mesma ferramenta padrão Git • Escalabilidade, disponibilidade e durabilidade do Amazon S3 • Criptografia em descanso usando customer Keys • Tamanho de repositório ilimitado • Post-commit triggers podem invocar Amazon SNS ou Lambda
  • 25.
    AWS CodeCommit Git pull/push AWSCodeCommit Git objects on Amazon S3 Git index on Amazon DynamoDB Cryptography keys on AWS KMS SSH or HTTPS
  • 26.
    Mantenha a mesmaexperiência com git $ git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/aws-cli Cloning into 'aws-cli'... Receiving objects: 100% (16032/16032), 5.55 MiB | 1.25 MiB/s, done. Resolving deltas: 100% (9900/9900), done. Checking connectivity... done. $ nano README.rst $ git commit -am 'updated README' [master 4fa0318] updated README 1 file changed, 1 insertion(+)
  • 27.
  • 28.
    AWS CodeBuild • Gerencieo servidor de compilação que compila código-fonte, execute testes e construa pacotes de software • Escala continuamente e processa vários builds em paralelo • Você pode criar ambientes de compilação personalizados usando imagens do Docker • Pague apenas pelo que você usou • Integração nativa com AWS CodePipeline e Jenkins
  • 29.
    Como funciona? 1. Baixao Código fonte 2. Executa os comandos definidos no arquivo buildspec usando containers temporários ( novos containers são criados para cada build) 3. Envia os logs de build para a console e para oAmazon CloudWatch logs 4. Manda os artefatos do build para um bucket noAmazon S3.
  • 30.
    Como automatizar oprocesso de compilação com o AWS CodeBuild? • AWS CodePipeline totalmente integrado para CI/CD • Plug-and-play (API/CLI) • Crie seu ambiente de compilação • Crie imagens docker com suas ferramentas • Plugin de código aberto Jenkins • Use o AWS CodeBuild como um trabalhador mestre do Jenkins
  • 31.
    Exemplo de arquivobuildspec.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
  • 32.
  • 33.
    AWS CodeDeploy • Lidacom a complexidade de atualizar aplicativos • Evita a indisponibilidade durante o deploy • Realiza rollback automático em caso de falha • Deploy em Amazon EC2 ou servidores on-premises, usando qualquer linguagem e qualquer sistema operacional • Integra-se com ferramentas de terceiros e AWS
  • 34.
    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 Send application files to one directory and configuration files to another Set specific permissions on directories and files. Remove / add instances to Elastic Load Balancing Install dependency packages Start Apache Confirm deployment success
  • 35.
  • 36.
    AWS CodePipeline • Serviçode entrega contínua para atualizações rápidas e confiáveis de aplicativos • Modele e visualize seu processo de liberação de software • Builds, tests, e deploys do código sempre que uma mudança ocorre • Integra-se com ferramentas de terceiros e AWS
  • 37.
    Source Source GitHub Build AWS CodeBuild AWS CodeBuild Deploy JavaApp AWSElastic Beanstalk Pipeline Stage Action Transition MyApplication
  • 38.
    Build AWS CodeBuild AWS CodeBuild NotifyDevelopers AWS Lambda Ações paralelas Source Source GitHub MyApplication Deploy JavaApp Elastic Beanstalk
  • 39.
    Build AWS CodeBuild AWS CodeBuild NotifyDevelopers Lambda TestAPI Runscope Ações sequenciais Deploy JavaApp Elastic Beanstalk Source Source GitHub MyApplication
  • 40.
    Build AWS CodeBuild AWS CodeBuild Staging-Deploy JavaApp ElasticBeanstalk Prod-Deploy JavaApp Elastic Beanstalk QATeamReview Manual Approval Aprovações manuais Review MyApplication
  • 41.
    Obrigada! Fique por dentrodas próximas sessões Acesse a agenda de webinars neste QR code e inscreva-se! QR CODE Conte-nos o que achou do webinar Clique em “sair” para responder uma rápida pesquisa de satisfação.