SlideShare ist ein Scribd-Unternehmen logo
1 von 57
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

Weitere ähnliche Inhalte

Andere mochten auch

Aplicaciones Del Lenguaje Scala
Aplicaciones Del Lenguaje ScalaAplicaciones Del Lenguaje Scala
Aplicaciones Del Lenguaje Scala
guestbc5e8
 

Andere mochten auch (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
 

Ähnlich wie Scala @ Real life

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
 

Ähnlich wie 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
 

Mehr von Javier Santos Paniego

Mehr von 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
 

Kürzlich hochgeladen

S01.s1 - Clasificación de las Industrias.pdf
S01.s1 - Clasificación de las Industrias.pdfS01.s1 - Clasificación de las Industrias.pdf
S01.s1 - Clasificación de las Industrias.pdf
SalomeRunco
 
Tipos de suelo y su clasificación y ejemplos
Tipos de suelo y su clasificación y ejemplosTipos de suelo y su clasificación y ejemplos
Tipos de suelo y su clasificación y ejemplos
andersonsubero28
 

Kürzlich hochgeladen (20)

Balance materia y energia procesos de Secado
Balance materia y energia procesos de SecadoBalance materia y energia procesos de Secado
Balance materia y energia procesos de Secado
 
Trabajos Preliminares en Obras de Construcción..pdf
Trabajos Preliminares en Obras de Construcción..pdfTrabajos Preliminares en Obras de Construcción..pdf
Trabajos Preliminares en Obras de Construcción..pdf
 
422382393-Curso-de-Tableros-Electricos.pptx
422382393-Curso-de-Tableros-Electricos.pptx422382393-Curso-de-Tableros-Electricos.pptx
422382393-Curso-de-Tableros-Electricos.pptx
 
libro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operacioneslibro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operaciones
 
Mantenimiento-de-Transformadores-Monofasicos[1].pptx
Mantenimiento-de-Transformadores-Monofasicos[1].pptxMantenimiento-de-Transformadores-Monofasicos[1].pptx
Mantenimiento-de-Transformadores-Monofasicos[1].pptx
 
entropia y neguentropia en la teoria general de sistemas
entropia y neguentropia en la teoria general de sistemasentropia y neguentropia en la teoria general de sistemas
entropia y neguentropia en la teoria general de sistemas
 
metodos de fitomejoramiento en la aolicacion de plantas
metodos de fitomejoramiento en la aolicacion de plantasmetodos de fitomejoramiento en la aolicacion de plantas
metodos de fitomejoramiento en la aolicacion de plantas
 
S01.s1 - Clasificación de las Industrias.pdf
S01.s1 - Clasificación de las Industrias.pdfS01.s1 - Clasificación de las Industrias.pdf
S01.s1 - Clasificación de las Industrias.pdf
 
Manual deresolucion de ecuaciones por fracciones parciales.pdf
Manual deresolucion de ecuaciones por fracciones parciales.pdfManual deresolucion de ecuaciones por fracciones parciales.pdf
Manual deresolucion de ecuaciones por fracciones parciales.pdf
 
G4 - CASO DE ESTUDIO - VOLUMEN DE UN RESERVORIO (1).pptx
G4 - CASO DE ESTUDIO - VOLUMEN DE UN RESERVORIO (1).pptxG4 - CASO DE ESTUDIO - VOLUMEN DE UN RESERVORIO (1).pptx
G4 - CASO DE ESTUDIO - VOLUMEN DE UN RESERVORIO (1).pptx
 
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptTippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
 
Tipos de suelo y su clasificación y ejemplos
Tipos de suelo y su clasificación y ejemplosTipos de suelo y su clasificación y ejemplos
Tipos de suelo y su clasificación y ejemplos
 
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptxEFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
 
ARMADURAS METODO NODOS.pptx......................
ARMADURAS METODO NODOS.pptx......................ARMADURAS METODO NODOS.pptx......................
ARMADURAS METODO NODOS.pptx......................
 
Video sustentación GA2- 240201528-AA3-EV01.pptx
Video sustentación GA2- 240201528-AA3-EV01.pptxVideo sustentación GA2- 240201528-AA3-EV01.pptx
Video sustentación GA2- 240201528-AA3-EV01.pptx
 
Auditoría de Sistemas de Gestión
Auditoría    de   Sistemas     de GestiónAuditoría    de   Sistemas     de Gestión
Auditoría de Sistemas de Gestión
 
NTC 3883 análisis sensorial. metodología. prueba duo-trio.pdf
NTC 3883 análisis sensorial. metodología. prueba duo-trio.pdfNTC 3883 análisis sensorial. metodología. prueba duo-trio.pdf
NTC 3883 análisis sensorial. metodología. prueba duo-trio.pdf
 
Sistema de alumbrado.pptx fjhhgghrhgghhuughuh
Sistema de alumbrado.pptx fjhhgghrhgghhuughuhSistema de alumbrado.pptx fjhhgghrhgghhuughuh
Sistema de alumbrado.pptx fjhhgghrhgghhuughuh
 
GUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdf
GUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdfGUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdf
GUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdf
 
8 2024A CONDUCCION DE CALOR EN REGIMEN TRANSITORIO.pptx
8 2024A CONDUCCION DE CALOR EN REGIMEN TRANSITORIO.pptx8 2024A CONDUCCION DE CALOR EN REGIMEN TRANSITORIO.pptx
8 2024A CONDUCCION DE CALOR EN REGIMEN TRANSITORIO.pptx
 

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

Hinweis der Redaktion

  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.