38
Gestión de llamadas con Erlang/OTP Manuel Ángel Rubio Jiménez

Gestión de Llamadas con Erlang/OTP

Embed Size (px)

Citation preview

Gestión de llamadas conErlang/OTP

Manuel Ángel Rubio Jiménez

¿Quién soy?Programador desde hace 20 años

Basic, Modula-2, Pascal, C, C++, Ensamblador, Java, Perl, PHP, Python, Ruby, JavaScript, Lua, ... y Erlang.

Desarrollador desde hace 7 años

Metodologías clásicas, Métrica-3, RUP, Scrum, Xtreme Programming, Kan-ban, DSDM, ASD, …

Gerente de Desarrollo de Voz en Jet Multimedia

Red Inteligente (900, 901, 902, 905, 806, …), sistemas virtuales de telefonía y VoIP.

Blog

http://bosqueviejo.net

La Red Inteligente

90X, 80X90X, 80X9X, 6X

Usuarios

Inteligenciaen la gestiónde las llamadas

Inteligenciaen la gestión

de las llamadas

Caso del 1414

Soluciones antes de 2008

90X, 80X90X, 80X 9X, 6X9X, 6X

Caso del 1414

Soluciones antes de 2008

90X, 80X90X, 80X 9X, 6X9X, 6X

AsteriskCódigo CSemáforos

Listas enlazadasLímite software de 20 a 30 llamadas

AsteriskCódigo CSemáforos

Listas enlazadasLímite software de 20 a 30 llamadas

Caso del 1414

Soluciones antes de 2008

90X, 80X90X, 80X 9X, 6X9X, 6X

AsteriskCódigo CSemáforos

Listas enlazadasLímite software de 20 a 30 llamadas

AsteriskCódigo CSemáforos

Listas enlazadasLímite software de 20 a 30 llamadas

Caso Cetelem

Soluciones antes de 2008

9X, 6

X9X

, 6X 9X, 6X

9X, 6X

Caso Cetelem

Soluciones antes de 2008

9X, 6

X9X

, 6X 9X, 6X

9X, 6X

Diseño en PHP inoperanteel sistema funciona biencon poca carga, pero

Cetelem pide campañas de10.000 contactos

Diseño en PHP inoperanteel sistema funciona bien

con poca carga, peroCetelem pide campañas de

10.000 contactos

Caso Cetelem

Soluciones antes de 2008

9X, 6

X9X

, 6X 9X, 6X

9X, 6X

Diseño en PHP inoperanteel sistema funciona biencon poca carga, pero

Cetelem pide campañas de10.000 contactos

Diseño en PHP inoperanteel sistema funciona bien

con poca carga, peroCetelem pide campañas de

10.000 contactos

Soluciones antes de 2008

Diseño de procesospara uso con PHP

Diseño de procesospara uso con PHP

Soluciones antes de 2008

Diseño de procesospara uso con PHP

Diseño de procesospara uso con PHP

Soluciones con ErlangConcepto de ACD

AsteriskNúcleoErlang/OTP

Hacemos que la lógicapermanezca en un núcleo

AsteriskNúcleoErlang/OTP

El núcleo se encarga de obtener la informaciónde configuración, así como mantener datosde informes, estadísticas, etc.

PostgreSQL

Soluciones con ErlangConcepto de ACD

AsteriskNúcleoErlang/OTP

Y ya que estamos, damos información alos agentes a través de XMPP, en una aplicaciónde escritorio Java.

PostgreSQL

ejabberd

Soluciones con ErlangConcepto de ACD

Datos Numéricos

Asterisk + MySQL Asterisk + Erlang

Máquinas de Asterisk 1 2+

Llamadas simultáneas H.323 20-30 80~ x NºMáq.

Llamadas simultáneas SIP ??? 200~ x NºMáq.

Asterisk + Erlang

Llamadas entrantes 230Nivel de Carga CPU 0.36

Pruebas de Stress

Prueba de fuego

90X, 80X90X, 80X 9X, 6X9X, 6X

