Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

[Dúvida] Passo a passo a seguir para subir uma aplicação

Olá pessoal, espero que todos estejam bem.

Atualmente trabalho em uma startup como desenvolvedor de software, mas como somos uma equipe pequena resolvi me aventurar no deploy da aplicação (front e back-end) que foi implementada, mesmo não tendo os pré-requisitos necessários. Para me preparar um pouco melhor para essa tarefa resolvi investir em diversos cursos da formação devOps, os quais já me ajudaram bastante até esse momento.

Nesse período aprendi como criar containers com docker, fazer o build de imagens, compreendi como criar instâncias na aws com o serviço ec2, além de ter estudado também os serviços de ECR, ECS e RDS. Até esse ponto já sei também alguns conceitos básicos de infraestrutura como código, usando ferramentas como terraform e ansible. Dessa forma, eu já possuo uma base de conhecimentos devOps, mas ainda não sei exatamente como eu faço para subir toda a aplicação de modo funcional para os usuários, ou seja, eu até sei subir imagens com docker no repositório da aws de forma isolada (por exemplo apenas o front-end ou back-end), mas não sei subir essas duas partes da aplicação para que os usuários tenham acesso ao serviço completo.

Dessa forma, gostaria muito de pedir a orientação da equipe e comunidade alura para me auxiliarem nessa tarefa, com comentários e com sugestões de cursos que eu posso acessar pela própria plataforma.

Desde já agradeço pela cooperação e pela atenção, grande abraço a toda comunidade, bora pra cima!

5 respostas

Olá, Thales!

Que legal ver seu empenho em aprender e se aventurar no mundo DevOps! Vou tentar te ajudar com um passo a passo básico para fazer o deploy de uma aplicação completa, envolvendo tanto o front-end quanto o back-end, utilizando os conhecimentos que você já adquiriu.

  1. Preparação do Ambiente:

    • Certifique-se de que suas imagens Docker para o front-end e o back-end estão prontas e armazenadas no ECR (Elastic Container Registry) da AWS.
  2. Configuração do ECS (Elastic Container Service):

    • Crie um Cluster no ECS. Este será o ambiente onde suas aplicações serão executadas.
    • Defina uma Task Definition para cada parte da sua aplicação (front-end e back-end). A Task Definition é como um "manual" que o ECS usa para saber como rodar seus containers.
    • Nas Task Definitions, especifique as imagens do ECR que você deseja usar, além de configurar detalhes como memória, CPU e portas de comunicação.
  3. Configuração do Networking:

    • Configure uma VPC (Virtual Private Cloud) se ainda não tiver uma. Dentro dela, crie sub-redes e configure um Load Balancer para distribuir o tráfego entre suas instâncias.
    • Configure as regras de segurança (Security Groups) para permitir o tráfego nas portas necessárias (por exemplo, 80 para HTTP e 443 para HTTPS).
  4. Deploy das Aplicações:

    • Inicie um Service no ECS para cada Task Definition. O Service gerencia a execução e a escalabilidade das suas Tasks.
    • Associe o Load Balancer ao Service para garantir que o tráfego seja direcionado corretamente para suas aplicações.
  5. Banco de Dados (se aplicável):

    • Se sua aplicação utiliza um banco de dados, você pode configurar uma instância RDS (Relational Database Service) na AWS. Certifique-se de que suas aplicações têm as credenciais corretas para acessar o banco de dados.
  6. Configuração de DNS:

    • Se você possui um domínio, pode usar o Route 53 para gerenciar o DNS e apontar seu domínio para o Load Balancer.
  7. Monitoramento e Logs:

    • Utilize o CloudWatch para monitorar a performance e os logs das suas aplicações. Isso te ajudará a identificar e resolver problemas rapidamente.

Espero ter ajudado e bons estudos!

Olá Lucas, ficou um pouco complicado pra entender tudo o que foi dito, então eu tentei pensar mais um pouco aqui pra processar, mas mesmo assim não ficou muito claro. Eu vou mencionar aqui os trechos que eu não compreendi muito bem

'3-Configuração do Networking:

Configure uma VPC (Virtual Private Cloud) se ainda não tiver uma. Dentro dela, crie sub-redes e configure um Load Balancer para distribuir o tráfego entre suas instâncias. Configure as regras de segurança (Security Groups) para permitir o tráfego nas portas necessárias (por exemplo, 80 para HTTP e 443 para HTTPS).

