Recentemente, iniciei um projeto que não parecia muito difícil de fazer, o conceito era um aplicativo bastante simples que precisava aceitar informações de vez em quando (talvez 10x por dia) e tentar executar algumas operações nelas e coletar todos os resultados no fim. Esse aplicativo obteria um portal da web front-end que os clientes poderiam usar para visualizar os resultados, não exatamente a ciência dos foguetes.
Para isso, inicialmente fiz um uso inteligente das bibliotecas de simultaneidade internas do Python ( ThreadPoolExecutor
) e usei uma biblioteca fácil de usar para o front-end (escolhi o Flask, pois é fácil para iniciantes e é relativamente fácil de manter e testar).
Quando estávamos na metade do projeto, o PM declarou que tínhamos que usar recursos de filas de mensagens de terceiros em vez de threads e tivemos que implementar o balanceamento de carga. O que acabou acontecendo foi que começamos a trabalhar com Celery, Redis, RabbitMQ, Nginx, uWSGI e vários outros grandes serviços de terceiros com os quais ninguém tinha experiência real.
No final, isso levou a um monte de código espaguete, tarefas não testáveis (devido à complexidade de bibliotecas de terceiros, o patch do código nem funcionou) e um monte de dores de cabeça porque ninguém sabia o valor agregado desses serviços. .
Antes de dizer "Sim, você deve usar esses serviços", lembre-se de que ninguém sabe como usá-los ou mesmo sabe o que eles fazem, além de introduzir um código afetado pelas condições de corrida.
O que devo fazer sobre isso? Nesse ponto, seria simplesmente muito caro reverter para o que tínhamos e o PM está impaciente ao usar esses serviços, mesmo que o produto final esteja agora em pior situação do que no início. Existe alguma utilidade em discutir isso com ele? Peço mais tempo? Ou a resposta dura, sou burra demais para o meu trabalho?