Voltar aos projetos

Plataforma eleitoral

Vox

Plataforma eleitoral com Angular, Spring Boot e PostgreSQL usada em uma eleição na Etec de Guarulhos.

Visão técnica

Votação com serialização transacional

Vox mantém validação, persistência do voto e fechamento da urna dentro da mesma transação para evitar concorrência inválida.

Impacto106 req/s

100% de sucesso em 10.000 requisições e 100 acessos simultâneos na AWS EC2 t2.micro

Validações

Candidato, vínculo com eleição, estado da urna e janela temporal são validados antes da persistência.

Concorrência

PESSIMISTIC_WRITE serializa requisições sobre a mesma urna.

Tempo real

STOMP e WebSocket comunicam atualizações da plataforma.

Fluxo de execução

Fluxo principal

Votação com serialização transacional

Vox mantém validação, persistência do voto e fechamento da urna dentro da mesma transação para evitar concorrência inválida.

CONCURRENT REQUESTS -> LOCK -> COMMIT -> NEXT

  1. 01

    Voto é recebido

    A plataforma valida candidato, eleição, urna e janela temporal.

  2. 02

    Urna é bloqueada

    PESSIMISTIC_WRITE serializa requisições sobre a mesma urna.

  3. 03

    Transação é concluída

    Validação, persistência do voto e fechamento da urna permanecem dentro da mesma transação.

Decisões de engenharia

Arquitetura

Lock pessimista por urna

PESSIMISTIC_WRITE impede votos concorrentes inválidos sobre a mesma urna.

Uma transação para o ciclo crítico

Validação, persistência do voto e fechamento da urna ficam no mesmo limite transacional.

Tempo real com WebSocket

STOMP e WebSocket sustentam comunicação em tempo real.

Controles de risco

Confiabilidade

Voto inválido

Validações de candidato, eleição, urna e janela temporal protegem o fluxo.

Concorrência na mesma urna

A serialização por PESSIMISTIC_WRITE evita conflitos no ponto crítico da votação.

Stack

Aplicação

  • Angular
  • Spring Boot

Dados e transação

  • PostgreSQL
  • PESSIMISTIC_WRITE

Tempo real

  • STOMP
  • WebSocket

Resultado

Uso real e teste de carga documentado

Mais de 500 eleitores participaram de uma eleição na Etec de Guarulhos; em AWS EC2 t2.micro, o teste teve 10.000 requisições, 100 acessos simultâneos, 100% de sucesso, 0 falhas e 106 req/s.

100% de sucesso em 10.000 requisições e 100 acessos simultâneos na AWS EC2 t2.micro
106 req/s
eleitores em uso real na Etec de Guarulhos
500+

Próximo projeto

Auronix

Plataforma financeira ponta a ponta com contas, transferências e solicitações de pagamento.

Próximo projeto