Questões e Respostas
São algumas das premissas estabelecidas no caso apresentado:
- Gerar ingresso com numeração UUID, com pagamento em cartão de crédito e boleto, com confirmação imediata.
- Aceitar apenas cartão de crédito, com confirmação imediata, focando em consistência em relação à alta disponibilidade e gerar o ingresso com um código curto e não-sequencial.
- Permitir alta disponibilidade, com compras apenas por cartão de crédito, confirmação imediata e gerar o ingresso com um código curto e sequencial.
- Não houveram premissas estabelecidas.
Os pontos críticos do sistema apresentado são:
- Criação de novos eventos, cadastro de novos usuários e lentidão da mensageira.
- Geração de código do ingresso, atraso na aprovação por boleto e alta latência.
- Instabilidade da gateway, geração do QRCode e atraso na aprovação por boleto.
- Instabilidade da gateway, geração de código do ingresso, geração do QRCode, envio de email de confirmação.
A solução apresentada para a lentidão no disparo de emails é manter o email service no mesmo microsserviço de compra de ingressos, mantendo-o síncrono.
Para a criação de códigos dos ingressos e do QRCode, é verdadeiro afirmar que:
- Todas as opções são verdadeiras
- A criação prévia de códigos e QRCode reduz o tempo de resposta.
- Separar as criações de código e QRCode do serviço de compra de ingressos melhora o desempenho do último.
- A geração de códigos e QRCode pode ser feita de com regularidade para ficar disponível quando necessário.
- O microsserviço de geração de códigos e QRCode pode armazenar os novos códigos no S3 da Amazon, por exemplo.
Criar uma Anti-Corruption Layer para as gateways de pagamentos dão consistência na transação, uma vez que o request não será enviado para uma gateway não esteja funcionando:
Para o processamento das requisições na compra de ingressos, a solução para servidor utilizada foi:
- AWS Serverless
- GCP Kubernetes.
- On premise server.
- Digital Ocean Functions.
Alguns dos pontos críticos para métricas e monitoramento que foram apresentados foram:
- Compras aprovadas, espaço utilizado no banco de dados, bandwidth.
- Orders por segundo, latência e disponibilidade das gateways de pagamento e compras aprovadas vs rejeitadas.
- Compras rejeitadas, latência e logs de mensageiria.
- Compras canceladas, logs de mensageiria e latência.