Primeiras aulas do curso Amazon Code Deploy: Deploy Continuo com AWS

Amazon Code Deploy: Deploy Continuo com AWS

Montando o ambiente de homologação - Introdução

Olá, seja bem-vindo a mais um treinamento aqui no Alura. Eu me chamo Leonardo e serei o instrutor de vocês aqui nessa jornada.

Nesse treinamento a gente vai abordar algumas questões mais específicas referentes ao processo de deploy, então a gente vai começar a abordar o build da aplicação, vamos falar um pouquinho sobre integração contínua e como juntar essas duas peças, no caso o deploy com integração contínua.

Depois a gente vai discutir esse deploy, melhorar o processo de deploy. Discutir algumas estratégias de como fazer um deploy de forma mais correta.

E, por último, a gente vai utilizar uma ferramenta da Amazon chamada CodeDeploy para automatizar toda essa questão que a gente discutiu das estratégias anteriormente.

Então eu espero que você aproveite esse treinamento, um forte abraço.

Montando o ambiente de homologação - Montando nossa maquina e revisando

Bom, então vamos começar montando a nossa infraestrutura.

Primeiro eu preciso montar uma máquina para rodar essa aplicação aqui, que é uma aplicação que eu já utilizei em outras ferramentas aqui no Alura, ela é uma aplicação feita em Java, roda no servidor de aplicação Java, pode ser o Tomcat, pode ser o Jetty, qualquer um.

No nosso treinamento a gente pode usar o Tomcat, mas ela usa um banco de dados MySQL, ok? Então a gente precisa de uma máquina que tenha tudo isso.

O que é a aplicação? Aplicação é um catálogo de vários produtos que cada loja consegue, teoricamente, anunciar seus produtos aqui.

Então repare que tem alguns livros, tem uma flauta. Eu posso buscar aqui pelo nome da loja, posso buscar por categoria, e etc.

Uma aplicação bem simples, mas suficiente pra gente poder aprender os conceitos que a gente vai exercitar aqui nesse treinamento.

Precisamos então montar uma máquina pra poder colocar essa aplicação nela.

Vamos dar uma revisadinha, provavelmente você já deve conhecer a Amazon, já deve ter usado o EC2 alguma vez na vida ou aqui no treinamento ou fora, em seus projetos pessoais, mas vamos dar uma revisada pra gente poder relembrar alguns nomes, alguns conceitos que talvez não estejam tão frescos assim, ok?

Então vamos lá no Console da Amazon, repare que temos aqui aquele panorama de vários serviços que eles fornecem pra gente.

No momento a gente vai se focar aqui ao EC2, mas depois vamos conhecer alguns outros serviços.

Repara que também a gente tem o Console, e também algumas expansões sobre as marcas que a gente tem rodando no momento.

Não vou me ater muito a isso aqui, provavelmente você já conhece.

O que eu vou fazer? Eu vou clicar aqui logo ao que interessa, no botão launch instance para a gente conseguir criar de fato nossa máquina.

Então vamos lá. Inicialmente você precisa escolher o template da máquina, a imagem que ela vai assumir.

O que eu vou fazer? Vou escolher a imagem do Ubuntu, vou selecionar aqui no botão azul, vou escolher o tipo de instância.

No caso, vamos utilizar aquela instância que é gratuita durante um ano que é o T2 Micro.

O que eu vou fazer? Já está selecionado por default, então vou clicar em review and launch.

Ok, agora vou fazer aquela revisão aqui, repara que ele já colocou aqui no security groups que não tem nenhuma porta aberta, isso não é legal para a gente, a gente precisa da porta 8080 aberta já que é uma aplicação rodando com Tomcat.

Então eu vou fazer o seguinte, vou clicar aqui em edit security groups e vou adicionar já de antemão a porta 8080, e eu quero que qualquer pessoa possa ter acesso a esse cara.

Eu vou renomear aqui, vou colocar o nome de catalogo-alura no security group e vou fazer o launch da máquina.

De novo fazer a nossa revisão e iniciar a instância.

Preciso criar aqui um novo key pair, que é aquele par de chaves privada e pública, aquele arquivo que a gente utiliza pra fazer autenticação durante o processo de SSH.

Então, o que eu vou fazer? Eu vou selecionar aqui create a new key pair e vou digitar o nome do meu arquivo, vou escrever aqui alura-catalogo-keypair.

