Download - Scala @ Real life
![Page 1: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/1.jpg)
Scala Programming @ Madrid
Scala @ Real Life
Madrid
Junio 2014
![Page 2: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/2.jpg)
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.
![Page 3: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/3.jpg)
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
![Page 4: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/4.jpg)
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, …
![Page 5: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/5.jpg)
Scala Programming @ Madrid
![Page 6: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/6.jpg)
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, …
![Page 7: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/7.jpg)
Scala Programming @ Madrid
![Page 8: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/8.jpg)
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
![Page 9: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/9.jpg)
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
![Page 10: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/10.jpg)
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.
![Page 11: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/11.jpg)
Scala Programming @ Madrid
Arquitectura general
Canal de eventos
API
IngestiónDatos
Calculador
Persistencia
DatosMaestros
![Page 12: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/12.jpg)
Scala Programming @ Madrid
Canal de eventos: Apache Kafka
Canal de eventos
API
IngestiónDatos
Calculador
Persistencia
DatosMaestros
![Page 13: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/13.jpg)
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.
![Page 14: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/14.jpg)
Scala Programming @ Madrid
Canal de eventos: Wrapper Akka para Kafka
• Cliente Java síncrono
• Simular asíncronía mediante Comettechnique: 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.
![Page 15: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/15.jpg)
Scala Programming @ Madrid
![Page 16: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/16.jpg)
Scala Programming @ Madrid
![Page 17: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/17.jpg)
Scala Programming @ Madrid
![Page 18: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/18.jpg)
Scala Programming @ Madrid
Subsistema – Calculador
Canal de eventos
API
IngestiónDatos
Calculador
Persistencia
DatosMaestros
![Page 19: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/19.jpg)
Scala Programming @ Madrid
Subsistema – Calculador:Concepto
Datos
Datos
Tarifas
Llamadas
Facturas
![Page 20: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/20.jpg)
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
![Page 21: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/21.jpg)
Scala Programming @ Madrid
Subsistema – Calculador:Apache Spark. Ejemplo
![Page 22: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/22.jpg)
Scala Programming @ Madrid
![Page 23: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/23.jpg)
Scala Programming @ Madrid
Subsistema – Persistencia
Canal de eventos
API
IngestiónDatos
Calculador
Persistencia
DatosMaestros
![Page 24: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/24.jpg)
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.
![Page 25: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/25.jpg)
Scala Programming @ Madrid
Subsistema – Persistencia:Wrapper Akka & cliente Datastax
![Page 26: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/26.jpg)
Scala Programming @ Madrid
![Page 27: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/27.jpg)
Scala Programming @ Madrid
![Page 28: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/28.jpg)
Scala Programming @ Madrid
![Page 29: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/29.jpg)
Scala Programming @ Madrid
Subsistema – Ingestión de datos
Canal de eventos
API
IngestiónDatos
Calculador
Persistencia
DatosMaestros
![Page 30: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/30.jpg)
Scala Programming @ Madrid
Subsistema – Ingestión de datos:Concepto
IngestiónDatos
WebServices
FTPAPI
(ManualUpload)
![Page 31: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/31.jpg)
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.
![Page 32: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/32.jpg)
Scala Programming @ Madrid
Subsistema – Ingestión de datos:Akka Camel
![Page 33: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/33.jpg)
Scala Programming @ Madrid
Subsistema: API REST
Canal de eventos
API
IngestiónDatos
Calculador
Persistencia
DatosMaestros
![Page 34: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/34.jpg)
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
![Page 35: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/35.jpg)
Scala Programming @ Madrid
Funcionamiento interno de Spray
Su arquitectura se basa en actores.
![Page 36: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/36.jpg)
Scala Programming @ Madrid
Creando rutas con Spray
![Page 37: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/37.jpg)
Scala Programming @ Madrid
Testeando que es gerundio
Spray test-kit:
![Page 38: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/38.jpg)
Scala Programming @ Madrid
Subsistema: Datos Maestros
Canal de eventos
API
IngestiónDatos
Calculador
Persistencia
DatosMaestros
![Page 39: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/39.jpg)
Scala Programming @ Madrid
In-memory Data Grid
Motivaciones:
• Datos maestros comunes
• Caché de una BD
Solución:
• Hazelcast
![Page 40: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/40.jpg)
Scala Programming @ Madrid
¿Qué es Hazelcast?
• Estructuras en memoria distribuida
• Cambios dinámicos
• Open source
• Clustering
• Scalable
• Map Stores
![Page 41: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/41.jpg)
Scala Programming @ Madrid
Infraestructura
OPENSTACK
BOSH
CLOUD FOUNDRY
SCALA APP
SERVICE
![Page 42: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/42.jpg)
Scala Programming @ Madrid
![Page 43: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/43.jpg)
Scala Programming @ Madrid
Cloud Foundry
• Open PaaS
• Permite escalar apps facilmente.
• SSO y OAUTH2
• Buildpack para Java
• Despliegue de servicio:– Servicio
– Broker
![Page 44: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/44.jpg)
Scala Programming @ Madrid
Escalando los subsistemas
Canal de eventos
API
IngestiónDatos
Calculador
Persistencia
DatosMaestros
APIAPIAPI
x10
PersistenciaPersistenciaPersistencia
x5
![Page 45: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/45.jpg)
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
![Page 46: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/46.jpg)
Scala Programming @ Madrid
Conclusiones
![Page 47: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/47.jpg)
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.
![Page 48: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/48.jpg)
Scala Programming @ Madrid
Conclusiones: tecnologías
• Tecnologías nuevas
• Poca documentación
• Comunidad escasa
• Escalables y distribuidas
• Posibilidad de clustering
![Page 49: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/49.jpg)
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
![Page 50: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/50.jpg)
Scala Programming @ Madrid
Futuro de Scala
• En España:– Crece lentamente
– Portings
– Cloud
• Fuera:– Crece
– Crecerá más con Java 8?
![Page 51: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/51.jpg)
Scala Programming @ Madrid
![Page 52: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/52.jpg)
Scala Programming @ Madrid
Experiencia personal
![Page 53: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/53.jpg)
Scala Programming @ Madrid
![Page 54: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/54.jpg)
Scala Programming @ Madrid
Conferencias
![Page 55: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/55.jpg)
Scala Programming @ Madrid
![Page 56: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/56.jpg)
Scala Programming @ Madrid
![Page 57: Scala @ Real life](https://reader030.vdocuments.net/reader030/viewer/2022020116/55944d121a28ab596f8b4676/html5/thumbnails/57.jpg)
Scala Programming @ Madrid