scala @ real life

57
Scala Programming @ Madrid Scala @ Real Life Madrid Junio 2014

Upload: javier-santos-paniego

Post on 02-Jul-2015

331 views

Category:

Engineering


6 download

DESCRIPTION

Slides de la charla "Scala @ Real life" del meetup Scala Madrid (http://www.meetup.com/Scala-Programming-Madrid/). 27 de junio de 2014

TRANSCRIPT

Page 1: Scala @ Real life

Scala Programming @ Madrid

Scala @ Real Life

Madrid

Junio 2014

Page 2: Scala @ Real life

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

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

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

Scala Programming @ Madrid

Page 6: Scala @ Real life

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

Scala Programming @ Madrid

Page 8: Scala @ Real life

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

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

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

Scala Programming @ Madrid

Arquitectura general

Canal de eventos

API

IngestiónDatos

Calculador

Persistencia

DatosMaestros

Page 12: Scala @ Real life

Scala Programming @ Madrid

Canal de eventos: Apache Kafka

Canal de eventos

API

IngestiónDatos

Calculador

Persistencia

DatosMaestros

Page 13: Scala @ Real life

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

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

Scala Programming @ Madrid

Page 16: Scala @ Real life

Scala Programming @ Madrid

Page 17: Scala @ Real life

Scala Programming @ Madrid

Page 18: Scala @ Real life

Scala Programming @ Madrid

Subsistema – Calculador

Canal de eventos

API

IngestiónDatos

Calculador

Persistencia

DatosMaestros

Page 19: Scala @ Real life

Scala Programming @ Madrid

Subsistema – Calculador:Concepto

Datos

Datos

Tarifas

Llamadas

Facturas

Page 20: Scala @ Real life

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

Scala Programming @ Madrid

Subsistema – Calculador:Apache Spark. Ejemplo

Page 22: Scala @ Real life

Scala Programming @ Madrid

Page 23: Scala @ Real life

Scala Programming @ Madrid

Subsistema – Persistencia

Canal de eventos

API

IngestiónDatos

Calculador

Persistencia

DatosMaestros

Page 24: Scala @ Real life

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

Scala Programming @ Madrid

Subsistema – Persistencia:Wrapper Akka & cliente Datastax

Page 26: Scala @ Real life

Scala Programming @ Madrid

Page 27: Scala @ Real life

Scala Programming @ Madrid

Page 28: Scala @ Real life

Scala Programming @ Madrid

Page 29: Scala @ Real life

Scala Programming @ Madrid

Subsistema – Ingestión de datos

Canal de eventos

API

IngestiónDatos

Calculador

Persistencia

DatosMaestros

Page 30: Scala @ Real life

Scala Programming @ Madrid

Subsistema – Ingestión de datos:Concepto

IngestiónDatos

WebServices

FTPAPI

(ManualUpload)

Page 31: Scala @ Real life

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

Scala Programming @ Madrid

Subsistema – Ingestión de datos:Akka Camel

Page 33: Scala @ Real life

Scala Programming @ Madrid

Subsistema: API REST

Canal de eventos

API

IngestiónDatos

Calculador

Persistencia

DatosMaestros

Page 34: Scala @ Real life

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

Scala Programming @ Madrid

Funcionamiento interno de Spray

Su arquitectura se basa en actores.

Page 36: Scala @ Real life

Scala Programming @ Madrid

Creando rutas con Spray

Page 37: Scala @ Real life

Scala Programming @ Madrid

Testeando que es gerundio

Spray test-kit:

Page 38: Scala @ Real life

Scala Programming @ Madrid

Subsistema: Datos Maestros

Canal de eventos

API

IngestiónDatos

Calculador

Persistencia

DatosMaestros

Page 39: Scala @ Real life

Scala Programming @ Madrid

In-memory Data Grid

Motivaciones:

• Datos maestros comunes

• Caché de una BD

Solución:

• Hazelcast

Page 40: Scala @ Real life

Scala Programming @ Madrid

¿Qué es Hazelcast?

• Estructuras en memoria distribuida

• Cambios dinámicos

• Open source

• Clustering

• Scalable

• Map Stores

Page 41: Scala @ Real life

Scala Programming @ Madrid

Infraestructura

OPENSTACK

BOSH

CLOUD FOUNDRY

SCALA APP

SERVICE

Page 42: Scala @ Real life

Scala Programming @ Madrid

Page 43: Scala @ Real life

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

Scala Programming @ Madrid

Escalando los subsistemas

Canal de eventos

API

IngestiónDatos

Calculador

Persistencia

DatosMaestros

APIAPIAPI

x10

PersistenciaPersistenciaPersistencia

x5

Page 45: Scala @ Real life

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

Scala Programming @ Madrid

Conclusiones

Page 47: Scala @ Real life

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

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

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

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

Scala Programming @ Madrid

Page 52: Scala @ Real life

Scala Programming @ Madrid

Experiencia personal

Page 53: Scala @ Real life

Scala Programming @ Madrid

Page 54: Scala @ Real life

Scala Programming @ Madrid

Conferencias

Page 55: Scala @ Real life

Scala Programming @ Madrid

Page 56: Scala @ Real life

Scala Programming @ Madrid

Page 57: Scala @ Real life

Scala Programming @ Madrid