Censo del Campo con 200 agentesAtendiendo llamadas.

Prueba de fuego

90X, 80X90X, 80X 9X, 6X9X, 6X

Censo del Campo con 200 agentesAtendiendo llamadas.

La solución es acogida con éxitoy el INE aún sigue con nosotros.

Soluciones con ErlangConcepto de Colas

AsteriskNúcleoErlang/OTP

Hacemos que la lógicapermanezca en un núcleo

AsteriskNúcleoErlang/OTP

El núcleo se encarga de obtener la informaciónde configuración, así como mantener datosde informes, estadísticas, etc.

PostgreSQL

Soluciones con ErlangConcepto de Colas

Desafío

90X, 80X90X, 80X 9X, 6X9X, 6X

Volvemos al 1414, para comprobarla potencia de nuestra solución.

Desafío

90X, 80X90X, 80X 9X, 6X9X, 6X

Volvemos al 1414, para comprobarla potencia de nuestra solución.

La solución es acogida con éxitoy nos dan el tráfico del 1472, asícomo dar más servicios que antes noera posible dar.

NúcleoErlang/OTP

El núcleo toma información de los contactosy los gestiona pare realizar las llamadas.

PostgreSQL

Soluciones con ErlangConcepto de JCM

NúcleoErlang/OTP

Lanza las llamadas para contactary anota los resultados en la base de datos.

PostgreSQL

Soluciones con ErlangConcepto de JCM

Asterisk

NúcleoErlang/OTP

Soluciones con ErlangConcepto de JCM

OperadorNúcleoPostgreSQL Asterisk

Datos Numéricos

PHP Erlang

Llamadas a gestionar 3000 22000+

Tiempos de comprobación 1-5 seg 1 seg

✔ PHP se cuelga con frecuencia.✔ El procesado de datos en PHP es muy costoso

(tiempo + memoria).

Potenciando

9X, 6

X9X

, 6X 9X, 6X

9X, 6X

Las campañas pueden ser mayores,más contactos, y más campañassimultáneas.

Potenciando

9X, 6

X9X

, 6X 9X, 6X

9X, 6X

Llegamos a procesar campañasde hasta 50.000 contactos enun solo día... otro éxito más.

La Tentación

JVM vs BEAM

JVM BEAM

Soft-realtime No Sí

Distribución No Sí

Multiplataforma Sí Sí

Multi-Proceso Hilos Procesos

Código Nativo No* HiPE

Tolerante a fallos No* Sí

JVM vs BEAM

JVM BEAM

Soft-realtime No Sí

Distribución No Sí

Multiplataforma Sí Sí

Multi-Proceso Hilos Procesos

Código Nativo No* HiPE

Tolerante a fallos No* Sí

¿ Erjang ?

JVM vs BEAM

JVM BEAM

Soft-realtime No Sí

Distribución No Sí

Multiplataforma Sí Sí

Multi-Proceso Hilos Procesos

Código Nativo No* HiPE

Tolerante a fallos No* Sí

¿ Erjang ?

JVM vs BEAM

JVM BEAM

Soft-realtime No Sí

Distribución No Sí

Multiplataforma Sí Sí

Multi-Proceso Hilos Procesos

Código Nativo No* HiPE

Tolerante a fallos No* Sí

Jarlang

Beneficios

✔ Distribución

Beneficios

✔ Distribución

✔ Alta Disponibilidad

Beneficios

✔ Distribución

✔ Alta Disponibilidad

✔ Tolerancia a Fallos

SS

PP PP PP

Beneficios

✔ Distribución

✔ Alta Disponibilidad

✔ Tolerancia a Fallos

✔ ¡¡¡ Behaviours !!!

➢ gen_server

➢ gen_fsm

➢ gen_event

➢ application

➢ supervisor

¿Preguntas?

Agradecimientos

➢ Universidad Complutense de Madrid

➢ Grupo de Usuarios de Erlang Madrid

➢ Jet Multimedia España, S.A.

➢ A todos vosotros