SlideShare una empresa de Scribd logo
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, …
Scala Programming @ Madrid
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
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
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.
Scala Programming @ Madrid
Arquitectura general
Canal de eventos
API
Ingestión
Datos
Calculador
Persistencia
Datos
Maestros
Scala Programming @ Madrid
Canal de eventos:
Apache Kafka
Canal de eventos
API
Ingestión
Datos
Calculador
Persistencia
Datos
Maestros
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.
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.
Scala Programming @ Madrid
Scala Programming @ Madrid
Scala Programming @ Madrid
Scala Programming @ Madrid
Subsistema – Calculador
Canal de eventos
API
Ingestión
Datos
Calculador
Persistencia
Datos
Maestros
Scala Programming @ Madrid
Subsistema – Calculador:
Concepto
Datos
Datos
Tarifas
Llamadas
Facturas
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
Scala Programming @ Madrid
Subsistema – Calculador:
Apache Spark. Ejemplo
Scala Programming @ Madrid
Scala Programming @ Madrid
Subsistema – Persistencia
Canal de eventos
API
Ingestión
Datos
Calculador
Persistencia
Datos
Maestros
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.
Scala Programming @ Madrid
Subsistema – Persistencia:
Wrapper Akka & cliente Datastax
Scala Programming @ Madrid
Scala Programming @ Madrid
Scala Programming @ Madrid
Scala Programming @ Madrid
Subsistema – Ingestión de datos
Canal de eventos
API
Ingestión
Datos
Calculador
Persistencia
Datos
Maestros
Scala Programming @ Madrid
Subsistema – Ingestión de datos:
Concepto
Ingestión
Datos
Web
Services
FTP
API
(ManualUpload)
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.
Scala Programming @ Madrid
Subsistema – Ingestión de datos:
Akka Camel
Scala Programming @ Madrid
Subsistema: API REST
Canal de eventos
API
Ingestión
Datos
Calculador
Persistencia
Datos
Maestros
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
Scala Programming @ Madrid
Funcionamiento interno de Spray
Su arquitectura se basa en actores.
Scala Programming @ Madrid
Creando rutas con Spray
Scala Programming @ Madrid
Testeando que es gerundio
Spray test-kit:
Scala Programming @ Madrid
Subsistema: Datos Maestros
Canal de eventos
API
Ingestión
Datos
Calculador
Persistencia
Datos
Maestros
Scala Programming @ Madrid
In-memory Data Grid
Motivaciones:
• Datos maestros comunes
• Caché de una BD
Solución:
• Hazelcast
Scala Programming @ Madrid
¿Qué es Hazelcast?
• Estructuras en memoria distribuida
• Cambios dinámicos
• Open source
• Clustering
• Scalable
• Map Stores
Scala Programming @ Madrid
Infraestructura
OPENSTACK
BOSH
CLOUD FOUNDRY
SCALA APP
SERVICE
Scala Programming @ Madrid
Scala Programming @ Madrid
Cloud Foundry
• Open PaaS
• Permite escalar apps facilmente.
• SSO y OAUTH2
• Buildpack para Java
• Despliegue de servicio:
– Servicio
– Broker
Scala Programming @ Madrid
Escalando los subsistemas
Canal de eventos
API
Ingestión
Datos
Calculador
Persistencia
Datos
Maestros
APIAPIAPI
x10
PersistenciaPersistenciaPersistencia
x5
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
Scala Programming @ Madrid
Conclusiones
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.
Scala Programming @ Madrid
Conclusiones: tecnologías
• Tecnologías nuevas
• Poca documentación
• Comunidad escasa
• Escalables y distribuidas
• Posibilidad de clustering
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
Scala Programming @ Madrid
Futuro de Scala
• En España:
– Crece lentamente
– Portings
– Cloud
• Fuera:
– Crece
– Crecerá más con Java 8?
Scala Programming @ Madrid
Scala Programming @ Madrid
Experiencia personal
Scala Programming @ Madrid
Scala Programming @ Madrid
Conferencias
Scala Programming @ Madrid
Scala Programming @ Madrid
Scala Programming @ Madrid

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 variables
Gary Briceño
 
