No domínio das empresas de lava jatos ou empresa que venda seus serviços, em certas datas o fluxo de pedidos é muito grande em um pequeno espaço de tempo, as vezes em poucas horas. Nesse sentido, um sistema de filas, com RabbitMQ, e a atualização em tempo real para usuários, com Websockets, que fornece em tempo real para o usuário desenvolvi esse sistema, escalável e performático.
Para suportar uma grande quantidade de requisições e persistir todas as agendas, um back-end stateless é fundamental, pois dessa forma podemos escalar horizontalmente facilmente subindo instâncias do back-end. Além disso, um sistema de filas que gerencia os pedidos um após o outro, tirando a carga do back-end e tratando, de certa forma, os pedidos igualitariamente. Outro sim, utilizando o mecanismo de stream do Redis para salvar os usuários websockets e poder enviar instaneamente através de websocket as agendas feitas.
Para ter certeza e ter uma prova prática do poder do meu software, fiz um teste de carga/exaustão. A primeira vez que fiz 10.000 requisições em menos de um minuto, 20% foram rejeitadas. A partir disso começou a busca para alcançar um valor aceitável de rejeição. Os seguintes pontos foram feitos para tal objetivo, depois claro de muito debugg e analise:
- 3 instancias do back-end;
- aumentar workes do nginx;
- refatorar lógica de validação e querys do agendamento;
- aumentar pool de conecção do postgres;
Nesse projeto, o meu primeiro, entendi como funciona o ciclo de desenvolvimento de software, pois, fiz o projeto desde o levantamento de requisitos até o deploy. Usando Django, criei um sistema monolítico que apresentava a empresa, cadastrava usuários e seus veículos e encaminhava serviços que o usuário selecionava para seu veiculo, no whatsapp do dono do lava-jato.
This site was created with the Nicepage