Vou fazer o download desse arquivo e vou iniciar a instância.

Repara que vai demorar um tempinho até que ela se inicie.

Vamos ver aqui como está o processo. Está iniciando ainda.

Bom, então a nossa máquina está rodando, o que eu posso fazer? Preciso entrar nela pra poder instalar a infraestrutura. Instalar um servidor, um Tomcat, instalar o MySQL, instalar todas as coisas que a gente vai precisar para rodar a aplicação.

Bom, o que eu vou fazer? Vou clicar aqui no botão connect, e repare que nessa janela ele já fornece para a gente uma linha de SSH só para poder copiar esse cara e colar lá no nosso terminal.

Então eu vou abrir aqui o terminal no meu MAC, só que antes eu preciso achar aquele arquivo .pem que eu acabei de baixar.

Se eu acabei de baixar, ele está na pasta downloads, não é? Então eu vou até essa pasta e vou colar o arquivo.

Opa, repara que ele dá aqui um erro de permissão.

Por que ele dá esse erro? Porque eu preciso ajustar a permissão desse arquivo antes de fazer a SSH.

Então eu preciso fazer aqui um chmod 400 no nome do arquivo.

Então eu vou copiar pra cá. Feito o ajuste eu consigo agora acessar a máquina via SSH.

Eu estou dentro da máquina, o que eu preciso fazer? Instalar o Tomcat. Mas o Tomcat é um servidor Java, ele só vai funcionar se o JDK ou o JRE estiver lá.

Então o que eu vou fazer? Sudo apt-get update para poder atualizar os pacotes.

Feito a atualização, o que eu vou fazer? Sudo apt-get install openjdk-8-jdk.

Quando você fizer a instalação, então você pode fazer a instalação tanto pelo JDK quanto pelo JRE. No nosso caso, eu vou fazer JDK mesmo porque nós vamos realmente usar o JDK aqui neste treinamento. Já, já você vai entender o porquê.

Então enquanto ele faz a instalação aí, vamos aguardar.

Vamos ver se está instalado certo. O que que eu vou fazer? Javac -version para verificar. Show de bola, javac 1.8 está instalado, então javac JDK já está instalado.

O que eu preciso fazer agora? Instalar o Tomcat. O Java também está instalado, só para fazer aqui a verificação, está tudo certo.

O que eu vou fazer agora é instalar o Tomcat, então sudo apt-get install tomcat8 e vamos lá.

Sim, quero instalar o Tomcat.

Beleza, então vamos verificar se o Tomcat está rodando. O que eu vou fazer? Sudo service tomcat8 status.

Está rodando sim, não é? Então, se está rodando a gente pode, teoricamente, testar no navegador.

O que eu vou fazer é copiar aqui a URL, coloco no meu browser, :8080, então está rodando.

Vamos instalar agora o MySQL. O que eu vou fazer? Sudo apt-get install mysql-server.

Sim, quero instalar.

Repara que ele vai pedir pra você digitar a senha pro usuário root. No caso eu vou digitar aqui 12345678.

Ok. Repete a senha, 12345678.

Show de bola.

Bom, vamos testar então se o MySQL foi instalado. Vamos lá.

Mysql -u root -p, qual é a senha que a gente colocou mesmo? 12345678. Show de bola.

Já vou adiantar e vou criar aqui um banco. Create database alura_aws.

Feito isso, vamos dar uma verificada se está tudo certo aqui. Vou dar aqui um use alura_aws e show de bola, então o banco foi criado com sucesso.

Bom, agora que a nossa infraestrutura está cem por cento montada, a gente vai começar a focar em disponibilizar a aplicação.

A partir dos próximos vídeos a gente vai focar inteiramente nessa parte de tornar a aplicação disponível e fazer o processo de deploy. Vejo vocês nos próximos capítulos, um forte abraço.

Montando o ambiente de homologação - Montando ambiente de homologação

Você pode baixar o arquivo WAR usado na aula aqui.

No vídeo anterior, o que a gente fez? Criamos uma máquina, instalamos o JDK, essa máquina veio com o Montage, então a gente instalou o JDK via apt-get, e com o JDK instalado a gente já consegue rodar o Tomcat, então a gente baixou também o Tomcat, instalamos, verificamos que ele estava rodando e depois a gente instalou o MySQL como servidor de banco de dados.

