ir a inicio...

Proyectos de investigación y tesis en Ingeniería y Ciencias Informáticas

Framework para telefonía IP en Erlang

Cada vez más, y en especial a partir de los grandes servicios en la Internet, el software requiere la ejecución concurrente de muchos procesos. Erlang es un lenguaje funcional que, en la tradición de Lisp, ofrece un paradigma nuevo para el desarrollo de software concurrente, mucho más simple y escalable que los lenguajes tradicionales como C++, Java y C#. Los beneficios principales de desarrollar con Erlang es simplificar muchísimo la solución de problemas tales como los sistemas de Internet donde acceden decenas o cientos de miles de personas a aplicaciones distribuidas con alta disponibilidad. El proyecto es hacer un framework que permitirá el desarrollo de aplicaciones que hagan uso de los sistemas de telefonía IP más importantes muy fácilmente.

El Lenguaje Erlang

Erlang es un lenguaje funcional que ofrece un paradigma nuevo para el desarrollo de software concurrente, mucho más simple y escalable que los lenguajes tradicionales como C++, Java y C# (ver http://www.erlang.org).

Los beneficios principales de desarrollar con Erlang es simplificar muchísimo la solución de problemas con mucha concurrencia y los problemas en que una máquina no es suficiente para proveer un servicio.

Típicamente, sistemas de Internet donde acceden decenas o cientos de miles de personas a aplicaciones requieren una arquitectura específica para soportar la carga y mantener una operatoria de alta disponibilidad.

Un ejemplo de este tipo de aplicaciones es el servicio de telefonía por Internet líder para empresas en Estados Unidos: Aptela.

Aptela

Aptela es el servicio telefonía por Internet líder en Estados Unidos para empresas PyMEs. Se trata de una "super central telefónica" con servicios muy avanzados de telefonía y que funciona en modo ASP por la Internet, es decir el cliente no instala nada en su oficina sino que usa la conexión de Internet para la comunicación telefónica, y configura su central en una interfase web.

El servicio es utilizado por más de 5,000 organizaciones en USA, está compuesto por más de 70 servidores, que gestiona más de 1.000 llamadas telefónicas simultáneas.

La super central telefónica de Aptela

La primera versión estuvo desarrollada en Java y en C, y para la segunda versión, el código de la central telefónica es directamente Erlang, porque es mucho más simple más allá de que requiere un cambio de mentalidad o en la forma de pensar el programa.

Erlang es mucho más apto para este tipo de problemas. Está preparado para ser tolerante a fallas, o sea, cuando las cosas fallen y sean gestionadas o manejadas mejor, para escalar fácilmente casi linealmente con la cantidad de procesadores según el problema. Si tengo un problema de que si hay varios contextos concurrentes de ejecución, por el solo hecho de agregarle un procesador adicional probablemente obtenga una mejora en el rendimiento de mi programa de un 100%, en general no lineal, pero tiende a serlo. Al agregarle un procesador, ya la performance mejora, pero se nota una mejora y a efectos del desarrollo, el costo es cero. El costo está solamente en el hardware que uno agrega. No hay que hacer un esfuerzo adicional porque la máquina virtual maneja eso por sí sola. Y, para todo lo que es comunicaciones, hay un framework que ya es muy maduro y que es muy cómodo de usar.

El proyecto

Hoy en día existen varios paquetes de software Open Source para proveer servicios de telefonía. Los proyectos más importantes y/o prometedores son Asterisk y FreeSWITCH. Ambos paquetes progresan con rapidez, proveyendo muchísima funcionalidad y la posibilidad de establecer comunicaciones con una gran cantidad de protocolos de telefonía (TDM, ISDN/PRI, SS7, etc.) y voz sobre IP (SIP, H.323, IAX, XMPP/Jingle, etc.). Según el tipo de proyecto conviene usar uno u otro, pero el problema es que usan lenguajes totalmente distintos para describir las acciones que debe realizar la central telefónica (dialplan).

Por eso es que alternar entre ellos resulta bastante engorroso, obligando a reescribir gran parte del código. El proyecto abarca el desarrollo de módulos en Erlang que realicen la traducción de un lenguaje de dialplan genérico al formato esperado por Asterisk en tiempo real (el traductor para FreeSWITCH ya está en funcionamiento) junto con un módulo en C que le permita a Asterisk interactuar con la aplicación hecha en Erlang. A todo ésto se le suma el desarrollo de una herramienta web o de escritorio que permita generar dialplans y casos de test gráficamente.

El resultado del proyecto será un framework desarrollado en Erlang que permitirá el desarrollo de aplicaciones que hagan uso de la telefonía muy fácilmente y sin tener que lidiar con las particularidades de cada plataforma. El postulante contará con el apoyo de varios empleadors de Novamens que se encuentran dedicados full-time a este proyecto y que cuentan con más de 4 años de experiencia desarrollando este tipo de soluciones.

Requisitos

  • Conocimientos avanzados de programación en algún lenguaje de programación imperativo orientado a objetos (C++, Java, C#, etc.) o funcional (Erlang/OTP, Ocaml, Haskell, LISP, etc.)
  • Conocimientos avanzados de lenguaje C
  • Conocimientos de programación sobre Linux

Duración

4 a 6 meses.

Codec para reuniones virtuales
Diseño y desarrollo de un codec original para reuniones virtuales con exportación del Desktop a participantes remotos.
FileSystem distribuido para servicios de Internet masivos
Diseño y desarrollo de un pseudo File System distribuido (llamado JuanjoFS) que provea servicios de versionado, transaccionalidad atómica y sincronización automática.
Softphone multiplataforma
Infraestructura para telefónos por software Open Source con un alto grado de robustez y eficiencia en el ruteo del audio, con integración a productos de colaboración interactiva permitiendo que las sesiones de conversación se graben, clasifiquen, organicen y accedan como parte de los sistemas de información de la organización. El proyecto comprende el desarrollo de una librería de comunicaciones para un Softphone SIP y un cliente SoftPhone.
Framework para telefonía IP en Erlang
Cada vez más, y en especial a partir de los grandes servicios en la Internet, el software requiere la ejecución concurrente de muchos procesos. Erlang es un lenguaje funcional que, en la tradición de Lisp, ofrece un paradigma nuevo para el desarrollo de software concurrente, mucho más simple y escalable que los lenguajes tradicionales como C++, Java y C#. Los beneficios principales de desarrollar con Erlang es simplificar muchísimo la solución de problemas tales como los sistemas de Internet donde acceden decenas o cientos de miles de personas a aplicaciones distribuidas con alta disponibilidad. El proyecto es hacer un framework que permitirá el desarrollo de aplicaciones que hagan uso de los sistemas de telefonía IP más importantes muy fácilmente.