Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introducción a los Sistemas Distribuidos con Go

Introducción a los Sistemas Distribuidos con Go

Introducción a los sistemas distribuidos con Go

Verónica López

November 15, 2016
Tweet

More Decks by Verónica López

Other Decks in Technology

Transcript

  1. Go es un lenguaje open source que permite hacer software

    eficiente, confiable y fácil de leer.
  2. La legibilidad va más allá de la comodidad del programador

    y de que la sintaxis sea similar al Inglés, por ejemplo:
  3. Legibilidad •Lenguaje de sistemas •+ eficiencia para teams grandes •Aprovechar

    las arquitecturas modernas •Open Source •Código y binarios ligeros •Standard Library
  4. Leslie Lamport, papá de los sistemas distribuidos Un sistema distribuido

    es aquel donde una máquina acerca de la que nunca he escuchado, hace que mi sistema falle
  5. Capacidad de un sistema (o aplicación) de manejar cada vez

    mayores cantidades de trabajo o su potencial para lograrlo
  6. Si funciona y es eficiente para 100 usuarios, que también

    sea eficiente para 110 (o un millón+…)
  7. Escalabilidad •Lenguaje de sistemas •Equipos grandes •Aprovechar las arquitecturas modernas

    •Open Source •Código y binarios ligeros •Standard Library •Concurrencia
  8. Concurrencia •Basada en Communicating Sequential Process (Hoare, 1978) bit.ly/ 1sWmDWJ

    •Dos componentes básicos: goroutines y channels •Concurrencia =! Paralelismo
  9. Concurrencia •Lenguaje de sistemas •Equipos grandes •Aprovechar las arquitecturas modernas

    •Open Source •Código y binarios ligeros •Standard Library •Concurrencia
  10. Lenguajes modernos como Go, Elixir y Rust aprovechan los recursos

    automáticamente. Sean cores, servidores o clusters.
  11. Concurrencia •Una goroutine es un tipo de thread dentro del

    programa, con sus propias variables locales y su propio stack. •Un channel lleva los mensajes entre goroutines.
  12. Concurrencia •Clave para sistemas distribuidos •Recolección de basura •Pase de

    mensajes dentro y fuera del programa •No comunicar mediante memoria compartida •Mejor, al revés :)
  13. Conclusiones Los distsys son cada vez más populares y necesarios.

    Los distsys actuales deben ser escalables. No es sencillo. Go lo hace más fácil, gracias a sus características, su modelo de concurrencia y su desempeño transparente en arquitecturas actuales.
  14. Extras Empresas que han migrado a Go desde Node, Ruby,

    entre otros: •http://bit.ly/1mRMiHf •http://bit.ly/1Tlw4d5 •http://bit.ly/2fWs0Cq •http://bit.ly/1pQorQY •http://bit.ly/1Gr5ruS • Y muchas más. Googleen si les interesa.