Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

arquitetura de soluções

Boa tarde, pessoal!

Tenho uma dúvida e gostaria de pedir uma orientação para quem já trabalha com deploy e infraestrutura em produção.

Eu já tenho alguns conhecimentos básicos na área, por exemplo:

  • Criação e gerenciamento de VMs no Proxmox;
  • Docker e Docker Swarm;
  • Conceitos básicos de cluster utilizando Portainer;
  • Sentry e OTel (OpenTelemetry).

O que eu gostaria de aprender agora é como preparar e colocar uma aplicação em produção de forma correta.

Por exemplo: quais são os principais requisitos e cuidados antes de colocar uma aplicação em produção? O que preciso considerar em relação a infraestrutura, segurança, rede, banco de dados, backups, monitoramento, logs, observabilidade, CI/CD, domínio/HTTPS, alta disponibilidade etc.?

Minha dificuldade é mais em entender o caminho de estudos e como juntar esses conhecimentos para montar uma estrutura de produção de verdade.

Para quem já passou por isso, por onde vocês recomendam começar? Existe algum curso, documentação, projeto prático ou roadmap que possa me ajudar?

A ideia é aprender fazendo e, se possível, montar um ambiente de laboratório para praticar todo o processo.

Se puderem compartilhar experiências, materiais ou até mesmo um exemplo de arquitetura para uma aplicação simples em produção, seria muito útil.

Obrigado!

1 resposta

Oi, Luiz! Tudo bem?

Sobre arquitetura de soluções e o caminho para preparar uma aplicação para produção, sua ideia de montar um laboratório para aprender fazendo é muito boa.

Com o que você já conhece de Proxmox, Docker, Docker Swarm, Portainer, Sentry e OpenTelemetry, você já tem uma boa base para começar a conectar esses conhecimentos em um ambiente mais próximo de produção.

Uma forma didática de estudar é não tentar aprender tudo de uma vez. Monte uma aplicação simples e evolua a infraestrutura por etapas:

  1. Aplicação e banco de dados: coloque uma API e um banco em containers.
  2. Rede: configure uma rede interna e um proxy reverso, como Nginx, para receber as requisições.
  3. Domínio e HTTPS: associe um domínio e configure HTTPS.
  4. CI/CD: crie um pipeline para executar testes, gerar a imagem Docker e realizar o deploy.
  5. Logs e monitoramento: acompanhe logs da aplicação e métricas da infraestrutura.
  6. Observabilidade: aproveite seu conhecimento de OpenTelemetry e Sentry para acompanhar erros e o comportamento da aplicação.
  7. Backups: configure backups do banco e, mais importante, teste a restauração. Um backup que nunca foi restaurado ainda não comprovou que funciona.
  8. Alta disponibilidade: depois que o ambiente básico estiver funcionando, adicione redundância, replicação e estratégias de recuperação.

Um laboratório interessante poderia evoluir assim:


Internet
   |
   v
[ Nginx / HTTPS ]
   |
   v
[ Aplicacao Docker ]
   |
   +------> [ Banco de Dados ]
   |
   +------> [ Sentry / OTel ]
   |
   +------> [ Logs / Metricas ]

Esse exemplo representa uma aplicação simples recebendo tráfego pelo Nginx, acessando o banco e enviando informações de observabilidade para as ferramentas que você já conhece.

Dica: depois que essa estrutura estiver funcionando em uma única VM, você pode aumentar a complexidade gradualmente: separar serviços, adicionar uma segunda VM, testar falhas, automatizar o deploy e só então estudar cenários de alta disponibilidade. Dessa forma, cada novo recurso resolve um problema concreto do laboratório.

Para organizar seus estudos, eu seguiria esta ordem: Linux e redes → Docker → proxy reverso e HTTPS → banco e backups → CI/CD → monitoramento e logs → observabilidade → segurança → alta disponibilidade.

Uma boa forma de validar seu aprendizado é criar situações de falha de propósito: derrubar um container, restaurar um banco a partir de um backup, renovar um certificado, fazer rollback de uma versão e verificar se você consegue identificar um erro apenas pelos logs e métricas.

No seu laboratório, qual dessas etapas você gostaria de implementar primeiro: CI/CD, observabilidade, backups ou alta disponibilidade?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!