Desarrollo Web con Scala
Desarrollo Web con ScalaDesarrollo Web con Scala
Desarrollo Web con Scala
Julio Carlos Sanchez Ortega
 
Aplicaciones Del Lenguaje Scala
Aplicaciones Del Lenguaje ScalaAplicaciones Del Lenguaje Scala
Aplicaciones Del Lenguaje Scalaguestbc5e8
 
Scala desde c# y JavaScript
Scala desde c# y JavaScriptScala desde c# y JavaScript
Scala desde c# y JavaScript
Roberto Luis Bisbé
 
Kanban principio de visualizacion
Kanban   principio de visualizacionKanban   principio de visualizacion
Kanban principio de visualizacion
Gary Briceño
 
Introducción a scala
Introducción a scalaIntroducción a scala
Introducción a scala
Paradigma Digital
 
Scala @ Real Life Codemotion 2014
Scala @ Real Life Codemotion 2014Scala @ Real Life Codemotion 2014
Scala @ Real Life Codemotion 2014
David Vallejo Navarro
 
Seguridad sql injection
Seguridad   sql injectionSeguridad   sql injection
Seguridad sql injection
Gary Briceño
 
4 Introducción al lenguaje Scala
4 Introducción al lenguaje Scala4 Introducción al lenguaje Scala
4 Introducción al lenguaje Scala
Jose Emilio Labra Gayo
 
Scala Overview
Scala OverviewScala Overview
Scala Overview
Miguel Pastor
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
Jose Emilio Labra Gayo
 
RDF Validation Future work and applications
RDF Validation Future work and applicationsRDF Validation Future work and applications
RDF Validation Future work and applications
Jose Emilio Labra Gayo
 
Apache spark meetup
Apache spark meetupApache spark meetup
Apache spark meetup
Israel Gaytan
 
RDF validation tutorial
RDF validation tutorialRDF validation tutorial
RDF validation tutorial
Jose Emilio Labra Gayo
 
ShEx vs SHACL
ShEx vs SHACLShEx vs SHACL
ShEx vs SHACL
Jose Emilio Labra Gayo
 
SHACL by example
SHACL by exampleSHACL by example
SHACL by example
Jose 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 Servidor
Jose Emilio Labra Gayo
 
Spark Hands-on
Spark Hands-onSpark Hands-on
Spark Hands-on
Gaspar Muñoz Soria
 
Scala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentationScala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentation
Martin 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 TI
Manolo Crespo
 
Tecnicas Big Data: Meetup Cassandra
Tecnicas Big Data: Meetup CassandraTecnicas Big Data: Meetup Cassandra
Tecnicas Big Data: Meetup Cassandra
Stratebi
 
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
José 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 Casado
Big 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 Learning
Rafa Hidalgo
 
Microservicios con ASP.NET Core
Microservicios con ASP.NET CoreMicroservicios con ASP.NET Core
Microservicios con ASP.NET Core
Eduardo 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 Cassandra
Francisco Javier Pulido Piñero
 
Data Platform de BEEVA
Data Platform de BEEVAData Platform de BEEVA
Data Platform de BEEVA
BEEVA_es
 
Comenzando con Arquitecturas sin servidores
Comenzando con Arquitecturas sin servidoresComenzando con Arquitecturas sin servidores
Comenzando con Arquitecturas sin servidores
Amazon Web Services LATAM
 
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
Bitnami
 
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 AWS
Amazon Web Services LATAM
 
Arquitectura Lambda
Arquitectura LambdaArquitectura Lambda
Arquitectura Lambda
Israel Gaytan
 
Introduccion a Apache Spark
Introduccion a Apache SparkIntroduccion a Apache Spark
Introduccion a Apache Spark
Gustavo Arjones
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
Rodolfo Finochietti
 
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
Abel 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 Camel
Domingo 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 STACK
KEEDIO
 

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

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
Javier Santos Paniego
 
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
Javier Santos Paniego
 
