gestión de llamadas con erlang/otp
TRANSCRIPT
¿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
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
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 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.
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
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.
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
✔ Alta Disponibilidad
✔ Tolerancia a Fallos
✔ ¡¡¡ Behaviours !!!
➢ gen_server
➢ gen_fsm
➢ gen_event
➢ application
➢ supervisor