Então a máquina já está pronta para receber a aplicação, falta a gente enviar essa aplicação para a máquina.

Como é que a gente vai fazer? Você vai baixar através de um link que eu vou deixar aqui na transcrição desse vídeo o arquivo WAR, que é o formato que a gente usa para transportar aplicações web feita em Java, ok?

Sempre iremos baixar esse arquivo e enviar para a máquina, que esse vai ser o nosso próximo passo.

Eu já tenho aqui na minha máquina, então eu já vou fazer o envio. Você baixe aí e faça junto comigo, ok?

Então agora vamos fazer o nosso primeiro deploy de forma trabalhosa.

O que eu vou fazer? Eu vou abrir aqui o terminal e o nosso objetivo vai ser pegar aquele arquivo que está aqui, no nosso caso, na minha máquina na pasta downloads, arquivo loja.war e pegar esse cara e jogar na nossa máquina que a gente acabou de criar.

O que eu vou fazer? Eu vou utilizar o comando scp -i, ou seja, eu quero fazer uma cópia usando como referência aqui o nosso key pair que a gente acabou de baixar lá quando a gente criou a nossa máquina, e eu quero enviar o arquivo loja.war para onde? Para essa máquina aqui.

Eu quero que fique no diretório principal da máquina e eu quero trabalhar com o usuário Ubuntu.

Beleza, vamos lá ver se tudo dá certo. Ok, já está fazendo a cópia. 13%, 19, 26, 33, 40, 47. Legal, 100%. Vamos entrar na máquina para ver se está tudo ok? Vamos lá.

Deixa eu fazer aqui connect, vou conectar na da máquina, vamos lá. Show de bola, está lá o nosso arquivo. Preciso agora jogar o nosso arquivo para qual pasta? Para a pasta loja.war para pasta var/lib/tomcat8/webapps/. Precisa fazer um sudo antes.

Vamos agora verificar então se a cópia foi feita. Cd esse cara, beleza, está lá o nosso arquivo.

E alguns minutos. Agora eu preciso fazer o seguinte, eu preciso reiniciar o Tomcat, service tomcat8 restart.

Beleza, vamos dar uma olhadinha para ver se está tudo certinho. Deixa eu dar uma olhada na pasta var/lib/tomcat8/webassps/ que é a pasta onde ficam os nossos artefatos, para ver se está tudo aqui.

Se ele já dezipou e criou a pasta para a gente, a pasta loja que foi uma aplicação, e é bom que o Tomcat faz isso automaticamente para a gente, basta ele estar rodando, então teoricamente deu tudo certo.

Vamos tentar acessar então. O que eu vou fazer? Eu vou pegar aqui a nossa máquina, :8080/loja. Vamos ver. Opa, não deu certo.

O que será que aconteceu? Bom, vamos pegar alguma pista aqui no log. Então vou voltar aqui dentro do tomcat8 tem a pasta logs, deixa eu acessar esse cara. Eu vou fazer aqui um cat localhost.2017-11-04. Vamos ver esse cara aqui.

Ele não está conseguindo acessar porque a gente criou uma senha no banco, só que a gente não está com essa senha para aplicação.

A nossa sorte é que a aplicação trabalha com variáveis de ambiente, então como eu posso fazer? Eu preciso criar uma variável de ambiente que configure essa senha para aplicação.

Então o que eu vou fazer? Eu vou precisar entrar na pasta usr/share/tomcat8/bin, e aqui dentro eu preciso criar um arquivo, então vou usar aqui o nano, mas você pode usar o editor que você preferir, eu vou usar o nano para criar o arquivo setenv.sh e eu vou criar aqui a variável de ambiente.

Senha=12345678 que foi o valor que eu defini aqui na minha máquina quando eu instalei o MyQSL, você coloca o valor que você definiu também.

Então vou fechar aqui o meu arquivo, vou salvar as alterações, yes, e está tudo feito.

Deixa eu conferir se está tudo ok aqui nesse arquivo.

Vamos fazer um cat setenv.sh. Show de bola, bacana.

Agora eu vou fazer o seguinte, vou reiniciar o Tomcat de novo, então tomcat8 restart, só que antes eu tenho que colocar aqui também um sudo.

