Referencias Bibliográficas: [Newman, 2021]
Temas
- Principios de microservicios: cohesión, acoplamiento débil y fronteras de servicio.
- Descomposición de monolitos: diseño orientado al dominio (DDD).
- Principios de diseño de API
- Consistencia
- Las API consistentes son más fáciles de aprender y menos propensas a errores
- La consistencia es tanto interna (entre diferentes partes de la API) como externa (siguiendo patrones comunes de API)
- Capacidad de composición (composability)
- Documentación de contratos
- Las operaciones de la API deben describir su efecto en el sistema, pero generalmente no su implementación
- Precondiciones, postcondiciones e invariantes
- Capacidad de expansión (expandability)
- Reporte de errores
- Los errores deben ser claros, predecibles y accionables
- La entrada que no coincida con el contrato debe producir un error
- Los errores que pueden gestionarse de manera confiable sin reportarse deben gestionarse
- API Gateway y malla de servicios (service mesh).
- Patrones de resiliencia: Circuit Breaker, Retry, Bulkhead, Timeout.
- Almacenes de Datos
- Estructuras de datos mantenidas cooperativamente que implementan mapas y TADs relacionados.
- Variedades: Propiedad exclusiva, compartida, fragmentada, replicada, inmutable, versionada.
Aprendizaje esperado (Learning Outcomes)
- 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]
- Evaluar una descripción de API en términos de consistencia, capacidad de composición y capacidad de expansión [Evaluar]
- Diseñar un sistema basado en microservicios descomponiendo una aplicación monolítica en servicios independientes. [Usar]
- 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