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

RequisitoValor
Usuarios registrados500,000
Consultas diarias5,000
Disponibilidad99.95%
Latencia de APIp99 < 500ms
Datos sensiblesSí (datos médicos — regulación HIPAA/GDPR)
Equipo de desarrollo20 personas, 4 squads
TimelineMVP en 6 meses

Parte 1: Estilo arquitectónico (Fundamentos)

Preguntas

  1. ¿Qué estilo arquitectónico elegirías? ¿Monolito, microservicios o híbrido?
  2. ¿Cómo dividirías el sistema en dominios/servicios?
  3. ¿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

  1. Dibuja un diagrama de alto nivel con los componentes principales
  2. ¿Cómo se comunican los servicios entre sí?
  3. ¿Necesitas un API Gateway? ¿Un BFF?
  4. ¿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

  1. ¿Qué patrones de resiliencia aplicarías y dónde?
  2. ¿Usarías Saga para el flujo de reserva de cita + pago? ¿Orquestada o coreografiada?
  3. ¿Dónde aplicarías CQRS? ¿Es necesario?
  4. ¿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):

  1. 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

  1. ¿Cómo manejas la autenticación y autorización?
  2. ¿Cómo proteges los datos médicos sensibles?
  3. ¿Qué medidas de seguridad aplicas en cada capa?
  4. ¿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

  1. ¿Qué métricas de negocio y técnicas recolectarías?
  2. ¿Cómo implementarías distributed tracing?
  3. ¿Qué alertas son críticas para este sistema?
  4. ¿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

  1. ¿Cómo desplegarías los servicios? ¿Kubernetes, serverless, PaaS?
  2. ¿Cuál es tu estrategia de CI/CD?
  3. ¿Cómo manejas la configuración y secretos?
  4. ¿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

  1. ¿Cómo versionas las APIs entre servicios?
  2. ¿Cómo manejas breaking changes?
  3. ¿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:

  1. Documento de arquitectura (1-2 páginas): diagrama de componentes, decisiones clave y justificaciones
  2. Diagrama de flujo para el caso de uso principal: reservar cita → pagar → realizar consulta
  3. Lista de trade-offs: qué sacrificaste y por qué
  4. Plan de migración: cómo llegarías del MVP a la arquitectura completa

Rúbrica

CriterioPeso
Coherencia entre decisiones25%
Justificación de trade-offs25%
Consideración de requisitos no funcionales20%
Completitud (todas las partes cubiertas)15%
Claridad de comunicación15%

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.