Pular para o conteúdo
APARICIOCONSULTORIAVamos conversar

Gerenciador e deploy

No ar

O painel que administra todos os sistemas desta página e o deploy de um comando que publica cada um deles na VPS.

Da autenticação ao servidor.

Cinco sistemas no ar pedem um lugar de onde cuidar deles. O gerenciador, em /admin, lista cada sistema e o estado dele, cria e suspende clínicas do CliniHub e guarda o registro de tudo o que foi feito.

O deploy é um comando só na VPS: /opt/deploy.sh e o nome do sistema. Ele atualiza o código, constrói a imagem, migra o banco, sobe e confere de fora se o sistema respondeu. Cada sistema tem a sua receita, e todas passam pelo mesmo caminho.

Conversar sobre o seu sistema

Decisões

O problema que apareceu, a escolha feita e a consequência que a justifica.

problema
O gerenciador se conecta direto ao banco dos outros sistemas. Um acesso indevido aqui vale mais que um acesso indevido em qualquer um deles.
escolha
Autenticador obrigatório, sessão guardada no banco em vez de JWT, cookie preso a /admin, e nenhuma das chaves de cifragem dos sistemas administrados.
porquê
Um JWT continua valendo depois do “sair”; a sessão no banco termina quando termina. E sem as chaves, quem invadir lê texto cifrado que não abre.
problema
Um registro de auditoria que a própria aplicação consegue reescrever não prova nada sobre o que ela fez.
escolha
A tabela de auditoria só aceita inserção: um gatilho no Postgres recusa UPDATE e DELETE, e leitura não vira registro, só escrita.
porquê
A garantia fica no banco, e não num if que alguém pode contornar. E uma auditoria cheia de “listou clínicas” enterra o que ela existe para mostrar.
problema
O token que fala com a API do CliniHub vai inteiro em toda chamada, e token vaza em log de proxy, rastro de erro e captura de tráfego.
escolha
Cada chamada é assinada com HMAC-SHA256 sobre método, caminho, corpo, instante e nonce. O segredo nunca viaja, só a assinatura.
porquê
Quem lê o token num log passa a ter metade da credencial, e a assinatura não serve para outra chamada nem para a mesma repetida depois.
problema
Todos os sistemas dividem o mesmo Nginx de borda na VPS. Um deploy que só confere o próprio sistema pode terminar verde com o vizinho fora do ar.
escolha
As receitas que mexem na borda terminam conferindo, de fora, o próprio endereço e o dos sistemas vizinhos.
porquê
É assim que esse tipo de queda passa despercebida: ninguém olha o sistema que não foi publicado. A conferência olha por quem não está olhando.

Ficha técnica

FastAPI · PostgreSQL · SQLAlchemy · Alembic · Vue 3 · TypeScript · Tailwind CSS · Docker · Nginx · Shell