$30 off During Our Annual Pro Sale. View Details »

Conociendo Scala y las tecnologías de Typesafe

mordonez
November 05, 2015

Conociendo Scala y las tecnologías de Typesafe

Esta presentación fue usada en el primer meetup de Scala Perú. Brinda un breve vistazo a las tecnologías de Typesafe, las ventajas del lenguaje Scala y expone algunas casos de éxito.

mordonez

November 05, 2015
Tweet

More Decks by mordonez

Other Decks in Technology

Transcript

  1. @mordonez_me
    Marco Ordoñez
    Scala Perú

    View Slide

  2. @mordonez_me
    Marco Ordoñez
    Apasionado de las nuevas tecnologías.
    Usuario de las tecnologías de Scala desde hace ~3 años.
    Fundador de la empresa Evolbit (www.evolbit.pe).
    Promotor del uso de los principios reactivos en el desarrollo de Software.

    View Slide

  3. Perú user group
    Scala
    Casos de éxito y porqué me debería interesar

    View Slide

  4. Perú user group
    Twitter
    Scala, casos de éxito y porqué me debería interesar
    http://www.typesafe.com/resources/case-studies-and-stories/new-tweets-per-second-record-and-how
    Twitter quería asegurarse que el servicio esté disponible sin importar lo que suceda al rededor
    del mundo pero tuvo un problema en el año 2010 con el stack de aquel entonces (Ruby) cuando
    la copa mundial puso a twitter en el medio de una conversación global en tiempo real.
    Hoy gran parte de los servicios de Twitter están hechos con Scala, principalmente para crear
    servicios de alto tráfico que forman parte de sistemas distribuidos.

    View Slide

  5. Perú user group
    LinkedIn
    Scala, casos de éxito y porqué me debería interesar
    http://www.typesafe.com/resources/case-studies-and-stories/the-play-framework-at-linkedin
    LinkedIn utiliza Scala en el core del grafo de su red social y otros componentes críticos .
    Hoy gran parte de los servicios de LinkedIn están hechos con Scala, principalmente para crear
    servicios de alto tráfico que forman parte de sistemas distribuidos.
    Han realizado diversos proyectos open source basados en Scala, por ejemplo Norbert y Kafka.

    View Slide

  6. Perú user group
    Coursera
    Scala, casos de éxito y porqué me debería interesar
    http://www.typesafe.com/resources/case-studies-and-stories/making-online-education-accessible-with-typesafe
    Coursera evolucionó de PHP hacia un nuevo stack de tecnologías para poder soportar el tráfico que
    experimentaba (6.3 millones de estudiantes).
    Se evaluaron Python y Typesafe reactive platform y la ganadora fue la plataforma de Typesafe. El
    stack actual incluye Playframework, Scala y Slick.

    View Slide

  7. Perú user group
    Scala, casos de éxito y porqué me debería interesar
    http://www.typesafe.com/resources/case-studies-and-stories/walmart-boosts-conversions-by-20-with-typesafe-reactive-platform
    Wallmart Canadá quería mejorar el rendimiento de su tienda en linea para brindar un mejor servicio
    a sus usuarios.
    Antes de la migración, las tecnologías que usaban los forzaban a adquirir hardware muy costoso y
    tenían limitaciones de concurrencia por el software legacy que tenían.
    Luego de la migración lograron mitigar sus problemas de hardware usando Play, mejoraron el
    rendimiento de desarrollo y lograron una mejor integración con otros sistemas legacy.

    View Slide

  8. Perú user group
    Wallmart
    Scala, casos de éxito y porqué me debería interesar
    Entonces… ¿Por qué me debería interesar Scala?

    View Slide

  9. Perú user group
    Scala, casos de éxito y porqué me debería interesar
    Las casos de éxito relacionados con Scala evidencian la confianza y buenos resultados que otras
    empresa han tenido al adoptar Scala y el stack de Typesafe.
    Si bien el stack de Typesafe soporta tanto Scala como Java, en el caso de Scala hay algunos
    beneficios que son importantes resaltar.
    Soporte de dos paradigmas, orientado a
    objetos y funcional.
    Inferencia de tipos
    Multi herencia a través de traits
    Código más compacto
    Funciones de orden superior
    Interoperabilidad con Java
    Conversiones implícitas
    Pattern matching
    Parámetros nombrados
    Paralelismo en las colecciones
    Eliminación de excepciones null con Option
    Colecciones mutables e inmutables
    Optimización de recursividad por cola

    View Slide

  10. Perú user group
    ¿Orientado a objetos o funcional?

    View Slide

  11. Perú user group
    ¿Orientado a objetos o funcional?
    ¿Cual debo escoger?

    View Slide

  12. Perú user group
    ¿Orientado a objetos o funcional?
    La verdad desde la perspectiva computacional funcional más pura es que se debe ser 100%
    funcional, sin embargo Scala ofrece la convivencia de ambos paradigmas de una forma segura.
    Siendo la programación orientada la más conocida por todos, veamos que es la programación
    funcional y evaluemos las ventajas de practicarla.

    View Slide

  13. Perú user group
    ¿Orientado a objetos o funcional?
    ¿Qué es la programación funcional?
    La programación funcional está basada en una premisa básica, construir programas utilizando
    funciones puras (que no tienen efectos colaterales).
    La programación funciona vista desde un modo estricto no permite la modificación de variables, el
    uso de iteraciones como estructuras de control (loops) ni otras estructuras de la programación
    orientada a objetos (imperativa).
    Vista de un plano mas general podemos decir que la programación funcional está enfocada
    específicamente en las funciones, siendo estas valores que pueden ser producidos, consumidos y
    compuestos g ∘ f: X → Z.

    View Slide

  14. Perú user group
    ¿Orientado a objetos o funcional?
    ¿Qué beneficios tiene la programación funcional?
    Uno de los beneficios actuales más populares debido a su naturaleza inmutable es el beneficio
    obtenido con el paralelismo en computadoras multicore.
    Desde hace un tiempo atrás los procesadores no se están volviendo mucho mas rápidos por core
    sino que están compuestos de varios cores. Para sacar provecho a esto es necesario ejecutar
    instrucciones en cada core (threads), sin embargo el gran problema de esto es el estado mutable
    compartido de una variable en diferentes threads. La programación funcional soluciona ese gran
    problema tratando con datos inmutables.

    View Slide

  15. Perú user group
    ¿Orientado a objetos o funcional?
    ¿Qué beneficios tiene la programación funcional?
    Los programas escritos con programación funcional son más compactos y más fáciles de entender.
    Tiene menor riesgo de efectos colaterales, elimina las clásicas preguntas de ¿Como se cambió este
    valor?
    Polimorfismo paramétrico para que una función trate con diferentes tipos de datos.
    Evaluación perezosa que evita la ejecución de código hasta el momento de uso.
    Parámetros call by name que evitan la reducción de parámetros hasta el momento de su uso.
    Y también puede todo lo que otros lenguajes orientados a objetos pueden hacer…

    View Slide

  16. Perú user group
    ¿Orientado a objetos o funcional?
    Conocer la programación funcional es un camino largo pero Scala
    hace que sea mucho más fácil de caminar soportando ambos
    paradigmas.

    View Slide

  17. Perú user group
    Introducción al framework Play

    View Slide

  18. Perú user group
    Introducción al framework Play
    Play framework es un framework que fue inicialmente inspirado en su diseño por otro frameworks
    MVC como Django o Ruby on Rails.
    Su enfoque es brindar un framework que cumpla con los principios reactivos
    (www.reactivemanifesto.com) y que sea simple de usar.
    En la actualidad play cuenta con más de 150 plantillas que sirven de ejemplo.
    Cuenta con soporte tanto para Scala como para Java.
    Es 100% asíncrono (non blocking) y está construido con Akka.
    Cuenta con compilador de assets y se integra con webjars para el manejo de dependencias
    Frontend.

    View Slide

  19. Perú user group
    ¿Orientado a objetos o funcional?
    ¿Por qué elegir play?
    100% asíncrono
    Puede hacer más que otros frameworks en el mismo hardware por su computación paralela.
    Es completamente stateless (no tiene sesión http).
    Se despliega como una aplicación standalone, puede ser RPM, Debian, tar.gz e incluso Docker.
    Está integrado completamente con Akka.
    Web sockets a través de actores.
    Cuenta con inyección de dependencias por defecto.

    View Slide

  20. Perú user group
    Introducción al framework Play
    ¿Por qué elegir play?
    Cuenta con evolutions para migraciones en la base de datos.
    Se integra perfectamente con Slick como FRM (Functional relational mapping).
    Está respaldado por la empresa Typesafe que brinda soporte enterprise a un precio cómodo.
    Permite la configuración de pool de threads para usar en diferentes contextos.
    Sistema de plantillas con evaluación en tiempo de compilación.
    Gran cantidad de librerías y una comunidad muy grande.
    Está basado en SBT.

    View Slide

  21. Perú user group
    Introducción al framework Play
    Anatomia de un proyecto Play
    app: Todos el código fuente relacionado al
    proyecto
    app/controllers: Todos los controladores de la
    aplicación
    conf: Archivos de configuración del proyecto
    project: archivos de configuración, por ejemplo
    versión de play, sbt, plugins.
    public: Todos losa archivos estáticos
    test: Archivos de tests

    View Slide

  22. Perú user group
    Introducción al framework Play
    Los controladores
    Los métodos pueden ser definidos como Action o
    Action.async.
    Las plantillas se llaman por su nombre de
    paquete. Las plantillas son convertidas a código.

    View Slide

  23. Perú user group
    Introducción al framework Play
    Las vistas
    Todas las plantillas reciben parámetros
    como una función.

    View Slide

  24. Perú user group
    Introducción al framework Play
    Las rutas
    El archivo de rutas define una ruta y el controlador al que direcciona por linea.

    View Slide

  25. Perú user group
    Introducción al framework Play
    La configuración
    El archivo de configuración utiliza el
    formato HOCON (Human-Optimized
    Config Object Notation)

    View Slide

  26. Perú user group
    Introducción al framework Play
    La ejecución
    El comando run inicia la ejecución.
    Los comandos pueden utilizar el
    símbolo ~ antes para habilitar
    autoreload.

    View Slide

  27. Perú user group
    Introducción al framework Play
    Activator
    Activator es el comando por defecto que
    reemplaza a sbt y que además trae una
    interfaz gráfica para explorar los
    ejemplos y compilarlos en la misma
    web.
    Para activarlo se debe usar activator ui

    View Slide

  28. Perú user group
    Introducción al stack de Typesafe

    View Slide

  29. Perú user group
    Introducción al stack de Typesafe

    View Slide

  30. Perú user group
    Introducción al stack de Typesafe
    Lenguaje multiparadigma (orientado a objetos y funcional)
    http://scala-lang.org

    View Slide

  31. Perú user group
    Introducción al stack de Typesafe
    Framework basado en el modelo de actores para manejar la concurrencia.
    http://akka.io

    View Slide

  32. Perú user group
    Introducción al stack de Typesafe
    Framework web 100% asíncrono basado en los principios reactivos.
    http://playframework.com
    https://www.typesafe.com/blog/why-is-play-framework-so-fast

    View Slide

  33. Perú user group
    Introducción al stack de Typesafe
    Procesamiento de datos de gran volumen.
    http://spark.apache.org

    View Slide

  34. Perú user group
    Introducción al stack de Typesafe
    Libreria para acceso a bases de datos basada en principios funcionales (FRM)
    http://slick.typesafe.com

    View Slide

  35. Perú user group
    Gracias

    View Slide