Introduction to spark
Introduction to sparkIntroduction to spark
Introduction to spark
Javier Santos Paniego
 
Distributed computing with spark
Distributed computing with sparkDistributed computing with spark
Distributed computing with spark
Javier Santos Paniego
 
Scala for dummies
Scala for dummiesScala for dummies
Scala for dummies
Javier Santos Paniego
 
Codemotion 2014 Scala @real life
Codemotion 2014 Scala @real lifeCodemotion 2014 Scala @real life
Codemotion 2014 Scala @real life
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

CENTROIDES DE ÁREAS Y LÍNEAS_SISTEMAS ESTRUCTURALES III.pptx
CENTROIDES DE ÁREAS Y LÍNEAS_SISTEMAS ESTRUCTURALES III.pptxCENTROIDES DE ÁREAS Y LÍNEAS_SISTEMAS ESTRUCTURALES III.pptx
CENTROIDES DE ÁREAS Y LÍNEAS_SISTEMAS ESTRUCTURALES III.pptx
SoyJulia1
 
choro ciclo de vida anatomía y fisiología
choro ciclo de vida anatomía y fisiologíachoro ciclo de vida anatomía y fisiología
choro ciclo de vida anatomía y fisiología
elvis2000x
 
Becas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdfBecas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdf
UOC Estudios de Informática, Multimedia y Telecomunicación
 
FISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdfFISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdf
JavierAlejosM
 
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
JhonatanOQuionesChoq
 
Infografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdfInfografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdf
DanielMelndez19
 
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).docEjercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
LuisEnriqueCarboneDe
 
INFORME DE DE CONTROL N° 009-2024-OCI5344-SCC LEBERTADOR SAN MARTIN OYON.pdf
INFORME DE DE CONTROL N° 009-2024-OCI5344-SCC LEBERTADOR SAN MARTIN OYON.pdfINFORME DE DE CONTROL N° 009-2024-OCI5344-SCC LEBERTADOR SAN MARTIN OYON.pdf
INFORME DE DE CONTROL N° 009-2024-OCI5344-SCC LEBERTADOR SAN MARTIN OYON.pdf
GROVER MORENO
 
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docxPLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
Victor Manuel Rivera Guevara
 
164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas
jcbarriopedro69
 
1º Caso Practico Lubricacion Rodamiento Motor 10CV
1º Caso Practico Lubricacion Rodamiento Motor 10CV1º Caso Practico Lubricacion Rodamiento Motor 10CV
1º Caso Practico Lubricacion Rodamiento Motor 10CV
CarlosAroeira1
 
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdfPLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
MariaCortezRuiz
 
Mapa de carreteras de Colombia 2022 INVIAS
Mapa de carreteras de Colombia 2022 INVIASMapa de carreteras de Colombia 2022 INVIAS
Mapa de carreteras de Colombia 2022 INVIAS
AlfonsoRosalesFonsec
 
Material magnetismo.pdf material del electromagnetismo con fórmulas
Material magnetismo.pdf material del electromagnetismo con fórmulasMaterial magnetismo.pdf material del electromagnetismo con fórmulas
Material magnetismo.pdf material del electromagnetismo con fórmulas
michiotes33
 
PLAN DE EMERGENCIAS Y EVACUACION 2024.pdf
PLAN DE EMERGENCIAS Y EVACUACION 2024.pdfPLAN DE EMERGENCIAS Y EVACUACION 2024.pdf
PLAN DE EMERGENCIAS Y EVACUACION 2024.pdf
Daniel Jose Sierra Garcia
 
Análisis de Sensibilidad clases de investigacion de operaciones
Análisis de Sensibilidad clases de investigacion de operacionesAnálisis de Sensibilidad clases de investigacion de operaciones
Análisis de Sensibilidad clases de investigacion de operaciones
SamuelHuapalla
 
Distribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de MediasDistribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de Medias
arielemelec005
 