4-Deploy das Aplicações:

Inicie um Service no ECS para cada Task Definition. O Service gerencia a execução e a escalabilidade das suas Tasks. Associe o Load Balancer ao Service para garantir que o tráfego seja direcionado corretamente para suas aplicações.'

Na verdade acho que a origem de toda a minha dúvida é porque eu não entendo muito bem o que é uma vpc, eu até entendo que ela é uma rede privada que deve ser configurada para apenas algumas pessoas terem acesso, mas acho que ficaria mais confortável com uma explicação mais detalhada de alguém que compreende mais sobre o assunto. No segundo trecho mencionado acima (sobreload balance), eu gostaria de perguntar se eu deveria criar duas instâncias no ec2 para dividir a carga de acesso entre elas por exemplo.

Obrigado novamente, sinto muito, sou muito iniciante ainda e alguns conceitos ainda são confusos pra mim.

solução!

Oi, Thales!

Fica tranquilo, seus questionamentos são super válidos! Vou tentar simplificar os conceitos de VPC e Load Balancer para te ajudar a entender melhor.

A VPC (Virtual Private Cloud) é como uma rede virtual privada que você cria dentro da AWS. Pensa nela como uma "rede fechada" onde seus serviços (como suas instâncias EC2 ou containers no ECS) vão rodar. Dentro dessa VPC, você pode organizar tudo como se fosse uma infraestrutura real, criando sub-redes, regras de firewall, e até segmentando áreas para segurança.

  • Sub-redes: Dentro da VPC, você pode criar "sub-redes" (subnets). Essas sub-redes podem ser públicas (acessíveis pela internet) ou privadas (só acessíveis internamente, entre os serviços).
  • Security Groups: Esses são como regras de firewall para permitir ou bloquear certos tipos de tráfego (como portas 80 e 443, que são usadas para acessar a web via HTTP/HTTPS).

Então, por exemplo, você pode criar uma sub-rede pública onde seu front-end roda (para que os usuários possam acessá-lo), e uma sub-rede privada onde o back-end e o banco de dados ficam (para maior segurança).

O Load Balancer é um serviço que distribui o tráfego de acesso entre várias instâncias. Ele ajuda a garantir que, mesmo que muitos usuários estejam acessando sua aplicação ao mesmo tempo, o tráfego seja distribuído para evitar sobrecarga em uma única máquina.

  • Por que usar o Load Balancer? Imagine que você tenha duas instâncias (ou containers) rodando o front-end e duas instâncias para o back-end. O Load Balancer vai receber as requisições dos usuários e enviar para essas instâncias de forma equilibrada, garantindo que nenhuma delas fique sobrecarregada.

  • E sobre EC2? Sim, você pode rodar o front-end e back-end em várias instâncias EC2 (servidores na AWS) e usar o Load Balancer para dividir o tráfego entre elas. No entanto, você também pode usar o ECS (Elastic Container Service), que é focado em rodar containers Docker e já trabalha muito bem com Load Balancers.

Resumo dos passos:

1 - Criar VPC: Configure uma VPC com sub-redes para separar partes da sua aplicação (sub-rede pública para front-end e privada para o back-end). 2- Criar o Load Balancer: Ele vai distribuir o tráfego entre suas instâncias ou containers (front-end e back-end). 3 - Configurar EC2 ou ECS: Use instâncias EC2 ou containers no ECS para rodar sua aplicação. 4 - Associar o Load Balancer às Instâncias/Containers: O Load Balancer será o responsável por enviar as requisições para suas instâncias de forma balanceada.

Bons estudos!

ahhhh, legal, agora as coisas fizeram mais sentido, como são muitos serviços que a aws oferece eu acabo ficando meio confuso, mas acho que deu pra ter uma ideia melhor. Mas essa informação que vc me passou a respeito do frontend ser público e o backend privado foi crucial, apesar de ser relativamente intuitivo eu não tinha tido essa sacada. Muito obrigado pelos esclarecimentos, vou considerar as dúvidas encerradas por enquanto e em breve eu volto pra conversar mais a respeito !

Valeu :)

Estamos à disposição por aqui, pode contar sempre conosco!

Qualquer dúvida, sugestão ou informação, só abrir um novo tópico aqui no Fórum.