Solucionado (ver solução)

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!

Solucionado
(ver solução)
1
resposta

[Dúvida] Sobre o seu padrão de conexão ?

O meu sistema (não vou colocar o código todo aqui, pois é muito grande) — enfim, quero tanto uma sugestão para colocar o meu sistema em cloud quanto esclarecer o seguinte:
Na parte de conexão, o meu sistema funciona assim:

Manual (db_manual.py) → Conecta como superusuário (DB_USER=postgres) no banco postgres, cria o usuário da aplicação (DB_APP_USER) e cria o banco (DB_APPLICATION_DATABASE) com esse usuário como dono. Roda apenas no startup (SetupBancoService).
ORM (db_orm.py) → No dia a dia, conecta como o usuário comum da aplicação (com privilégio mínimo) no banco que foi criado. É o que atende as requisições.

Esse padrão "superusuário só para o setup + usuário limitado para rodar" é exatamente o que funciona em uma VM (onde você é dono do Postgres).
De forma mais simples: o banco manual cria o usuário com limitações, e esse usuário gerencia o banco, mas tendo limitações — como apenas criar e executar comandos DML (SELECT, INSERT, DELETE, etc.).
Olhando para subir em serviços como AWS RDS ou Render, não seria possível, pois não terei como criar um superusuário. Porém, pesquisando sobre isso, o meu sistema poderia funcionar usando uma abordagem de IaaS (Infrastructure as a Service), ou seja, instalando tudo eu mesmo — por exemplo, usando o Oracle Cloud Free Tier. Se possível, gostaria de uma sugestão com base no que expliquei.

1 resposta
solução!

Olá, Samuel! Como vai?

O seu padrão de conexão, em que você utiliza um superusuário apenas para o setup e um usuário com privilégios limitados para o dia a dia, é uma prática bastante comum e segura. No entanto, como você mencionou, em serviços de banco de dados gerenciados como AWS RDS ou Render, você não terá acesso a um superusuário, o que pode complicar um pouco a implementação desse padrão.

Uma solução possível é realmente optar por uma abordagem de IaaS, como você mencionou. Usando um serviço de IaaS, como o Oracle Cloud Free Tier, Google Cloud Platform (GCP) ou AWS EC2, você pode criar e gerenciar suas próprias máquinas virtuais. Isso lhe dará total controle sobre a instalação e configuração do PostgreSQL, permitindo que você crie um superusuário e configure seu banco de dados exatamente como deseja.

Aqui está um exemplo prático de como você poderia proceder:

  1. Escolha um provedor de IaaS: decida qual provedor de IaaS você gostaria de usar. O Oracle Cloud Free Tier é uma boa opção se você está procurando algo sem custo inicial.

  2. Configure uma máquina virtual: crie uma instância de VM e instale o PostgreSQL nela. Durante a instalação, você poderá definir um superusuário.

  3. Implemente seu padrão de conexão: use o superusuário para realizar o setup inicial, criando o usuário da aplicação e o banco de dados. Depois, configure seu sistema para usar o usuário com privilégios limitados para operações diárias.

  4. Segurança e manutenção: lembre-se de configurar firewalls e outras medidas de segurança para proteger seu banco de dados. Além disso, planeje como fará backups e atualizações de segur

Essa abordagem lhe dará a flexibilidade que você precisa para implementar seu padrão de conexão, mas lembre-se de que também exigirá mais esforço em termos de manutenção e segurança.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.