SlideShare una empresa de Scribd logo
@mordonez_me
Marco Ordoñez
Scala Perú
@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.
Perú user group
Scala
Casos de éxito y porqué me debería interesar
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.
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.
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.
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.
Perú user group
Wallmart
Scala, casos de éxito y porqué me debería interesar
Entonces… ¿Por qué me debería interesar Scala?
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
Perú user group
¿Orientado a objetos o funcional?
Perú user group
¿Orientado a objetos o funcional?
¿Cual debo escoger?
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.
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.
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.
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…
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.
Perú user group
Introducción al framework Play
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.
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.
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.
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
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.
Perú user group
Introducción al framework Play
Las vistas
Todas las plantillas reciben parámetros
como una función.
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.
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)
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.
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
Perú user group
Introducción al stack de Typesafe
Perú user group
Introducción al stack de Typesafe
Perú user group
Introducción al stack de Typesafe
Lenguaje multiparadigma (orientado a objetos y funcional)
http://scala-lang.org
Perú user group
Introducción al stack de Typesafe
Framework basado en el modelo de actores para manejar la concurrencia.
http://akka.io
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
Perú user group
Introducción al stack de Typesafe
Procesamiento de datos de gran volumen.
http://spark.apache.org
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
Perú user group
Gracias

Más contenido relacionado

La actualidad más candente

Java
JavaJava
Kumbia php
Kumbia phpKumbia php
Java Es O No Software Libre
Java Es O No Software LibreJava Es O No Software Libre
Java Es O No Software LibreJose Rojas
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache Camel
Domingo Suarez Torres
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
Laura Almazan
 
9.laravel
9.laravel9.laravel
Java Speech API
Java Speech APIJava Speech API
Java Speech API
diegoerodriguezv
 
MVC en CakePHP 2.0
MVC en CakePHP 2.0MVC en CakePHP 2.0
MVC en CakePHP 2.0
Saúl Vázquez
 
Java
JavaJava
java,conceptos basicos
java,conceptos basicosjava,conceptos basicos
java,conceptos basicosMariano Galvez
 
Introducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebIntroducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos Web
Facundo E. Goñi Perez
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itst
omicx
 
Estructura de Directorio de KumbiaPHP Framework versión 1.0 Spirit
Estructura de Directorio de KumbiaPHP Framework versión 1.0 SpiritEstructura de Directorio de KumbiaPHP Framework versión 1.0 Spirit
Estructura de Directorio de KumbiaPHP Framework versión 1.0 Spirit
Deivinson Tejeda
 
Java
JavaJava
Kumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y FuturoKumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y Futuro
Deivinson Tejeda
 
investigacion unidad tres componentes y librerias
investigacion unidad tres componentes y libreriasinvestigacion unidad tres componentes y librerias
investigacion unidad tres componentes y librerias
Anel Sosa
 

La actualidad más candente (19)

Java
JavaJava
Java
 
Kumbia php
Kumbia phpKumbia php
Kumbia php
 
Java Es O No Software Libre
Java Es O No Software LibreJava Es O No Software Libre
Java Es O No Software Libre
 
CakePHP
CakePHPCakePHP
CakePHP
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache Camel
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
 
9.laravel
9.laravel9.laravel
9.laravel
 
Java Speech API
Java Speech APIJava Speech API
Java Speech API
 
MVC en CakePHP 2.0
MVC en CakePHP 2.0MVC en CakePHP 2.0
MVC en CakePHP 2.0
 
Java
JavaJava
Java
 
Java
JavaJava
Java
 
java,conceptos basicos
java,conceptos basicosjava,conceptos basicos
java,conceptos basicos
 
Introducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebIntroducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos Web
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itst
 
Estructura de Directorio de KumbiaPHP Framework versión 1.0 Spirit
Estructura de Directorio de KumbiaPHP Framework versión 1.0 SpiritEstructura de Directorio de KumbiaPHP Framework versión 1.0 Spirit
Estructura de Directorio de KumbiaPHP Framework versión 1.0 Spirit
 
Symfony2
Symfony2Symfony2
Symfony2
 
Java
JavaJava
Java
 
Kumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y FuturoKumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y Futuro
 
investigacion unidad tres componentes y librerias
investigacion unidad tres componentes y libreriasinvestigacion unidad tres componentes y librerias
investigacion unidad tres componentes y librerias
 

Similar a Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)

Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring Insight
Paradigma Digital
 
Conociendo los Futures en Scala (Tercer meetup Scala Perú Feb 2016)
Conociendo los Futures en Scala (Tercer meetup Scala Perú Feb 2016)Conociendo los Futures en Scala (Tercer meetup Scala Perú Feb 2016)
Conociendo los Futures en Scala (Tercer meetup Scala Perú Feb 2016)
Marco Antonio Ordoñez Valverde
 
