Alura > Cursos de DevOps > Cursos de Builds > Conteúdos de Builds > Primeiras aulas do curso Integração Contínua: Pipeline de entrega e implementação contínua na EC2

Integração Contínua: Pipeline de entrega e implementação contínua na EC2

Planejamento - Apresentação

Boas-vindas ao curso Integração Contínua: Pipeline de entrega e implementação contínua na EC2. Sou o Leonardo Sartorello e vou te acompanhar neste curso.

Neste curso, veremos a história do Bruno. Ele já está trabalhando na nossa empresa há algum tempo e segue avançando em sua carreira.

Já fizemos várias coisas na parte de integração contínua e agora aprenderemos sobre a entrega contínua.

O que vamos aprender?

Aprenderemos a criar uma infraestrutura para nossa aplicação. Mas será apenas a infraestrutura mínima que a nossa aplicação precisa. Faremos de um jeito que gere o mínimo de custos e não entraremos em detalhes extravagantes sobre infraestrutura.

Também criaremos uma rotina de entrega contínua, onde ela vai colocar nossa aplicação em uma máquina virtual para que nossa aplicação possa rodar 24 horas por dia, sete dias por semana.

Para essa aplicação ser executada, nossa rotina terá que preparar o ambiente da aplicação dentro da máquina virtual.

Qual ferramenta vamos usar?

Usaremos o Amazon Web Services, que já está sendo utilizado em outros cursos da formação. E também usaremos a AWS, uma provedora de infraestrutura na nuvem onde podemos usar os tiers gratuitos.

Para quem é esse curso?

Esse curso é para quem está estudando integração contínua e agora vai entrar na parte de entrega contínua para colocar a aplicação dentro de uma máquina. Esse curso é recomendado para quem está fazendo os outros cursos da formação Integração Contínua e Entrega Contínua.

Fazendo esse curso

Além da nossa rotina de integração contínua, vamos revisitar permissões em Linux, aprenderemos um pouco sobre infraestrutura no cloud e também veremos os segredos do GitHub Action, que serão importantes para guardar chaves de acesso, endereços de IP e nomes de usuários, por exemplo, tanto no banco de dados quanto na nossa máquina virtual.

Espero que você esteja pronto e animado para este curso, porque eu estou!

Vamos lá?

Planejamento - Plano de execução

Continuaremos trabalhando com o time de DevOps em uma empresa de TI junto com o personagem Bruno.

Já criamos algumas rotinas de integração de código para a aplicação da nossa empresa, o que economiza o tempo da equipe e garante a lógica da nossa aplicação.

Agora, Bruno sugeriu automatizar o processo de entrega e implementação do software pronto.

Realmente, é só automatizar mais algumas coisas, como fizemos anteriormente, mas teremos que nos atentar a alguns pontos a mais dessa vez, principalmente em relação à segurança e confiabilidade de nossas rotinas. Pois não queremos correr o risco de a aplicação ficar fora do ar ou de termos algum vazamento de um segredo da aplicação.

Para começar, vamos planejar o que será feito.

Vamos colocar a nossa infraestrutura na AWS.

Atenção: Na AWS usaremos principalmente recursos gratuitos. Porém, podemos acabar precisando entrar em alguma coisa paga. Atenção ao trabalhar com a AWS, pois dependendo do que você criar pode acabar gerando algum custo.

O que vamos criar?

Nós precisaremos criar uma máquina virtual e um banco de dados. A máquina virtual para manter a nossa aplicação e o banco de dados para guardar os dados gerados pela aplicação. Para ambos usaremos o Free tier (nível gratuito da AWS).

Além disso, vamos configurar os grupos de segurança, para dar acesso e bloquear algumas entradas que não queremos que outras pessoas sem autorização acessem.

Vamos lá?

Planejamento - Verificando a infraestrutura

