Perda de mais de US$ 10.000 por um único erro do ChatGPT
Processo de monetização 🛣️
- Contexto: A monetização começou na fase inicial da startup.
- Definição de preço: O valor foi definido em US$ 40 por mês com base no conselho de um group partner da YC.
- Stack técnica: Houve migração de NextJS para Python/FastAPI. A integração com Stripe foi concluída.
A causa da perda de US$ 10.000 💰
- Problema: Surgiu um problema de spinner de carregamento infinito no recurso de assinatura.
- Resolução: Depois de analisar inúmeros e-mails e logs por 5 dias, o problema foi encontrado.
- Causa: O código gerado pelo ChatGPT tinha um erro na forma de gerar IDs. Uma string de ID fixa foi usada, causando colisões de ID.
Encontrando o bug 🐛
- Descrição do problema: O uso de uma string de ID fixa causou colisões de ID. Como várias instâncias estavam rodando no AWS ECS, durante o dia não havia problema, mas à noite ocorriam colisões.
- Solução: Foi usada uma função de geração de UUID no lugar do ID fixo. Depois disso, o problema foi resolvido e o sistema se estabilizou.
Conclusão 🤖
- Lição: O autor reconhece erros como falta de testes, copiar e colar código e fazer commit diretamente na branch principal.
- Experiência: Foi uma experiência dolorosa, mas ficou marcada como um momento importante da startup.
Opinião do GN⁺
- Importância dos testes: São necessários testes unitários e testes de integração suficientes.
- Code review: Em vez de copiar e colar código, é importante revisar e validar o código.
- Estratégia de deploy: Em vez de fazer commit diretamente na branch principal, é melhor usar uma branch separada e passar por code review.
- Capacidade de resolver problemas: É importante conseguir identificar e resolver problemas rapidamente.
- Escolha da stack técnica: Mudanças na stack técnica devem ser planejadas e testadas com cuidado.
2 comentários
Ué, código gerado automaticamente por IA tem que ser revisado, né? Por que usar isso do jeito que saiu?
Opiniões do Hacker News
Cada opinião oferece perspectivas diferentes sobre problemas que podem surgir no processo de desenvolvimento de software e suas soluções. Isso pode trazer insights úteis para engenheiros de software iniciantes.