SlideShare una empresa de Scribd logo
1 de 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. Telecomunicación.
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 volúmenes de
datos
• De TBs a PBs
• Principales problemas que aborda
– Obtención
– Búsquedas/Analytics
– 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 asincroní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 fácilmente.
• 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
• Tres 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

Similar a Scala@real life

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
 
Comenzando con Arquitecturas sin servidores
Comenzando con Arquitecturas sin servidoresComenzando con Arquitecturas sin servidores
Comenzando con Arquitecturas sin servidores
 
Cacique presentacion (español)
Cacique presentacion (español)Cacique presentacion (español)
Cacique presentacion (español)
 
Data Platform de BEEVA
Data Platform de BEEVAData Platform de BEEVA
Data Platform de BEEVA
 
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
 
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
 
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
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Introduccion a Apache Spark
Introduccion a Apache SparkIntroduccion a Apache Spark
Introduccion a Apache Spark
 
Multicloud
MulticloudMulticloud
Multicloud
 
Comenzando con Arquitecturas sin servidores
Comenzando con Arquitecturas sin servidoresComenzando con Arquitecturas sin servidores
Comenzando con Arquitecturas sin servidores
 
Construyedo Aplicaciones Serverless
Construyedo Aplicaciones ServerlessConstruyedo Aplicaciones Serverless
Construyedo Aplicaciones Serverless
 

Último

tesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa mariatesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa maria
susafy7
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
bcondort
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
evercoyla
 

Último (20)

ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
 
Desigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfDesigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdf
 
Determinación de espacios en la instalación
Determinación de espacios en la instalaciónDeterminación de espacios en la instalación
Determinación de espacios en la instalación
 
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosFicha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
 
Sistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internaSistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión interna
 
tesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa mariatesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa maria
 
Presentacion de la ganaderia en la región
Presentacion de la ganaderia en la regiónPresentacion de la ganaderia en la región
Presentacion de la ganaderia en la región
 
Trazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptxTrazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptx
 
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJODIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
 
Tabla de referentes empíricos para tesis-1.docx
Tabla de referentes empíricos para tesis-1.docxTabla de referentes empíricos para tesis-1.docx
Tabla de referentes empíricos para tesis-1.docx
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
Control estadistico de procesos Primera parte.pdf
Control estadistico de procesos Primera parte.pdfControl estadistico de procesos Primera parte.pdf
Control estadistico de procesos Primera parte.pdf
 
Sistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptxSistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptx
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
 
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
 
Presentación Instrumentos de Medicion Electricos.pptx
Presentación Instrumentos de Medicion Electricos.pptxPresentación Instrumentos de Medicion Electricos.pptx
Presentación Instrumentos de Medicion Electricos.pptx
 
ingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptx
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___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. Telecomunicación.
  • 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 volúmenes de datos • De TBs a PBs • Principales problemas que aborda – Obtención – Búsquedas/Analytics – 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 asincroní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 fácilmente. • 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 • Tres 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.