Java basico
Java basicoJava basico
Java basico
Lexahira Lopez
 
Atix20
Atix20Atix20
Atix20
atixlibre
 
ATIX13
ATIX13ATIX13
ATIX20
ATIX20ATIX20
9 tecnologías v1.1
9 tecnologías v1.19 tecnologías v1.1
9 tecnologías v1.1UTN
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios web
jcarazo
 
LARAVEL-01-INTRODUCCION.pptx
LARAVEL-01-INTRODUCCION.pptxLARAVEL-01-INTRODUCCION.pptx
LARAVEL-01-INTRODUCCION.pptx
Jorge Arcadio Gonzales Castillo
 
Scala
ScalaScala
Framework Laravel
Framework LaravelFramework Laravel
Framework Laravel
Rafael Lobo
 
Laravel vc
Laravel vcLaravel vc
Laravel vc
Victor Cusco
 
Introduccion a NetLogo
Introduccion a NetLogoIntroduccion a NetLogo
Introduccion a NetLogoDiana
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Facescok12v
 
Conociendo Nuestro Fua interno
Conociendo Nuestro Fua internoConociendo Nuestro Fua interno
Conociendo Nuestro Fua interno
Jose Patricio Bovet Derpich
 

Similar a Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015) (20)

Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring Insight
 
Conociendo los Futures en Scala (Tercer meetup Scala Perú Feb 2016)
Conociendo los Futures en Scala (Tercer meetup Scala Perú Feb 2016)Conociendo los Futures en Scala (Tercer meetup Scala Perú Feb 2016)
Conociendo los Futures en Scala (Tercer meetup Scala Perú Feb 2016)
 
Java basico
Java basicoJava basico
Java basico
 
Atix20
Atix20Atix20
Atix20
 
Welcome to Django
Welcome to DjangoWelcome to Django
Welcome to Django
 
ATIX13
ATIX13ATIX13
ATIX13
 
Atix13
Atix13Atix13
Atix13
 
ATIX20
ATIX20ATIX20
ATIX20
 
9 tecnologías v1.1
9 tecnologías v1.19 tecnologías v1.1
9 tecnologías v1.1
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios web
 
principios básicos
principios básicosprincipios básicos
principios básicos
 
LARAVEL-01-INTRODUCCION.pptx
LARAVEL-01-INTRODUCCION.pptxLARAVEL-01-INTRODUCCION.pptx
LARAVEL-01-INTRODUCCION.pptx
 
Scala
ScalaScala
Scala
 
Framework Laravel
Framework LaravelFramework Laravel
Framework Laravel
 
Laravel vc
Laravel vcLaravel vc
Laravel vc
 
Introduccion a NetLogo
Introduccion a NetLogoIntroduccion a NetLogo
Introduccion a NetLogo
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
Conociendo Nuestro Fua interno
Conociendo Nuestro Fua internoConociendo Nuestro Fua interno
Conociendo Nuestro Fua interno
 
Python django
Python djangoPython django
Python django
 
Fondo1 (2)
Fondo1 (2)Fondo1 (2)
Fondo1 (2)
 

Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)

  • 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.
  • 3. Perú user group Scala Casos de éxito y porqué me debería interesar
  • 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.
  • 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.
  • 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.
  • 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.
  • 8. Perú user group Wallmart Scala, casos de éxito y porqué me debería interesar Entonces… ¿Por qué me debería interesar Scala?
  • 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
  • 10. Perú user group ¿Orientado a objetos o funcional?
  • 11. Perú user group ¿Orientado a objetos o funcional? ¿Cual debo escoger?
  • 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.
  • 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.
  • 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.
  • 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…
  • 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.
  • 17. Perú user group Introducción al framework Play
  • 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.
  • 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.
  • 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.
  • 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
  • 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.
  • 23. Perú user group Introducción al framework Play Las vistas Todas las plantillas reciben parámetros como una función.
  • 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.
  • 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)
  • 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.
  • 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
  • 28. Perú user group Introducción al stack de Typesafe
  • 29. Perú user group Introducción al stack de Typesafe
  • 30. Perú user group Introducción al stack de Typesafe Lenguaje multiparadigma (orientado a objetos y funcional) http://scala-lang.org
  • 31. Perú user group Introducción al stack de Typesafe Framework basado en el modelo de actores para manejar la concurrencia. http://akka.io
  • 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
  • 33. Perú user group Introducción al stack de Typesafe Procesamiento de datos de gran volumen. http://spark.apache.org
  • 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