Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

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 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Perú user group Wallmart Scala, casos de éxito y porqué

    me debería interesar Entonces… ¿Por qué me debería interesar Scala?
  7. 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
  8. 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.
  9. 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.
  10. 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.
  11. 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…
  12. 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.
  13. 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.
  14. 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.
  15. 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.
  16. 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
  17. 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.
  18. Perú user group Introducción al framework Play Las vistas Todas

    las plantillas reciben parámetros como una función.
  19. 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.
  20. 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)
  21. 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.
  22. 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
  23. Perú user group Introducción al stack de Typesafe Lenguaje multiparadigma

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

    en el modelo de actores para manejar la concurrencia. http://akka.io
  25. 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
  26. Perú user group Introducción al stack de Typesafe Procesamiento de

    datos de gran volumen. http://spark.apache.org
  27. 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