| TransactionService |
- 📦 Desacoplar lógica de recepción y procesamiento usando colas (AWS SQS).
- ⚡ Hacer procesamiento asíncrono para no bloquear el endpoint principal.
- ⏱ Reducir tiempo dentro de transacciones de DB, mover cálculos de balance fuera de BEGIN…COMMIT.
- 🔄 Implementar batching de transacciones para actualizaciones de saldo e inserciones en la tabla transactions.
|
| PostgresRepository |
- 📊 Crear índices compuestos en
transactions(user_id, timestamp) y users(user_id) para acelerar consultas.
- 🗂 Considerar particionamiento o sharding de la tabla
transactions por rango de fechas o user_id para alta concurrencia.
- 💾 Integrar caching de balances recientes (Redis / ElastiCache) para reducir carga en consultas de getUserBalance().
- 🛠 Optimizar queries SQL, evitar subconsultas innecesarias y usar VACUUM ANALYZE periódicamente.
|
| Node.js Backend / API |
- 🖥 Escalamiento horizontal: permitir múltiples instancias de API (ECS/EC2) detrás de ELB.
- ⚖️ Configurar ELB para distribuir la carga y realizar health checks a cada instancia.
- 🚦 Implementar throttling/rate limiting por usuario para proteger endpoints críticos.
- 🔗 Connection pooling con pg.Pool bien configurado para manejar conexiones concurrentes a Postgres.
|
| AWS Infrastructure |
- 🚀 Auto Scaling Group para instancias EC2/ECS según métricas de CPU, memoria o requests por segundo.
- 💾 Integración de Redis/ElastiCache para caching y reducción de latencia de queries frecuentes.
- 📩 Uso de SQS para desacoplar procesamiento de transacciones y evitar saturación del backend.
- 📊 CloudWatch / Grafana / Prometheus para monitoreo de latencia, throughput y alertas ante picos de tráfico.
|
| Frontend (React) |
- 🌐 Implementar polling o WebSockets para mostrar saldos actualizados sin generar demasiadas consultas simultáneas a la API.
- 💡 Optimizar llamadas a endpoints críticos, usar caching local o state management (Redux / Zustand) para evitar exceso de requests.
|