5.52.4.3 Diseño de API y Modelado (6 horas) [Habilidades AG-C09,AG-C11]

Referencias Bibliográficas: [Newman, 2021]

Temas

  1. Principios de microservicios: cohesión, acoplamiento débil y fronteras de servicio.
  2. Descomposición de monolitos: diseño orientado al dominio (DDD).
  3. Principios de diseño de API
    1. Consistencia
      1. Las API consistentes son más fáciles de aprender y menos propensas a errores
      2. La consistencia es tanto interna (entre diferentes partes de la API) como externa (siguiendo patrones comunes de API)
    2. Capacidad de composición (composability)
    3. Documentación de contratos
      1. Las operaciones de la API deben describir su efecto en el sistema, pero generalmente no su implementación
      2. Precondiciones, postcondiciones e invariantes
    4. Capacidad de expansión (expandability)
    5. Reporte de errores
      1. Los errores deben ser claros, predecibles y accionables
      2. La entrada que no coincida con el contrato debe producir un error
      3. Los errores que pueden gestionarse de manera confiable sin reportarse deben gestionarse
  4. API Gateway y malla de servicios (service mesh).
  5. Patrones de resiliencia: Circuit Breaker, Retry, Bulkhead, Timeout.
  6. Almacenes de Datos
    1. Estructuras de datos mantenidas cooperativamente que implementan mapas y TADs relacionados.
    2. Variedades: Propiedad exclusiva, compartida, fragmentada, replicada, inmutable, versionada.

Aprendizaje esperado (Learning Outcomes)

  1. Diseñar una API para un solo componente de un sistema de software grande, incluyendo la identificación y documentación de las invariantes, el contrato y las condiciones de error de cada operación [Diseñar]
  2. Evaluar una descripción de API en términos de consistencia, capacidad de composición y capacidad de expansión [Evaluar]
  3. Diseñar un sistema basado en microservicios descomponiendo una aplicación monolítica en servicios independientes. [Usar]
  4. Aplicar patrones de resiliencia para tolerar fallos en sistemas distribuidos. [Usar]

Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM