SlideShare una empresa de Scribd logo

Scala @ Real life

Slides de la charla "Scala @ Real life" del meetup Scala Madrid (http://www.meetup.com/Scala-Programming-Madrid/). 27 de junio de 2014

1 de 57
Descargar para leer sin conexión
Scala Programming @ Madrid
Scala @ Real Life
Madrid
Junio 2014
Scala Programming @ Madrid
¿Quiénes somos?
• Javier Santos
– Ing. Téc. Informática
– Máster en Sist.
Telemáticos.
• David Vallejo
– Ing. Téc. Informática
– Ing. Telecomunicaciones.
Scala Programming @ Madrid
¿Qué contamos?
• Experiencia personal
(Scala + allá de los tutoriales)
– Trayectoria con Scala
• Habla Computing
• Tecsisa
– ¿Cloud? ¿BigData?
– Arquitectura, subsistemas
– Herramientas de desarrollo
– Conclusiones
Scala Programming @ Madrid
¿Qué es ?
• Características
– Lenguaje funcional
– Orientado a objetos
– Herencia múltiple
– Tipado estático
– Notación infija
– Funciones de orden superior
– Opera con la JVM
• Documentación, comunidad, foros, cursos, …
Scala Programming @ Madrid
Scala Programming @ Madrid
Trayectoria con Scala
• Habla Computing
– Speech (DSL embebido en Scala)
• Arquitectura
– SBT sin documentación (Integración continua)
– Sist. Reactivo (Monádico,Sin Akka)
– Serialización, Persistencia, actualización de entidades … ¡Home
made!
• Aplicaciones
– Evolución constante del lenguaje = refactorización de apps
constante.
– Pintxapp, BigBrothapp, Twitter, Trac, …
Publicidad

Recomendados

Más contenido relacionado

Destacado

Curso de Scala: Trabajando con variables
Curso de Scala: Trabajando con variablesCurso de Scala: Trabajando con variables
Curso de Scala: Trabajando con variablesGary Briceño
 
Aplicaciones Del Lenguaje Scala
Aplicaciones Del Lenguaje ScalaAplicaciones Del Lenguaje Scala
Aplicaciones Del Lenguaje Scalaguestbc5e8
 
Kanban principio de visualizacion
Kanban   principio de visualizacionKanban   principio de visualizacion
Kanban principio de visualizacionGary Briceño
 
Seguridad sql injection
Seguridad   sql injectionSeguridad   sql injection
Seguridad sql injectionGary Briceño
 
RDF Validation Future work and applications
RDF Validation Future work and applicationsRDF Validation Future work and applications
RDF Validation Future work and applicationsJose Emilio Labra Gayo
 
Arquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el ServidorArquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el ServidorJose Emilio Labra Gayo
 
Scala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentationScala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentationMartin Odersky
 

Destacado (20)

Curso de Scala: Trabajando con variables
Curso de Scala: Trabajando con variablesCurso de Scala: Trabajando con variables
Curso de Scala: Trabajando con variables
 
Desarrollo Web con Scala
Desarrollo Web con ScalaDesarrollo Web con Scala
Desarrollo Web con Scala
 
Aplicaciones Del Lenguaje Scala
Aplicaciones Del Lenguaje ScalaAplicaciones Del Lenguaje Scala
Aplicaciones Del Lenguaje Scala
 
Scala desde c# y JavaScript
Scala desde c# y JavaScriptScala desde c# y JavaScript
Scala desde c# y JavaScript
 
Scala en la Practica
Scala en la PracticaScala en la Practica
Scala en la Practica
 
Kanban principio de visualizacion
Kanban   principio de visualizacionKanban   principio de visualizacion
Kanban principio de visualizacion
 
Introducción a scala
Introducción a scalaIntroducción a scala
Introducción a scala
 
Scala @ Real Life Codemotion 2014
Scala @ Real Life Codemotion 2014Scala @ Real Life Codemotion 2014
Scala @ Real Life Codemotion 2014
 
Seguridad sql injection
Seguridad   sql injectionSeguridad   sql injection
Seguridad sql injection
 
4 Introducción al lenguaje Scala
4 Introducción al lenguaje Scala4 Introducción al lenguaje Scala
4 Introducción al lenguaje Scala
 
Scala Overview
Scala OverviewScala Overview
Scala Overview
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
RDF Validation Future work and applications
RDF Validation Future work and applicationsRDF Validation Future work and applications
RDF Validation Future work and applications
 
Apache spark meetup
Apache spark meetupApache spark meetup
Apache spark meetup
 
RDF validation tutorial
RDF validation tutorialRDF validation tutorial
RDF validation tutorial
 
ShEx vs SHACL
ShEx vs SHACLShEx vs SHACL
ShEx vs SHACL
 
SHACL by example
SHACL by exampleSHACL by example
SHACL by example
 
Arquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el ServidorArquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el Servidor
 
Spark Hands-on
Spark Hands-onSpark Hands-on
Spark Hands-on
 
Scala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentationScala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentation
 

Similar a Scala @ Real life

Trabajo fin de master Dirección TI
Trabajo fin de master Dirección TITrabajo fin de master Dirección TI
Trabajo fin de master Dirección TIManolo Crespo
 
Tecnicas Big Data: Meetup Cassandra
Tecnicas Big Data: Meetup CassandraTecnicas Big Data: Meetup Cassandra
Tecnicas Big Data: Meetup CassandraStratebi
 
Analitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big dataAnalitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big dataJosé Carlos García Serrano
 
¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?Socialmetrix
 
Why Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén CasadoWhy Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén CasadoBig Data Spain
 
Commit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine LearningCommit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine LearningRafa Hidalgo
 
Microservicios con ASP.NET Core
Microservicios con ASP.NET CoreMicroservicios con ASP.NET Core
Microservicios con ASP.NET CoreEduardo Campañó
 
Cassandra Meet Up Noviembre - Drag & Drop Techs With Cassandra
Cassandra Meet Up Noviembre - Drag & Drop Techs With CassandraCassandra Meet Up Noviembre - Drag & Drop Techs With Cassandra
Cassandra Meet Up Noviembre - Drag & Drop Techs With CassandraFrancisco Javier Pulido Piñero
 
Data Platform de BEEVA
Data Platform de BEEVAData Platform de BEEVA
Data Platform de BEEVABEEVA_es
 
Contenedores y el Futuro del Despliegue de Aplicaciones
Contenedores y el Futuro del Despliegue de AplicacionesContenedores y el Futuro del Despliegue de Aplicaciones
Contenedores y el Futuro del Despliegue de AplicacionesBitnami
 
Cacique presentacion (español)
Cacique presentacion (español)Cacique presentacion (español)
Cacique presentacion (español)Cacique Test
 
Comenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWSComenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWSAmazon Web Services LATAM
 
Introduccion a Apache Spark
Introduccion a Apache SparkIntroduccion a Apache Spark
Introduccion a Apache SparkGustavo Arjones
 
Ejemplos de Proyectos de Ciencia de Datos y Big Data en el INEGI
Ejemplos de Proyectos de Ciencia de Datos y Big Data en el INEGIEjemplos de Proyectos de Ciencia de Datos y Big Data en el INEGI
Ejemplos de Proyectos de Ciencia de Datos y Big Data en el INEGIAbel Alejandro Coronado Iruegas
 
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 CamelDomingo Suarez Torres
 
2016 ULL Cabildo KEEDIO - KEEDIO DATA STACK
2016 ULL Cabildo KEEDIO - KEEDIO DATA STACK2016 ULL Cabildo KEEDIO - KEEDIO DATA STACK
2016 ULL Cabildo KEEDIO - KEEDIO DATA STACKKEEDIO
 

Similar a Scala @ Real life (20)

Trabajo fin de master Dirección TI
Trabajo fin de master Dirección TITrabajo fin de master Dirección TI
Trabajo fin de master Dirección TI
 
Tecnicas Big Data: Meetup Cassandra
Tecnicas Big Data: Meetup CassandraTecnicas Big Data: Meetup Cassandra
Tecnicas Big Data: Meetup Cassandra
 
Analitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big dataAnalitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big data
 
¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?
 
Why Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén CasadoWhy Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén Casado
 
Commit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine LearningCommit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine Learning
 
Microservicios con ASP.NET Core
Microservicios con ASP.NET CoreMicroservicios con ASP.NET Core
Microservicios con ASP.NET Core
 
Cassandra Meet Up Noviembre - Drag & Drop Techs With Cassandra
Cassandra Meet Up Noviembre - Drag & Drop Techs With CassandraCassandra Meet Up Noviembre - Drag & Drop Techs With Cassandra
Cassandra Meet Up Noviembre - Drag & Drop Techs With Cassandra
 
Data Platform de BEEVA
Data Platform de BEEVAData Platform de BEEVA
Data Platform de BEEVA
 
Comenzando con Arquitecturas sin servidores
Comenzando con Arquitecturas sin servidoresComenzando con Arquitecturas sin servidores
Comenzando con Arquitecturas sin servidores
 
Contenedores y el Futuro del Despliegue de Aplicaciones
Contenedores y el Futuro del Despliegue de AplicacionesContenedores y el Futuro del Despliegue de Aplicaciones
Contenedores y el Futuro del Despliegue de Aplicaciones
 
Cacique presentacion (español)
Cacique presentacion (español)Cacique presentacion (español)
Cacique presentacion (español)
 
Comenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWSComenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWS
 
Arquitectura Lambda
Arquitectura LambdaArquitectura Lambda
Arquitectura Lambda
 
Multicloud
MulticloudMulticloud
Multicloud
 
Introduccion a Apache Spark
Introduccion a Apache SparkIntroduccion a Apache Spark
Introduccion a Apache Spark
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Ejemplos de Proyectos de Ciencia de Datos y Big Data en el INEGI
Ejemplos de Proyectos de Ciencia de Datos y Big Data en el INEGIEjemplos de Proyectos de Ciencia de Datos y Big Data en el INEGI
Ejemplos de Proyectos de Ciencia de Datos y Big Data en el INEGI
 
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
 
2016 ULL Cabildo KEEDIO - KEEDIO DATA STACK
2016 ULL Cabildo KEEDIO - KEEDIO DATA STACK2016 ULL Cabildo KEEDIO - KEEDIO DATA STACK
2016 ULL Cabildo KEEDIO - KEEDIO DATA STACK
 

Más de Javier Santos Paniego

Más de Javier Santos Paniego (6)

Codemotion akka persistence, cqrs%2 fes y otras siglas del montón
Codemotion   akka persistence, cqrs%2 fes y otras siglas del montónCodemotion   akka persistence, cqrs%2 fes y otras siglas del montón
Codemotion akka persistence, cqrs%2 fes y otras siglas del montón
 
Codemotion akka voló sobre el nido del future
Codemotion   akka voló sobre el nido del futureCodemotion   akka voló sobre el nido del future
Codemotion akka voló sobre el nido del future
 
Introduction to spark
Introduction to sparkIntroduction to spark
Introduction to spark
 
Distributed computing with spark
Distributed computing with sparkDistributed computing with spark
Distributed computing with spark
 
Scala for dummies
Scala for dummiesScala for dummies
Scala for dummies
 
Codemotion 2014 Scala @real life
Codemotion 2014 Scala @real lifeCodemotion 2014 Scala @real life
Codemotion 2014 Scala @real life
 

Último

TRABAJO FINAL HIDRÁULICA 2 Universidad Central.pptx
TRABAJO FINAL HIDRÁULICA 2 Universidad Central.pptxTRABAJO FINAL HIDRÁULICA 2 Universidad Central.pptx
TRABAJO FINAL HIDRÁULICA 2 Universidad Central.pptxBrayanTats
 
Evaluacioìn 2estadistica (1).pdf
Evaluacioìn 2estadistica (1).pdfEvaluacioìn 2estadistica (1).pdf
Evaluacioìn 2estadistica (1).pdfmatepura
 
Examen_ Práctica Colaborativa 04 - Dinámica (2024-0).pdf
Examen_ Práctica Colaborativa 04 - Dinámica (2024-0).pdfExamen_ Práctica Colaborativa 04 - Dinámica (2024-0).pdf
Examen_ Práctica Colaborativa 04 - Dinámica (2024-0).pdfMatematicaFisicaEsta
 
Políticas OSC 7_Consolidado............pdf
Políticas OSC 7_Consolidado............pdfPolíticas OSC 7_Consolidado............pdf
Políticas OSC 7_Consolidado............pdfCristianPantojaCampa
 
Guia-de-Investigacion-en-Ingenieria-Civil.pdf
Guia-de-Investigacion-en-Ingenieria-Civil.pdfGuia-de-Investigacion-en-Ingenieria-Civil.pdf
Guia-de-Investigacion-en-Ingenieria-Civil.pdfssusere837ac
 
Evaluación 2probabilidad y estadistica periodo enero marzo.doc
Evaluación 2probabilidad y estadistica periodo enero marzo.docEvaluación 2probabilidad y estadistica periodo enero marzo.doc
Evaluación 2probabilidad y estadistica periodo enero marzo.docMatematicaFisicaEsta
 
CRITERIOS DE DISEÑO Y CALCULO PARA INSTALACION HIDRAULICA DOMICILIAR
CRITERIOS DE DISEÑO Y CALCULO PARA INSTALACION HIDRAULICA DOMICILIARCRITERIOS DE DISEÑO Y CALCULO PARA INSTALACION HIDRAULICA DOMICILIAR
CRITERIOS DE DISEÑO Y CALCULO PARA INSTALACION HIDRAULICA DOMICILIARCLAUDIAYANNETHROSALE
 
HOMEWORK 11 - HORNO DE ARCO ELECTRICO.pdf
HOMEWORK 11 - HORNO DE ARCO ELECTRICO.pdfHOMEWORK 11 - HORNO DE ARCO ELECTRICO.pdf
HOMEWORK 11 - HORNO DE ARCO ELECTRICO.pdfJULIODELPIERODIAZRUI
 
S2U1 ACTIVIDAD 2 CUADRO SINOPTICO, C. ADMINISTRATIVA Y C. FINANCIERA
S2U1 ACTIVIDAD 2 CUADRO SINOPTICO, C. ADMINISTRATIVA Y C. FINANCIERAS2U1 ACTIVIDAD 2 CUADRO SINOPTICO, C. ADMINISTRATIVA Y C. FINANCIERA
S2U1 ACTIVIDAD 2 CUADRO SINOPTICO, C. ADMINISTRATIVA Y C. FINANCIERAAlondraGuadalupeOliv3
 
modelo de trabajo practico tarea de ingeniería
modelo de trabajo practico tarea de ingenieríamodelo de trabajo practico tarea de ingeniería
modelo de trabajo practico tarea de ingenieríaleonjgo1453
 
Presentacióndel curso de Cálculo diferencial
Presentacióndel curso de  Cálculo diferencialPresentacióndel curso de  Cálculo diferencial
Presentacióndel curso de Cálculo diferencialProfe Mate
 
Aplicaciones del UHPC en la industria de los prefabricados de hormigón. ANDEC...
Aplicaciones del UHPC en la industria de los prefabricados de hormigón. ANDEC...Aplicaciones del UHPC en la industria de los prefabricados de hormigón. ANDEC...
Aplicaciones del UHPC en la industria de los prefabricados de hormigón. ANDEC...ANDECE
 

Último (20)

TRABAJO FINAL HIDRÁULICA 2 Universidad Central.pptx
TRABAJO FINAL HIDRÁULICA 2 Universidad Central.pptxTRABAJO FINAL HIDRÁULICA 2 Universidad Central.pptx
TRABAJO FINAL HIDRÁULICA 2 Universidad Central.pptx
 
Practica_14.pdf
Practica_14.pdfPractica_14.pdf
Practica_14.pdf
 
Evaluacioìn 2estadistica (1).pdf
Evaluacioìn 2estadistica (1).pdfEvaluacioìn 2estadistica (1).pdf
Evaluacioìn 2estadistica (1).pdf
 
EP 2_NIV 2024.docx
EP 2_NIV 2024.docxEP 2_NIV 2024.docx
EP 2_NIV 2024.docx
 
Examen_ Práctica Colaborativa 04 - Dinámica (2024-0).pdf
Examen_ Práctica Colaborativa 04 - Dinámica (2024-0).pdfExamen_ Práctica Colaborativa 04 - Dinámica (2024-0).pdf
Examen_ Práctica Colaborativa 04 - Dinámica (2024-0).pdf
 
EVALUACION II.pdf
EVALUACION II.pdfEVALUACION II.pdf
EVALUACION II.pdf
 
EVALUACION PARCIAL II.pdf
EVALUACION PARCIAL II.pdfEVALUACION PARCIAL II.pdf
EVALUACION PARCIAL II.pdf
 
Políticas OSC 7_Consolidado............pdf
Políticas OSC 7_Consolidado............pdfPolíticas OSC 7_Consolidado............pdf
Políticas OSC 7_Consolidado............pdf
 
Guia-de-Investigacion-en-Ingenieria-Civil.pdf
Guia-de-Investigacion-en-Ingenieria-Civil.pdfGuia-de-Investigacion-en-Ingenieria-Civil.pdf
Guia-de-Investigacion-en-Ingenieria-Civil.pdf
 
Evaluación 2probabilidad y estadistica periodo enero marzo.doc
Evaluación 2probabilidad y estadistica periodo enero marzo.docEvaluación 2probabilidad y estadistica periodo enero marzo.doc
Evaluación 2probabilidad y estadistica periodo enero marzo.doc
 
CRITERIOS DE DISEÑO Y CALCULO PARA INSTALACION HIDRAULICA DOMICILIAR
CRITERIOS DE DISEÑO Y CALCULO PARA INSTALACION HIDRAULICA DOMICILIARCRITERIOS DE DISEÑO Y CALCULO PARA INSTALACION HIDRAULICA DOMICILIAR
CRITERIOS DE DISEÑO Y CALCULO PARA INSTALACION HIDRAULICA DOMICILIAR
 
DISTANCIAMIENTOS -norma, arquitectura chilena-
DISTANCIAMIENTOS -norma, arquitectura chilena-DISTANCIAMIENTOS -norma, arquitectura chilena-
DISTANCIAMIENTOS -norma, arquitectura chilena-
 
EP - 01.pdf
EP - 01.pdfEP - 01.pdf
EP - 01.pdf
 
HOMEWORK 11 - HORNO DE ARCO ELECTRICO.pdf
HOMEWORK 11 - HORNO DE ARCO ELECTRICO.pdfHOMEWORK 11 - HORNO DE ARCO ELECTRICO.pdf
HOMEWORK 11 - HORNO DE ARCO ELECTRICO.pdf
 
S2U1 ACTIVIDAD 2 CUADRO SINOPTICO, C. ADMINISTRATIVA Y C. FINANCIERA
S2U1 ACTIVIDAD 2 CUADRO SINOPTICO, C. ADMINISTRATIVA Y C. FINANCIERAS2U1 ACTIVIDAD 2 CUADRO SINOPTICO, C. ADMINISTRATIVA Y C. FINANCIERA
S2U1 ACTIVIDAD 2 CUADRO SINOPTICO, C. ADMINISTRATIVA Y C. FINANCIERA
 
modelo de trabajo practico tarea de ingeniería
modelo de trabajo practico tarea de ingenieríamodelo de trabajo practico tarea de ingeniería
modelo de trabajo practico tarea de ingeniería
 
Dina202400-TF.pdf
Dina202400-TF.pdfDina202400-TF.pdf
Dina202400-TF.pdf
 
Presentacióndel curso de Cálculo diferencial
Presentacióndel curso de  Cálculo diferencialPresentacióndel curso de  Cálculo diferencial
Presentacióndel curso de Cálculo diferencial
 
Aplicaciones del UHPC en la industria de los prefabricados de hormigón. ANDEC...
Aplicaciones del UHPC en la industria de los prefabricados de hormigón. ANDEC...Aplicaciones del UHPC en la industria de los prefabricados de hormigón. ANDEC...
Aplicaciones del UHPC en la industria de los prefabricados de hormigón. ANDEC...
 
1ra PRACTICA Est-Niv.pdf
1ra PRACTICA Est-Niv.pdf1ra PRACTICA Est-Niv.pdf
1ra PRACTICA Est-Niv.pdf
 

Scala @ Real life

  • 1. Scala Programming @ Madrid Scala @ Real Life Madrid Junio 2014
  • 2. Scala Programming @ Madrid ¿Quiénes somos? • Javier Santos – Ing. Téc. Informática – Máster en Sist. Telemáticos. • David Vallejo – Ing. Téc. Informática – Ing. Telecomunicaciones.
  • 3. Scala Programming @ Madrid ¿Qué contamos? • Experiencia personal (Scala + allá de los tutoriales) – Trayectoria con Scala • Habla Computing • Tecsisa – ¿Cloud? ¿BigData? – Arquitectura, subsistemas – Herramientas de desarrollo – Conclusiones
  • 4. Scala Programming @ Madrid ¿Qué es ? • Características – Lenguaje funcional – Orientado a objetos – Herencia múltiple – Tipado estático – Notación infija – Funciones de orden superior – Opera con la JVM • Documentación, comunidad, foros, cursos, …
  • 6. Scala Programming @ Madrid Trayectoria con Scala • Habla Computing – Speech (DSL embebido en Scala) • Arquitectura – SBT sin documentación (Integración continua) – Sist. Reactivo (Monádico,Sin Akka) – Serialización, Persistencia, actualización de entidades … ¡Home made! • Aplicaciones – Evolución constante del lenguaje = refactorización de apps constante. – Pintxapp, BigBrothapp, Twitter, Trac, …
  • 8. Scala Programming @ Madrid Trayectoria con Scala • Tecsisa – Sistemas orientados a la nube – Problemas de big data – Sistema «T» para operadoras móviles. – Motivación: • Importación de tarifas móviles públicas • Cálculo de precios con distintas tarifas • Facturación
  • 9. Scala Programming @ Madrid ¿Qué es el Cloud Computing? • Tendencia de on-Prem software a SaaS. • Consumo en base al uso • Escalabilidad. • Transparente al usuario. • Distribuido • Tendencia a que la aplicación cliente sea el browser
  • 10. Scala Programming @ Madrid ¿Y el Big Data? • Sistemas que manejan grandes volumenes de datos • De TBs a PBs • Principales problemas que aborda – Obtención – Búsquedas/Analyticis – Visualización • Ejemplos: Genética, Meteorología.
  • 11. Scala Programming @ Madrid Arquitectura general Canal de eventos API Ingestión Datos Calculador Persistencia Datos Maestros
  • 12. Scala Programming @ Madrid Canal de eventos: Apache Kafka Canal de eventos API Ingestión Datos Calculador Persistencia Datos Maestros
  • 13. Scala Programming @ Madrid Canal de eventos: Apache Kafka • No sigue estándares: AMQP, STOMP, … • Origen: Linkedin • Performance: 100-500k mensajes/segundo • Semántica operacional – Basado en journal/log. – Clusterizable. Brokers/particiones – Grupos de usuarios: lectura At-most-once.
  • 14. Scala Programming @ Madrid Canal de eventos: Wrapper Akka para Kafka • Cliente Java síncrono • Simular asíncronía mediante Comet technique: Long polling. • Idea: crear conectores para los subsistemas Akka de manera que se conecten al canal de eventos a través de mecanismos asíncronos.
  • 18. Scala Programming @ Madrid Subsistema – Calculador Canal de eventos API Ingestión Datos Calculador Persistencia Datos Maestros
  • 19. Scala Programming @ Madrid Subsistema – Calculador: Concepto Datos Datos Tarifas Llamadas Facturas
  • 20. Scala Programming @ Madrid Subsistema – Calculador: Apache Spark • MapReduce. • Dos funciones: – Distribución de datos – Analytics de los mismos • Mayor rapidez que Hadoop (no es necesario usar HDFS para los cálculos). Serialización en memoria • RDDs (Resilient Distributed DataSet’s) – Parallelize, fromCassandra – DSL Calliope (Cassandra) – Operaciones map, flatMap, reduce, … • Paralelizar cálculos: ¿Cómo? → Envío al worker node de la operación serializada
  • 21. Scala Programming @ Madrid Subsistema – Calculador: Apache Spark. Ejemplo
  • 23. Scala Programming @ Madrid Subsistema – Persistencia Canal de eventos API Ingestión Datos Calculador Persistencia Datos Maestros
  • 24. Scala Programming @ Madrid Subsistema – Persistencia: Concepto • Grandes volúmenes de datos • BBDD relacionales no escalan (Mantenimiento de integridad referencial). • BBDD NoSQL: Pocas tablas, gran volumen de registros • MongoDB, Cassandra.
  • 25. Scala Programming @ Madrid Subsistema – Persistencia: Wrapper Akka & cliente Datastax
  • 29. Scala Programming @ Madrid Subsistema – Ingestión de datos Canal de eventos API Ingestión Datos Calculador Persistencia Datos Maestros
  • 30. Scala Programming @ Madrid Subsistema – Ingestión de datos: Concepto Ingestión Datos Web Services FTP API (ManualUpload)
  • 31. Scala Programming @ Madrid Subsistema – Ingestión de datos: Integración con WS. ESB’s • Obtención de datos vía servicios web • Opción 1: Construir los XML's a mano y gestionar manualmente las peticiones HTTP. • Opción 2: Usar herramientas de integración para arquitecturas complejas. • ESBs (Enterprise Service Bus) - Orquestación, enrutamiento, ...(ServiceMix, Mule, Camel, ...) • Usamos: – Camel (rutas, endpoint, processors, ...) – Cxf: Framework OpenSource de servicios. Generación de clases java anotadas con JAXB.
  • 32. Scala Programming @ Madrid Subsistema – Ingestión de datos: Akka Camel
  • 33. Scala Programming @ Madrid Subsistema: API REST Canal de eventos API Ingestión Datos Calculador Persistencia Datos Maestros
  • 34. Scala Programming @ Madrid APIs REST con SPRAY • Comunicación con el exterior • Capas de integración. • Akka-HTTP • Módulos principales: – Spray-can – Spray-http – Spray-routing – Spray-json
  • 35. Scala Programming @ Madrid Funcionamiento interno de Spray Su arquitectura se basa en actores.
  • 36. Scala Programming @ Madrid Creando rutas con Spray
  • 37. Scala Programming @ Madrid Testeando que es gerundio Spray test-kit:
  • 38. Scala Programming @ Madrid Subsistema: Datos Maestros Canal de eventos API Ingestión Datos Calculador Persistencia Datos Maestros
  • 39. Scala Programming @ Madrid In-memory Data Grid Motivaciones: • Datos maestros comunes • Caché de una BD Solución: • Hazelcast
  • 40. Scala Programming @ Madrid ¿Qué es Hazelcast? • Estructuras en memoria distribuida • Cambios dinámicos • Open source • Clustering • Scalable • Map Stores
  • 41. Scala Programming @ Madrid Infraestructura OPENSTACK BOSH CLOUD FOUNDRY SCALA APP SERVICE
  • 43. Scala Programming @ Madrid Cloud Foundry • Open PaaS • Permite escalar apps facilmente. • SSO y OAUTH2 • Buildpack para Java • Despliegue de servicio: – Servicio – Broker
  • 44. Scala Programming @ Madrid Escalando los subsistemas Canal de eventos API Ingestión Datos Calculador Persistencia Datos Maestros APIAPIAPI x10 PersistenciaPersistenciaPersistencia x5
  • 45. Scala Programming @ Madrid Herramientas de desarrollo • «Dos» formas de desarrollar: – IDE’s : Eclipse (Scala IDE) , IntelliJ – Editor + SBT – Editor + Scalac (?!) • Integración continua: Jenkins • Subversion/ Git • Artifactory • Metodologías ágiles: Scrum
  • 46. Scala Programming @ Madrid Conclusiones
  • 47. Scala Programming @ Madrid Conclusiones: aprendizaje • Dos enfoques – Principiantes: sin experiencia extensa en lenguajes como C++ o Java. ¿Mayor facilidad para cambiar al «chip» funcional? – Gente del mundo Java: facilidad de adaptarse progresivamente (Uso de var’s, bucles while, …). • En cualquier caso: «A escribir se aprende leyendo» • Jugar y consultar la REPL siempre en caso de duda.
  • 48. Scala Programming @ Madrid Conclusiones: tecnologías • Tecnologías nuevas • Poca documentación • Comunidad escasa • Escalables y distribuidas • Posibilidad de clustering
  • 49. Scala Programming @ Madrid Conclusiones: ámbito laboral • Para la empresa: – Desarrolladores escasos – Dificultad para formar a otros desarrolladores – Miedo al cambio • Para los programadores: – Poca oferta nacional
  • 50. Scala Programming @ Madrid Futuro de Scala • En España: – Crece lentamente – Portings – Cloud • Fuera: – Crece – Crecerá más con Java 8?
  • 52. Scala Programming @ Madrid Experiencia personal
  • 54. Scala Programming @ Madrid Conferencias

Notas del editor

  1. Es necesario comunicar el sistema con el mundo exterior. Para ello se usan APIs Spray (futuro Akka-HTTP) permite construir capas de integración REST/HTTP. En un futuro cercano formará parte del módulo de Akka -> Akka-HTTP Módulos: c can: cliente y servidor HTTP http: cabeceras Http (GET; POST …) routing: Creación de rutas (path, PathPrefix). DSL json: marshaller y unmarshaller de json
  2. Es necesario comunicar el sistema con el mundo exterior. Para ello se usan APIs Spray (futuro Akka-HTTP) permite construir capas de integración REST/HTTP. En un futuro cercano formará parte del módulo de Akka -> Akka-HTTP Módulos: c can: cliente y servidor HTTP http: cabeceras Http (GET; POST …) routing: Creación de rutas (path, PathPrefix). DSL json: marshaller y unmarshaller de json
  3. PaaS: Platform as a Service. Un Open PaaS nos ofrece la posibilidad de elegir libremente el IaaS y los frameworks de desarrollo para ejecutar nuestra plataforma de White Rabbit.