Então vamos reiniciar o Tomcat e ver se deu tudo certo.

Bom, agora vamos tentar rodar esse Tomcat aí, essa aplicação.

Vou pegar aqui a URL do Tomcat, no caso da nossa instância, :8080 que é a porta do Tomcat padrão /loja que é o nome do nosso artefato. Show de bola, está tudo funcionando como a gente esperava.

Vou tentar fazer o login aqui, será que vai funcionar? Acredito que sim, tem nada de mais em fazer o login.

Consigo aqui editar alguns livros, ver a descrição deles, consigo fazer a edição. Vou tirar aqui, está redundante.

Então reparo, vamos dar uma recapitulada no que a gente fez aqui.

O que a gente pegou? A gente pegou o nosso WAR, jogamos na pasta webapps do Tomcat, mas como é que a gente fez isso? A gente fez aquele SCP para pasta principal aqui do meu Ubuntu. Fizemos o SCP e o cara foi parar ali, o nosso artefato está lá feliz e contente.

O que a gente fez com esse cara aqui? Copiou para a pasta webapps do Tomcat que é a pasta de artefatos.

Vamos voltar para essa pasta.

Estamos com ela ali. Repara que o arquivo WAR ainda se encontra ali.

Quando o Tomcat está rodando e você joga um artefato para dentro da pasta de artefatos, o que ele vai fazer? Ele vai automaticamente extrair esse cara e criar uma pasta com a sua aplicação.

Por isso que quando a gente acessa o Tomcat é preciso colocar aqui loja no final, porque eu posso ter quinhentas aplicações no Tomcat, mas lógico que você não vai fazer isso, é uma prática ruim, não faça isso.

Mas eu tenho que dizer qual a aplicação que eu quero acessar, então no caso eu quero acessar a loja, e portanto no final da URL eu coloco a loja.

Ok, só que repara que eu estou fazendo isso tudo com WAR pronto, ou seja, alguém construiu, esse cara me deu para que eu pudesse fazer o deploy na minha máquina.

Vamos tentar olhar pela perspectiva do desenvolvedor, o cara que trabalha nesse projeto aqui, o cara que precisa lançar uma feature nova para essa aplicação.

De repente mudar a barra preta para rosa, para amarelo, azul, e lançar uma feature nova aqui na aplicação, um link novo, alguma coisa nova nessa aplicação que ele precisa lançar.

O que ele vai precisar fazer? Ele vai precisar construir um novo artefato, fazer um build do projeto para no final do build construir, ter esse artefato em mãos para poder fazer o deploy.

Também não quero ficar pegando no nosso artefato e copiando pro Tomcat toda hora, eu quero automatizar isso, eu quero que alguém faça isso para a gente, será que tem alguma ferramenta que faça isso para a gente? Tem. A gente pode utilizar servidores de integração contínua que são justamente esses caras que ajudam no build da nossa aplicação.

Eles rodam o build quando há integração nova na nossa base de código, então alguém fez alguma alteração, os caras vão lá, rodam o build para a gente, geram o artefato e pode fazer o que quiser com esse artefato.

O nosso caso, a gente vai pegar esse artefato e jogar automaticamente nessa máquina no Tomcat.

Então o nosso próximo passo vai ser instalar o Jenkins, o servidor de integração contínua que a gente vai utilizar aqui nesse treinamento para fazer justamente isso.

Ele vai mudar o build do projeto, vai gerar o WAR e vai copiar automaticamente para o Tomcat fazer um deploy nessa máquina para a gente.

Então o nosso próximo passo vai ser instalar o Jenkins e conhecer um pouco sobre ele, como ele funciona e como construir o nosso primeiro job para fazer isso que a gente acabou de comentar, tudo bem?

Forte abraço, até lá.

Sobre o curso Amazon Code Deploy: Deploy Continuo com AWS

O curso Amazon Code Deploy: Deploy Continuo com AWS possui 93 minutos de vídeos, em um total de 43 atividades. Gostou? Conheça nossos outros cursos de Cloud em Infraestrutura, ou leia nossos artigos de Infraestrutura.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Cloud acessando integralmente esse e outros cursos, comece hoje!

  • 1206 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1206 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1206 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1206 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?

Acesso completo por 1 ano

Estude 24h/dia onde e quando quiser

Novos cursos todas as semanas