Charla ofrecida en la Sala de Grados de la Universidad Complutense de Madrid, organizada por el Grupo de Usuarios de Erlang de Madrid.
La charla se orienta en los problemas que se encontraron en Jet Multimedia para la gestión de llamadas y cómo se solventaron empelando Erlang/OTP.
2. ¿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
3. La Red Inteligente
Inteligencia
Inteligencia
en la gestión
en la gestión
de las llamadas
de las llamadas
90X, 80X
90X, 80X
9X, 6X
Usuarios
5. Soluciones antes de 2008
Caso del 1414
Asterisk
Asterisk
Código C
Código C
Semáforos
Semáforos
Listas enlazadas
Listas enlazadas
Límite software de 20 a 30 llamadas
Límite software de 20 a 30 llamadas
90X, 80X
90X, 80X 9X, 6X
9X, 6X
6. Soluciones antes de 2008
Caso del 1414
Asterisk
Asterisk
Código C
Código C
Semáforos
Semáforos
Listas enlazadas
Listas enlazadas
Límite software de 20 a 30 llamadas
Límite software de 20 a 30 llamadas
90X, 80X
90X, 80X 9X, 6X
9X, 6X
8. Soluciones antes de 2008
Caso Cetelem
Diseño en PHP inoperante
Diseño en PHP inoperante
el sistema funciona bien
el sistema funciona bien
con poca carga, pero
con poca carga, pero
Cetelem pide campañas de
Cetelem pide campañas de
10.000 contactos
10.000 contactos
X 9X
9X
6X
,, 6 ,, 6
6X
9X
9X X
9. Soluciones antes de 2008
Caso Cetelem
Diseño en PHP inoperante
Diseño en PHP inoperante
el sistema funciona bien
el sistema funciona bien
con poca carga, pero
con poca carga, pero
Cetelem pide campañas de
Cetelem pide campañas de
10.000 contactos
10.000 contactos
X 9X
9X
6X
,, 6 ,, 6
6X
9X
9X X
10. Soluciones antes de 2008
Diseño de procesos
Diseño de procesos
para uso con PHP
para uso con PHP
11. Soluciones antes de 2008
Diseño de procesos
Diseño de procesos
para uso con PHP
para uso con PHP
12. Soluciones con Erlang
Concepto de ACD
Hacemos que la lógica
permanezca en un núcleo
Núcleo Asterisk
Erlang/OTP
13. Soluciones con Erlang
Concepto de ACD
El núcleo se encarga de obtener la información
de configuración, así como mantener datos
de informes, estadísticas, etc.
PostgreSQL Núcleo Asterisk
Erlang/OTP
14. Soluciones con Erlang
Concepto de ACD
Y ya que estamos, damos información a
los agentes a través de XMPP, en una aplicación
de escritorio Java.
PostgreSQL Núcleo Asterisk
Erlang/OTP
ejabberd
15. 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.
Pruebas de Stress
Asterisk + Erlang
Llamadas entrantes 230
Nivel de Carga CPU 0.36
16. Prueba de fuego
Censo del Campo con 200 agentes
Atendiendo llamadas.
90X, 80X
90X, 80X 9X, 6X
9X, 6X
17. Prueba de fuego
Censo del Campo con 200 agentes
Atendiendo llamadas.
La solución es acogida con éxito
y el INE aún sigue con nosotros.
90X, 80X
90X, 80X 9X, 6X
9X, 6X
18. Soluciones con Erlang
Concepto de Colas
Hacemos que la lógica
permanezca en un núcleo
Núcleo Asterisk
Erlang/OTP
19. Soluciones con Erlang
Concepto de Colas
El núcleo se encarga de obtener la información
de configuración, así como mantener datos
de informes, estadísticas, etc.
PostgreSQL Núcleo Asterisk
Erlang/OTP
20. Desafío
Volvemos al 1414, para comprobar
la potencia de nuestra solución.
90X, 80X
90X, 80X 9X, 6X
9X, 6X
21. Desafío
Volvemos al 1414, para comprobar
la potencia de nuestra solución.
La solución es acogida con éxito
y nos dan el tráfico del 1472, así
como dar más servicios que antes no
era posible dar.
90X, 80X
90X, 80X 9X, 6X
9X, 6X
22. Soluciones con Erlang
Concepto de JCM
El núcleo toma información de los contactos
y los gestiona pare realizar las llamadas.
PostgreSQL Núcleo
Erlang/OTP
23. Soluciones con Erlang
Concepto de JCM
Lanza las llamadas para contactar
y anota los resultados en la base de datos.
PostgreSQL Núcleo Asterisk
Erlang/OTP
24. Soluciones con Erlang
Concepto de JCM
Núcleo
Erlang/OTP
PostgreSQL Núcleo Operador Asterisk
25. 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).
29. 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í
30. 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 ?
31. 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 ?
32. 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