Skip to content

rm-prod-mais-uma-vez #279

@marcialwushu

Description

@marcialwushu

rm-prod-mais-uma-vez

Slack vibes de café frio:

Quem nunca rodou um script achando que tava num SQLite perdido no /tmp e na real tava com a connection string apontando pro dev deployado na nuvem, que atire o primeiro DROP TABLE users;.


A cena do crime:

Você queria só brincar de CRUD no quintal de casa, mas esqueceu de trocar a URL no .env. Resultado: o quintal virou Hiroshima. O BD de dev foi limpo mais rápido do que docker system prune -a. Zero problema “pra você”, claro, mas metade da galera que usava o ambiente acordou sem seus registros.

E sim, a justificativa “era só dev” é tipo aquele bug que só dá em staging: até dá pra rir… até o dia que não dá mais.


A filosofia do desastre:

Colocar lógica de “limpar banco” na aplicação é o equivalente dev de dirigir carro sem freio porque “fica mais leve”. Funciona até a primeira curva.

O que você fez foi abrir a porta pro caos entrar e o caos entrou com sapato sujo. É a famosa engenharia do atalho: poupa um migration, mas custa uma restauração.

A real é que a gente sempre acredita que o sanity check vai estar na nossa memória RAM. Spoiler: não está. Nosso cérebro é igual Docker container: volátil, morre, e o estado some.


Soluções que salvam vidas (e empregos):

Ephemeral containers: subiu, testou, morreu, e o banco vai junto. Nenhum script de auto-destruição no app.

Migrações manuais e controladas: ORM só pra brincar. Em produção, quem mexe na schema é DBA ou script supervisionado.

Backups automáticos: não backupou? Então não existiu.

Dois pares de olhos: avião tem dois motores, PR tem dois revisores, deploy em prod precisa de mais de uma mão culpada.


Pull request de vida:

Toda vez que você pensar “vou só limpar o banco rapidinho” lembre-se: trabalho perdido é barato, dado perdido é dívida técnica com juros compostos.

Ou, como diria o Feynman versão dev: “o cara que você mais deve desconfiar é você mesmo com permissão de DROP.”


Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions