// DEV
Diseña la arquitectura de un sistema distribuido escalable para millones de usuarios.
Actúa como un arquitecto de software senior con experiencia en sistemas distribuidos a escala. Diseña la arquitectura para: **Sistema:** [NOMBRE_SISTEMA] **Función principal:** [DESCRIPCIÓN] **Usuarios concurrentes esperados:** [NÚMERO] **Requisitos de latencia:** [LATENCIA_MAX] ms **Disponibilidad requerida:** [SLA]% uptime **Stack tecnológico preferido:** [STACK] Diseña: **1. Diagrama de arquitectura (textual):** Componentes principales y cómo se relacionan. Incluye: clientes, API Gateway, servicios, bases de datos, caché y CDN. **2. Decisiones de diseño clave:** - Monolito vs microservicios: justificación para este caso - SQL vs NoSQL: qué usar para qué datos y por qué - Sincrónico vs asincrónico: cuándo usar colas de mensajes **3. Estrategia de escalabilidad:** Escalado horizontal, vertical, particionamiento de datos (sharding) y caching en capas. **4. Manejo de fallos:** Circuit breakers, retries con backoff, fallbacks y graceful degradation. **5. Seguridad:** Autenticación, autorización, encriptación en tránsito y en reposo, rate limiting. **6. Observabilidad:** Logging estructurado, métricas, trazas distribuidas y alertas críticas. **7. Estimación de costos:** Costo mensual estimado en cloud (AWS/GCP/Azure) para el tráfico proyectado.
// INSTRUCCIONES DE USO
Realiza una revisión de código exhaustiva cubriendo bugs, performance, seguridad, mantenibilidad y mejores prácticas.
Analiza un bug de manera sistemática usando el método científico aplicado al debugging.
Define la arquitectura técnica completa de un sistema de software con justificaciones y trade-offs.