Evaluación Final
Evaluación integradora que cubre todos los temas del curso — diseña una arquitectura completa desde los requisitos hasta la operación.
Objetivo
Esta evaluación final integra todos los conceptos cubiertos en las secciones anteriores: fundamentos, arquitectura, patrones, flujos, seguridad, observabilidad, despliegue y versionado. Tu tarea es diseñar una arquitectura completa para un sistema real.
No hay una única respuesta correcta. Lo que importa es la calidad de tu razonamiento, la coherencia de tus decisiones y tu capacidad de justificar cada elección.
El proyecto: HealthTrack
Descripción
HealthTrack es una plataforma de telemedicina que conecta pacientes con médicos para consultas virtuales. La plataforma debe manejar:
- Registro y perfiles de pacientes y médicos
- Agenda y citas con disponibilidad en tiempo real
- Videollamadas para consultas virtuales
- Historial clínico con documentos y recetas
- Pagos por consulta con múltiples métodos
- Notificaciones por email, push y SMS
- Reportes para administradores y médicos
Requisitos no funcionales
| Requisito | Valor |
|---|---|
| Usuarios registrados | 500,000 |
| Consultas diarias | 5,000 |
| Disponibilidad | 99.95% |
| Latencia de API | p99 < 500ms |
| Datos sensibles | Sí (datos médicos — regulación HIPAA/GDPR) |
| Equipo de desarrollo | 20 personas, 4 squads |
| Timeline | MVP en 6 meses |
Parte 1: Estilo arquitectónico (Fundamentos)
Preguntas
- ¿Qué estilo arquitectónico elegirías? ¿Monolito, microservicios o híbrido?
- ¿Cómo dividirías el sistema en dominios/servicios?
- ¿Cómo asignarías los squads a los dominios?
Criterios de evaluación
- Justificación clara del estilo elegido
- División de dominios coherente con el negocio
- Consideración del tamaño del equipo y timeline
Guía de referencia
Con 20 personas y 4 squads, microservicios es viable pero no obligatorio. Una opción pragmática:
Dominios sugeridos:
- Usuarios y Auth (Squad 1): registro, perfiles, autenticación
- Citas y Agenda (Squad 2): disponibilidad, reservas, calendario
- Consultas y Clínica (Squad 3): videollamadas, historial, recetas
- Pagos y Notificaciones (Squad 4): cobros, emails, push, SMS
Cada squad es dueño de su dominio y puede desplegarlo independientemente.
Parte 2: Arquitectura de componentes (Arquitectura)
Preguntas
- Dibuja un diagrama de alto nivel con los componentes principales
- ¿Cómo se comunican los servicios entre sí?
- ¿Necesitas un API Gateway? ¿Un BFF?
- ¿Dónde vive la lógica de videollamadas?
Criterios de evaluación
- Diagrama claro con componentes y conexiones
- Justificación de comunicación sync vs async
- Consideración de servicios externos (video, pagos)
Guía de referencia
[App Mobile/Web]
│
▼
[API Gateway + Auth]
│
├──► [Servicio de Usuarios] ──► [PostgreSQL]
├──► [Servicio de Citas] ──► [PostgreSQL + Redis]
├──► [Servicio de Consultas] ──► [PostgreSQL + S3]
├──► [Servicio de Pagos] ──► [PostgreSQL]
│
└──► [Event Bus (RabbitMQ/Kafka)]
│
├──► [Servicio de Notificaciones]
└──► [Servicio de Analytics]
[Servicio de Video: Twilio/Agora] ← integración externa
- Comunicación sync para operaciones de usuario (crear cita, ver historial)
- Comunicación async para efectos secundarios (notificaciones, analytics)
- Video como servicio externo — no reinventar la rueda
Parte 3: Patrones aplicados (Patrones)
Preguntas
- ¿Qué patrones de resiliencia aplicarías y dónde?
- ¿Usarías Saga para el flujo de reserva de cita + pago? ¿Orquestada o coreografiada?
- ¿Dónde aplicarías CQRS? ¿Es necesario?
- ¿Cómo garantizas idempotencia en los pagos?
Criterios de evaluación
- Patrones de resiliencia aplicados correctamente
- Justificación de Saga orquestada vs coreografiada
- Idempotencia en operaciones críticas
Guía de referencia
Resiliencia:
- Circuit breaker en llamadas al proveedor de video y pagos
- Retry con backoff para notificaciones
- Timeout en todas las llamadas entre servicios
- Bulkhead para aislar el servicio de video del resto
Saga para reserva + pago (orquestada):
- Reservar slot en agenda → 2. Procesar pago → 3. Confirmar cita
- Si el pago falla: compensar liberando el slot
- Orquestada porque el flujo es lineal y necesitas control centralizado
Idempotencia en pagos:
- Idempotency key generada por el cliente (appointmentId + timestamp)
- Verificar antes de procesar; si existe, retornar resultado anterior
Parte 4: Seguridad (Seguridad)
Preguntas
- ¿Cómo manejas la autenticación y autorización?
- ¿Cómo proteges los datos médicos sensibles?
- ¿Qué medidas de seguridad aplicas en cada capa?
- ¿Cómo manejas el consentimiento del paciente para acceder a su historial?
Criterios de evaluación
- Autenticación robusta (MFA para médicos)
- Encriptación de datos sensibles en reposo y en tránsito
- Control de acceso granular (RBAC o ABAC)
- Cumplimiento regulatorio considerado
Guía de referencia
Autenticación:
- JWT con refresh tokens
- MFA obligatorio para médicos
- OAuth2 para login social de pacientes
Datos sensibles:
- Encriptación en reposo (AES-256) para historial clínico
- TLS 1.3 para todo el tráfico
- Datos médicos en base de datos separada con acceso restringido
- Logs de auditoría para todo acceso a datos de pacientes
Control de acceso:
- RBAC: roles de paciente, médico, admin
- Un médico solo puede ver el historial de sus pacientes
- El paciente puede revocar acceso en cualquier momento
- Consentimiento explícito registrado con timestamp
Parte 5: Observabilidad (Observabilidad)
Preguntas
- ¿Qué métricas de negocio y técnicas recolectarías?
- ¿Cómo implementarías distributed tracing?
- ¿Qué alertas son críticas para este sistema?
- ¿Qué dashboard necesita el equipo de guardia?
Criterios de evaluación
- Métricas de negocio relevantes (citas completadas, tasa de cancelación)
- Tracing end-to-end implementado
- Alertas priorizadas por impacto al usuario
Guía de referencia
Métricas de negocio:
- Citas reservadas vs completadas vs canceladas por día
- Tiempo promedio de espera para obtener cita
- Tasa de éxito de pagos
- NPS de pacientes post-consulta
Métricas técnicas:
- Latencia por servicio y endpoint (p50, p90, p99)
- Tasa de errores por servicio
- Disponibilidad del servicio de video
- Tamaño de colas de mensajes
Alertas críticas:
- Servicio de video no disponible (impacto directo en consultas)
- Tasa de errores de pago > 5%
- Latencia p99 > 1s en el flujo de reserva
- Base de datos de historial clínico no accesible
Parte 6: Despliegue y operación (Despliegue)
Preguntas
- ¿Cómo desplegarías los servicios? ¿Kubernetes, serverless, PaaS?
- ¿Cuál es tu estrategia de CI/CD?
- ¿Cómo manejas la configuración y secretos?
- ¿Cuál es tu estrategia de escalado?
Criterios de evaluación
- Estrategia de despliegue coherente con la arquitectura
- CI/CD automatizado con gates de calidad
- Secretos gestionados de forma segura
- Escalado definido para los componentes críticos
Parte 7: Versionado (Versionado)
Preguntas
- ¿Cómo versionas las APIs entre servicios?
- ¿Cómo manejas breaking changes?
- ¿Qué estrategia de versionado usas para los eventos?
Criterios de evaluación
- Estrategia de versionado clara (URL, header, o content negotiation)
- Plan para breaking changes sin downtime
- Versionado de eventos considerado
Entrega
Tu evaluación debe incluir:
- Documento de arquitectura (1-2 páginas): diagrama de componentes, decisiones clave y justificaciones
- Diagrama de flujo para el caso de uso principal: reservar cita → pagar → realizar consulta
- Lista de trade-offs: qué sacrificaste y por qué
- Plan de migración: cómo llegarías del MVP a la arquitectura completa
Rúbrica
| Criterio | Peso |
|---|---|
| Coherencia entre decisiones | 25% |
| Justificación de trade-offs | 25% |
| Consideración de requisitos no funcionales | 20% |
| Completitud (todas las partes cubiertas) | 15% |
| Claridad de comunicación | 15% |
Reflexión final
Al completar esta evaluación, habrás practicado el proceso completo de diseño arquitectónico — desde los requisitos hasta la operación. Este es el mismo proceso que seguirías en un proyecto real.
Recuerda: la arquitectura no es un documento estático. Es un conjunto de decisiones que evolucionan con el sistema, el equipo y el negocio. Lo importante no es acertar todo desde el principio, sino tener un proceso sólido para tomar decisiones y adaptarte cuando las cosas cambian.