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. 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 variablesGary Briceño
 
Aplicaciones Del Lenguaje Scala
Aplicaciones Del Lenguaje ScalaAplicaciones Del Lenguaje Scala
Aplicaciones Del Lenguaje Scalaguestbc5e8
 
Kanban principio de visualizacion
Kanban   principio de visualizacionKanban   principio de visualizacion
Kanban principio de visualizacionGary Briceño
 
Seguridad sql injection
Seguridad   sql injectionSeguridad   sql injection
Seguridad sql injectionGary Briceño
 
RDF Validation Future work and applications
RDF Validation Future work and applicationsRDF Validation Future work and applications
RDF Validation Future work and applicationsJose Emilio Labra Gayo
 
Arquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el ServidorArquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el ServidorJose Emilio Labra Gayo
 
Scala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentationScala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentationMartin Odersky
 

Destacado (20)

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

Similar a Scala @ Real life

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

Similar a Scala @ Real life (20)

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

Más de Javier Santos Paniego

Más de Javier Santos Paniego (6)

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

Último

produccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxproduccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxEtse9
 
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfReneBellido1
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCANDECE
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEANDECE
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfpaola110264
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfMirthaFernandez12
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.pptVitobailon
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)ssuser6958b11
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaANDECE
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfPPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfZamiertCruzSuyo
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones025ca20
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023ANDECE
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaSHERELYNSAMANTHAPALO1
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfAdelaHerrera9
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaANDECE
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
Parámetros de Perforación y Voladura. para Plataformas
Parámetros de  Perforación y Voladura. para PlataformasParámetros de  Perforación y Voladura. para Plataformas
Parámetros de Perforación y Voladura. para PlataformasSegundo Silva Maguiña
 

Último (20)

produccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxproduccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptx
 
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRC
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSE
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.ppt
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes Granada
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfPPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresa
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de Almería
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
Parámetros de Perforación y Voladura. para Plataformas
Parámetros de  Perforación y Voladura. para PlataformasParámetros de  Perforación y Voladura. para Plataformas
Parámetros de Perforación y Voladura. para Plataformas
 

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.