experiencias con neo4j en infojobs

30
THE FUTURE IS NOW

Upload: marc-pou-i-miquel

Post on 24-Jan-2018

253 views

Category:

Engineering


2 download

TRANSCRIPT

THE FUTURE IS NOW

EXPERIENCIAS CON NEO4J EN INFOJOBSMARC POU

Product Owner, InfoJobs

3

■ Marc Pou

■ En InfoJobs desde 2.016

■ Product Owner (Candidatos)

■ @marc_pou

[email protected]

■ Rubén Arana

■ En InfoJobs desde 2.013

■ Technical Leader

■ @RbnArana

[email protected]

¿QUIENES SOMOS?

4

“Hacer fácil a todas las personas encontrar el mejor empleo posible”■ 700.000 usuarios únicos al día

■ 36.5 millones de visitas al mes

■ 325 millones de páginas vistas al mes

■ + de 150.000 puestos vacantes disponibles

■ + de 1 millón de descargas de la App en 2.015

■ 831.000 contratos conseguidos en 2.015

SOBRE INFOJOBS

USOS DE NEO4J EN INFOJOBS

6

Plan de Carrera (2.012 / 2.013)

■ Portal de información estadística

■ Ayuda para mejorar la carrera

profesional de los candidatos

■ Múltiples filtros de información

InfoJobs Social (2.014 / 2.015)

■ Red social de InfoJobs

■ Aporta capa relacional sobre las

ofertas de empleo

■ Ofrece posibilidades

complementarias a la búsqueda de

empleo tradicional

PROYECTOS

PLAN DE CARRERA

7

8

■ ¿Cuál es el siguiente puesto más habitual al puesto <P>?

■ ¿Dónde van los empleados que dejan la empresa <E>?

■ ¿Cuáles son los conocimientos habituales de un candidato que trabaja de <P>?

■ ¿De qué centro de formación salen mejores profesionales?

¿A QUÉ RESPONDE PLAN DE CARRERA?

9

¿DE QUÉ DISPONEMOS?

■ Amplia BBDD de currículums

■ 4 Millones de candidatos

■ 8 Millones de experiencias

■ 8 Millones de estudios

■ 16 Millones de conocimientos

10

¿CÓMO LO SOLUCIONAMOS?

■ Responder a los retos planteados mediante una BBDD relacional es muy

costoso.

■ Modelamos el problema con un grafo

■ Transformamos el CV en Nodos y Relaciones

■ El grafo nos permite tener secuencialidad de las experiencias y estudios

■ Nos permite relacionar fácilmente elementos comunes

11

12

ESQUEMA SOLUCIÓN

In OutN

Dicc

ExplotaciónExportación

datos

Limpieza y

Normalización

Carga grafo

De base de datos

relacional a ficheros CSV

Warm up

EJEMPLO

13

■ Misma información, dos prismas.

■ Información para candidatos

■ Información para empresas

■ La clave está en recorrer el grafo por

un camino o por otro pero con el

mismo modelo.

14

■ Actualización mensual de datos (No Real Time)

■ Procesos de limpieza y normalización en ficheros CSV

■ Carga grafo off-line (mayor rapidez) mediante la API de

Neo4j

■ Uso intensivo de memoria para mantener nodos padres

y poder establecer relaciones

■ Ser estrictos en propiedades e información que se

carga en los nodos (menos es más). Evitar textos

■ 6Gb – 8Gb de tamaño del grafo

■ Warm Up (recorrer todo el grafo para cargar todos los

datos en memoria)

■ Queries:

■ Cypher: fácil de experimentar, leer, mantener.

■ API: óptimo para queries consolidadas, costosas,

críticas en rendimiento.

■ Grafo de solo lectura (no realizamos operaciones de

escritura)

■ Múltiples opciones de consulta y filtros. El grafo facilita

el modelo de cálculo. No es Use Case habitual.

■ Consultas costosas cuando se filtra por properties.

■ Múltiples capas de persistencia para agilizar

rendimiento. WarmUp de consultas habituales.

RESULTADOS / APRENDIZAJES

INFOJOBS SOCIAL

15

16

■ ¿Qué hacen los candidatos cuando ya han repasado todas las ofertas de

empleo del portal?

■ Activan su red de contactos (on-line / off-line) para encontrar

oportunidades, referencias, recomendaciones, etc…

■ Podemos añadir una capa social por encima de InfoJobs que ayude a los

candidatos a encontrar contactos en las ofertas que les interesen

