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.