Realmente você tem razão se seguirmos o conceito de escalável, concordo.
Mas baseado no que já vi as pessoas sempre que vão construir um sistema sempre pergunta quantidade de usuários e quantidade para criar algo que seja “escalável” para aquele cenário. Exemplo: o Duolingo que tinha uma solução push notification era escalável para demanda que eles tinham, mas precisaram melhorar a solução de push notification para publicar 4.000.000 mensagens em +/- 5 segundos. Link do vídeo: https://www.infoq.com/news/2024/04/qcon-london-duolingo-super-bowl/ recomendo, pois aprendi muito com esse material.
No cenário do post o que eu faria se precisasse criar algo que precisa processar mais mensagens:
- 1º opção: incrementar o hardware do postgres que é a queue, mas você vai ter custo, então não será 100%
- 2º opção: usar unlogged queue, pois usa unlogged table que pula a operação que garante a durabilidade das informações, então se o banco reiniciar você perde as mensagens, mas você vai conseguir publicar mais mensagens na queue.
- 3º opção:
- Criar 5 contas diferentes no Supabase
- Criar 5 contas diferentes no Val.town. PS: no código pega até 8 mensagens da fila para processar, então pode ajustar o cronjob no Supabase para executar a cada 8 segundas para permitir acumular mensagens
- Criar a mesma queue nas 5 contas
- Adiciona a função do postgres nas 5 contas, é para cada url que será chamada na função você usa a link da aplicação serverless de um conta diferente do Val.town.
- Configurar o cronjob para chamar a função criada no passo anterior.
- Na hora de publicar você distribui essa demanda entre as 5 queues usando algo como round-robin algoritmo para ficar alternando entre as queues.
Então se tiver um cenário como: 1 mensagem por segundo que seria 1 x 60 x 60 x 24 é igual 86.400 mensagens por dia, então com os ajustes da 3º opção você poderia processar 432.000 por dia.
Mas você pode combinar a 1º e 3º opção, pois se incrementar o hardware do postgres você pode ter mais conexões com o banco de dados, então você poderia adicionar mais cronjobs que irão disparar mais as functions do Valtown ao mesmo tempo sem problema de limite de conexões com o banco.