¿A QUÉ RESPONDE INFOJOBS SOCIAL?

17

■ Mostrar contactos de 1er o 2º nivel

en ofertas de empleo

■ Mostrar sugerencias de contactos

con alta probabilidad de conocerse

■ Gestión de mi red de contactos

■ Invitaciones recibidas

■ Mis contactos

■ Generar confianza en la red

■ Contactos en común entre dos

candidatos

■ Elementos en común entre dos

candidatos

■ Buscador de contactos

EJEMPLOS DE SERVICIOS A OFRECER

18

19

■ Sistema vivo

■ Tiempo real

■ Lectura / Escritura

■ Alta disponibilidad

■ Mecanismo de recuperación rápida

■ Gran volumen de datos

■ Tiempo de respuesta estable con

independencia del volumen de datos

■ Pesos en relaciones

■ “Independencia” del Site de Empleo

REQUISITOS

MODELO

20

Sugerencias de contactos

■ Personas que han trabajado en la misma empresa en un mismo periodo de tiempo

■ Personas que han realizado un mismo estudio en un mismo centro de formación en un mismo periodo de tiempo.

■ Ponderar sugerencias en función de tiempo de coincidencia y antigüedad de la coincidencia.

EVOLUCIÓN MODELO

21

Excluir candidatos que…

■ …hemos enviado invitaciones

■ …hemos hemos rechazado

■ ....con los que ya estamos

conectados

EVOLUCIÓN MODELO

22

Incluir nodos de otras redes

■ Incluimos contactos de Facebook

■ Sugerimos amigos de amigos de

Facebook

EVOLUCIÓN MODELO

23

Incluir contactos del teléfono

Incrementar red social en base a red

social real existente

■ Emails

■ Teléfonos

ARQUITECTURA

24

■ Cluster Neo4j

■ Master (W) / Slave (R)

■ Cambios en IJ se aplican a Grafo mediante sistema de colas

■ API Rest

■ Operaciones Neo4j mediante plugins

■ Importer externo. Carga de BD

25

■ Carga directa de BBDD

■ Multithreading para reducir tiempos

de carga y tiempos de espera

■ Grafo de dependencias en el

proceso de carga

■ Proceso de limpieza incorporado

■ Tiempo de carga “reducido”

■ 60Gb tamaño

■ 14M candidatos

■ 2.5M contactos

■ 2.2M invitaciones

■ 4M contactos rechazados

■ 32M sugerencias por email

■ 18M estudios

■ 40M experiencias

■ 75M emails del móvil

■ 180M telfs del móvil

IMPORTER

26

ALGORITMO DE

RECOMENDACIONES

■ Operaciones muy sencillas y

rápidas.

■ Obtener recomendaciones

■ Obtener rewards

■ Eliminar nodos

■ Aplicar reglas de negocio

■ Aplicar pesos a nodos y

resultados

27

SEARCH ENGINE

■ Usamos el índice de Neo4j

para buscar contactos por

texto.

■ Funciona bastante rápido.

28

■ Super nodos

■ Teléfonos => Limpiar y limitar teléfonos muy comunes

■ Empresas => Mercadona, Carrefour, … => Nos falta información de localización => Sugerencias en super nodos son poco relevantes

■ Rotación de candidatos

■ No acción en sugerencias => No interés => Rotar

■ Sugerencias de emails

■ Evitar repeticiones de sugerencias

■ Gestión del cambio del modelo de InfoJobs => Entorno cerrado a entorno abierto

PROBLEMAS ENCONTRADOS

29

ALGUNOS RESULTADOS

0

20000

40000

60000

80000

100000

120000

20

14

/20

20

14

/24

20

14

/28

20

14

/32

20

14

/36

20

14

/40

20

14

/45

20

14

/49

20

15

/01

20

15

/05

20

15

/09

20

15

/13

20

15

/17

20

15

/21

20

15

/25

20

15

/29

20

15

/33

20

15

/37

20

15

/41

Invitations vs Suggestionsweek by week

Ignore

Connect

0.00%

5.00%

10.00%

15.00%

20.00%

25.00%

30.00%

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

% Application rate

Without Contacts

With Contacts

0.0%

5.0%

10.0%

15.0%

20.0%

25.0%

30.0%

W+1 W+2 W+3 W+4

% of Updated CVsweek by week after registration

Candidates (Week 38)

Social Candidates (Week38)

■ 2,6M de conexiones

■ 7% de las recuperaciones de candidatos

■ +12% de opciones de actualizar el CV

GRACIAS