Dialnet-EnsenanzaDeLaModelacionMedianteEcuacionesDiferenci-9304821.pdf
Dialnet-EnsenanzaDeLaModelacionMedianteEcuacionesDiferenci-9304821.pdfDialnet-EnsenanzaDeLaModelacionMedianteEcuacionesDiferenci-9304821.pdf
Dialnet-EnsenanzaDeLaModelacionMedianteEcuacionesDiferenci-9304821.pdf
fernanroq11702
 
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdfHITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
GROVER MORENO
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
MaraManuelaUrribarri
 

Último (20)

CENTROIDES DE ÁREAS Y LÍNEAS_SISTEMAS ESTRUCTURALES III.pptx
CENTROIDES DE ÁREAS Y LÍNEAS_SISTEMAS ESTRUCTURALES III.pptxCENTROIDES DE ÁREAS Y LÍNEAS_SISTEMAS ESTRUCTURALES III.pptx
CENTROIDES DE ÁREAS Y LÍNEAS_SISTEMAS ESTRUCTURALES III.pptx
 
choro ciclo de vida anatomía y fisiología
choro ciclo de vida anatomía y fisiologíachoro ciclo de vida anatomía y fisiología
choro ciclo de vida anatomía y fisiología
 
Becas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdfBecas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdf
 
FISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdfFISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdf
 
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
 
Infografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdfInfografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdf
 
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).docEjercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
 
INFORME DE DE CONTROL N° 009-2024-OCI5344-SCC LEBERTADOR SAN MARTIN OYON.pdf
INFORME DE DE CONTROL N° 009-2024-OCI5344-SCC LEBERTADOR SAN MARTIN OYON.pdfINFORME DE DE CONTROL N° 009-2024-OCI5344-SCC LEBERTADOR SAN MARTIN OYON.pdf
INFORME DE DE CONTROL N° 009-2024-OCI5344-SCC LEBERTADOR SAN MARTIN OYON.pdf
 
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docxPLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
PLANIFICACION INDUSTRIAL ( Gantt-Pert-CPM ).docx
 
164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas
 
1º Caso Practico Lubricacion Rodamiento Motor 10CV
1º Caso Practico Lubricacion Rodamiento Motor 10CV1º Caso Practico Lubricacion Rodamiento Motor 10CV
1º Caso Practico Lubricacion Rodamiento Motor 10CV
 
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdfPLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
 
Mapa de carreteras de Colombia 2022 INVIAS
Mapa de carreteras de Colombia 2022 INVIASMapa de carreteras de Colombia 2022 INVIAS
Mapa de carreteras de Colombia 2022 INVIAS
 
Material magnetismo.pdf material del electromagnetismo con fórmulas
Material magnetismo.pdf material del electromagnetismo con fórmulasMaterial magnetismo.pdf material del electromagnetismo con fórmulas
Material magnetismo.pdf material del electromagnetismo con fórmulas
 
PLAN DE EMERGENCIAS Y EVACUACION 2024.pdf
PLAN DE EMERGENCIAS Y EVACUACION 2024.pdfPLAN DE EMERGENCIAS Y EVACUACION 2024.pdf
PLAN DE EMERGENCIAS Y EVACUACION 2024.pdf
 
Análisis de Sensibilidad clases de investigacion de operaciones
Análisis de Sensibilidad clases de investigacion de operacionesAnálisis de Sensibilidad clases de investigacion de operaciones
Análisis de Sensibilidad clases de investigacion de operaciones
 
Distribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de MediasDistribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de Medias
 
Dialnet-EnsenanzaDeLaModelacionMedianteEcuacionesDiferenci-9304821.pdf
Dialnet-EnsenanzaDeLaModelacionMedianteEcuacionesDiferenci-9304821.pdfDialnet-EnsenanzaDeLaModelacionMedianteEcuacionesDiferenci-9304821.pdf
Dialnet-EnsenanzaDeLaModelacionMedianteEcuacionesDiferenci-9304821.pdf
 
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdfHITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
 

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.