2 Acerca de mi José Carlos Chávez - Ingeniero de Software en Traceable.ai - Contribuidor en proyectos de Observabilidad de Sistemas Distribuidos - Estudiante de Matemática Pura @jcchavezs
¿Qué es un sistema? Un sistema es un conjunto de elementos relacionados entre sí que funcionan como un todo. e.g. una silla, una mesa, un celular, etc. 3 @jcchavezs Foto de Anne Nygård en Unsplash
¿Qué son los sistemas distribuidos? Una colección de componentes independientes que desde la perspectiva del usuario aparenta un único y coherente sistema - Tanenbaum & van Steen 7 @jcchavezs
Concurrencia ● Concurrencia es encargarse de muchas cosas que se superponen de una vez. ● Es natural en un modelo donde muchos usuarios tienen acceso al mismo recurso. 10 @jcchavezs
Sin reloj global ● Cada componente mantiene una noción propia del tiempo dependiendo de su ubicación y red. ● La secuencia de los eventos es difícil de determinar. 11 Depositar S/. 10 Bloquear cuenta @jcchavezs
Fallo independiente de componentes ● Fallos en la red ● Fallo de un servidor (o host) ● Fallos de los componentes: ○ Errores de programación ○ Estados erróneos ○ Errores bizantinos 12 @jcchavezs
Intercambio de recursos 15 @jcchavezs Se trata de facilitar que los usuarios (y aplicaciones) accedan y compartan recursos remotos. Los recursos pueden ser típicamente periféricos, instalación de almacenamiento, datos, archivos, servicios o redes.
Apertura Ser abierto significa que los componentes pueden ser utilizados o integrados fácilmente en otros sistemas. Dichos componentes deben ser explícitos en qué ofrecen y cómo comunicarse con ellos. 16 @jcchavezs ABC 알파 벳
Escalabilidad ● El sistema sigue siendo efectivo frente a un aumento significativo en la cantidad de recursos transferidos (datos) y el número de usuarios. ● Capacidad para manejar una carga futura en aumento. 17 @jcchavezs 10 peticiones/segundo 50 peticiones/segundo 500 peticiones/segundo
Tolerancia de fallos Se trata de que un sistema esté capacitado para continuar su funcionamiento cuando algún componente del sistema falla, posiblemente a un nivel reducido, lo que es mejor a que el sistema falle completamente. 18 @jcchavezs
Heterogeneridad Dado que los sistemas individuales a menudo se desarrollaron de forma independiente entre sí, es posible que se basen en diferentes principios arquitectónicos, diferentes lenguajes de programación y sistema operativo. 19 @jcchavezs
21 Ventajas ● Baja probabilidad de fallo total ● Alta escalabilidad ● Acceso a mayor cantidad de recursos ● Mayor capacidad de procesamiento de datos @jcchavezs
22 Falacias comunes ● La red es confiable, segura u homogénea ● La topología no cambia ● La latencia es cero ● El ancho de banda es infinito ● El coste de transporte es cero ● Solo hay un administrador Fuente: https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing @jcchavezs
24 Desafíos ● La mayoría están asociadas a fallos de algún tipo. ● Los fallos provienen de la naturaleza impredecible, asincrónica y sumamente diversa del mundo físico. @jcchavezs
25 Conclusiones ● Los sistemas distribuidos son complejos. ● Están orientados a solucionar una serie de problemas y como efecto secundario, introducen otros. @jcchavezs
26 Referencias ● A brief introduction to distributed systems, Maarten van Steen & Andrew S. Tanenbaum ● From layman to superman: distributed systems an introduction, Median Rawashdeh ● Introduction to Distributed Systems (DS), Professor Frank Eliassen @jcchavezs