Antes de começar a mexer na aplicação que já temos em produção e que está atendendo nossos clientes hoje, vamos testar a rotina em um ambiente de desenvolvimento.

Vamos ver como a infraestrutura da nossa aplicação está configurada hoje e como podemos copiar essa estrutura. De modo que tenhamos algo próximo do que temos em produção hoje.

No campo de pesquisa do painel da AWS, vou buscar por "EC2". EC2 é a Amazon Elastic Compute Cloud, onde temos as máquinas virtuais.

Vamos entrar no console da EC2 e ver as máquinas em execução.

Temos aqui três instâncias em execução. Vamos clicar no botão "Instâncias (em execução)" e procurar a máquina em que está a nossa aplicação.

Temos duas máquinas que estão sem nome e uma que está com o nome "API Go", essa é a máquina utilizada atualmente para manter a nossa aplicação no ar. Vamos dar uma olhada nas configurações dela.

Ela está como uma t2.micro, então é uma máquina pequena, que está disponível para o Free tier. Isso é legal porque poderemos usar o mesmo tamanho que está em produção para o desenvolvimento.

Vou clicar no checkbox dela, para deixá-lo marcado, e na janela inferior poderemos ver mais configurações. Aqui teremos detalhes como o endereço IP dela, mas o que nos interessa no momento é saber a qual grupo de segurança ela está vinculada e verificar quais são as regras desse grupo de segurança.

Para isso, vamos clicar na aba "Segurança" e rolar um pouco a página. Encontraremos o campo "Grupos de Segurança" e o ID desse grupo: sg-4f6f3c62(default).

Descendo mais um pouco veremos as regras do grupo de segurança. No caso, a que mais nos interessa agora são as regras de entrada.

Atualmente, essa máquina permite a entrada em qualquer porta, "intervalo de portas: 0 - 65535", desde que o protocolo seja "TCP", ou seja, basicamente qualquer tipo de requisição.

Isso não é legal. Depois será necessário alterar essa regra de segurança para permitir somente as portas corretas para essa aplicação.

No nosso caso, de desenvolvimento, essa regra não causará problemas, porque a aplicação em desenvolvimento não guarda dados sensíveis dos clientes, mas a aplicação que está em produção guarda. Por isso devemos ter muito cuidado com a aplicação em produção.

Agora vamos dar uma olhada no banco de dados que está configurado para a aplicação. Vou pesquisar por "RDS" no campo de pesquisa da AWS, para acessarmos as instâncias do banco de dados.

Estudaremos o RDS (Relational Database Service) com mais calma quando formos criar o banco de dados da nossa infraestrutura. Por enquanto, vamos dar uma olhada em como eles estão feitos.

Agora estamos visualizando o painel da RDS. Vamos verificar as instâncias que estão em uso atualmente. Para isso, clicaremos em "Instâncias de bancos de dados (2/40)".

Apareceram duas instâncias: a alura-db, que é o banco de dados que a Alura está usando, e a api-go, que é o banco de dados da nossa aplicação.

A api-go está configurada como uma instância que está rodando PostgreSQL. Então, quando criarmos o banco de dados de desenvolvimento teremos que fazer com PostgreSQL. Ele rodando com tamanho t3.micro, que é uma máquina disponível no Free tier. E também podemos ver aqui a VPC: vpc-58c2fb22.

VPC é um jeito de separar nossas aplicações. Temos que lembrar de criar a nossa máquina virtual e o banco de dados na mesma VPC.

Essas são as informações que precisamos saber para criar o nosso banco de dados.

Vamos lá criar nossa infraestrutura?

Sobre o curso Integração Contínua: Pipeline de entrega e implementação contínua na EC2

O curso Integração Contínua: Pipeline de entrega e implementação contínua na EC2 possui 129 minutos de vídeos, em um total de 52 atividades. Gostou? Conheça nossos outros cursos de Builds em DevOps, ou leia nossos artigos de DevOps.

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

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

Conheça os Planos para Empresas