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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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…
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.
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.
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.
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
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