+ All Categories
Home > Technology > Development.in.Jain.Slee.(May.2009)

Development.in.Jain.Slee.(May.2009)

Date post: 09-Jul-2015
Category:
Upload: joaquin-ruiz
View: 1,079 times
Download: 0 times
Share this document with a friend
Description:
Presentation about development in JAIN SLEE 1.1. And some comments about the different vendors like OpenCloud, JNetX or Mobicents.
Popular Tags:
38
Confidentiel Joaquín Ruiz Rojas Introducción a JAIN SLEE
Transcript
Page 1: Development.in.Jain.Slee.(May.2009)

Confidentiel

Joaquín Ruiz Rojas

Introducción a JAIN SLEE

Page 2: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/20062

Índice

1. ¿Qué es JAIN SLEE? ¿Por qué surge?

Beneficios

SLEE Vs. J2EE

2. Arquitectura.

3. Componentes.

4. Plataformas: OpenCloud

RhinoJnetX N(x)

Mobicents

5. Conclusiones

Page 3: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/20063

¿Quién soy yo? y qué esperar de esta charla…

Ing. Sup. en Informática con un año y medio trabajando en desarrollos de software en ALTRAN

Mi experiencia en JAIN SLEE:

Julio 2008 : Developing Services for Open Cloud Rhino

Diciembre 2008: Curso obligatorio para el desarrollo en JNetX Ofertas para servicios simples como ICW o Calling Cards.

No he trabajado con ello

Mi mundo es el software, no las telecomunicaciones

No soy ni experto ni Gurú, aunque si… ALTSLEE

Esta charla es un resumen de lo que he podido aprender en estos cursos y ofertas, y que no es más que una introducción a la tecnología JAIN SLEE desde el punto de vista del desarrollador.

Page 4: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/20064

¿Qué es JAIN SLEE?

JAIN = JavaTM APIs for Integrated Networks (API de Java para redes IN)

SLEE = Service Logic Excution Enviroment (Entorno para ejecución de la Lógica de Servicios)

En la práctica, JSLEE especifica un entorno de ejecución asíncrono en el que los sistemas de telecomunicaciones se pueden modelar como máquinas de estados finitos conectados a sistemas externos señalizados por protocolos asíncronos.

Especificaciones JSR 22 y JSR 240. Actualmente versión 1.1 Final Release.

Page 5: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/20065

¿Por qué surge?

En el mundo de la Telecomunicaciones nos encontrábamos con la siguiente situación:

Multitud de redes de comunicaciones con sus nodos y demás componentes físicos:

Redes 2G y 2.5G

Redes 3G

Redes convergentes

Múltiples protocolos:

INAP, CAP, AIN, WIN, MAP, SIP, ISUP, OAM, MGCP

Cualquier desarrollo era dependiente del “Vendor” o propietario de los nodos o elementos físicos de la Red de Telecomunicaciones. Esto era MUY caro

Page 6: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/20066

Beneficios

Es un estándar: Hay una comunidad de desarrolladores colaborando para la definición de un API

estándar Al ser un API, la implementación de la misma es libre

Es reusable: La portabilidad de JAVA (write-once, run-anywhere) permite que el desarrollo de

cualquier servicio sea global. Al ser una Arquitectura Orientada a Objetos

Es independiente de la Red: El desarrollo basado en un modelo de componentes es independiente de

cualquier protocolo de red, API o topología Permite la integración de cualquier tecnología de red

Permite la implementación de Servicios Convergentes: Los Servicios pueden combinar múltiples tecnologías de red y recursos variados,

lo que permite una gran cantidad de oportunidades de Negocio Permite invocaciones sincronas de otros servicios o componentes

Page 7: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/20067

Beneficios

Permite desarrollos globales. Un servicio implementado aquí es perfectamente adaptable a cualquier otro

Operador o País

Robusto: Es fuertemente tipado por lo que reducen errores de programación El SLEE gestiona la “sesión” o “llamada” asociada al estado de la aplicación

Fiable: Al basarse en un modelo de transacciones.

Posee un modelo de respuesta a fallos bien definido

Integrado con aplicaciones tanto síncronas como asíncronas

Escalable: Gracias a su configuración en Cluster (frente a la clásica de primaria-

secundarias)

Facilidad en su operación y mantenimiento: Interfaces JMX que permiten su control, configuración y provisionamiento

Page 8: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/20068

Algunos Servicios

Push To Talk

Audio/Video Conferencia

Mensajes Multimedia

Mensajería instantánea (IM)

Servicios Prepago

Servicio de “Tono de espera”

Compartir contenidos

Servicios de conferencia multimedia (Multi-party calls, instant conferencing)

Click to Call

VPN

Reconocimiento de Voz

Calls Centers distribuidos

Control inteligente de llamada (call forwarding, web based calls logs) – integrando directorios corporativos

IP PBX

Convergencia sobre servicios wireless (usando SS7 y SIP internetworking) como 900, LNP,…

Envío de SMS/MMS

Oficina Móvil

IP Centrex

Multi SIM

Push-to-X Applications (emails, pictures, contacts, locations, and other information to compatible phones)

Roaming

etc

Page 9: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/20069

SLEE Vs. J2EE

Son tecnologías totalmente complementarias.Otras consideraciones

CentralizadoDistribuidoDespliegue

-Casi tiempo realTiempo Real

De 2 a 3 nuevesDe 3 a 5 nuevesDisponibilidad

Intensiva durante los accesos a BDSólo procesa si hay invocación de recursos o eventos

Computación

De BBDD (lenta finalización y de menor frecuencia)

Ligeras (para la replicación del estado, rápidas y más frecuentes)

Transacciones

Servidores de BB.DD. Y otros sistemas de Back-end. Una única copia persistente.

Múltiples (Información del contexto, datos provisionados, cacheados sin persistencia)

Data Sources

Objetos pesados con ciclos de vida largos

Objetos ligeros con ciclos de vida muy cortos e interfaces fuertemente tipados (los crea la plataforma no el desarrollador)

Componentes

Principalmente síncrono (cliente - servidor)

Principalmente asíncrono (dirigido a eventos)

Invocación

J2EEJSLEE

Page 10: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200610

Arquitectura

Arquitectura definida en Subsistemas

Page 11: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200611

Arquitectura

Contenedor JAIN SLEE

Timer Facility

Alarm Facility

Trace Facility

AC Naming Facility

Profile Facility

Usage Facility

Servicio

Servicio

Servicio

Resource Adaptor Resource Adaptor Resource Adaptor

Servicios de Operación y Mantenimiento del SLEE

Agente JMX

Profile

Profile

INAP CAP SMPP MM7 AIN WIN MAP SIP ISUP OAM MGCP HTTP Parlay/OSA Web Services SQL JCC

Page 12: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200612

Modelo de Componentes & Conceptos

SBBs (Service Buildings Blocks) SBB Entity SBB Object

RAs (Resource Adaptors)

Eventos SLEE

Activity AC (Activity Context) ACI (Activity Context Interface)

Profiles

Servicio

Page 13: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200613

Service Buildings Blocks (SBB)

Son los componentes esenciales de la arquitectura del SLEE. Un servicio contiene una o más instancias de diferentes SBBs. Un SBB se puede reutilizar en múltiples servicios, aunque un solo SBB sólo puede procesar un evento a la vez, varios SBBs si pueden procesar eventos en paralelo dentro de un mismo servicio.

Contienen la lógica del servicio, ya que tienen definidas las acciones para los diferentes eventos que se reciben.

El contenedor SLEE se encarga de controlar su ciclo de vida y de configurar su entorno de ejecución.

En el se definen: Los eventos recibidos y generados por el componente SBB, así como las

acciones que se ejecutan en la recepción de cada uno de ellos. La persistencia del estado en que se encuentra se almacena en el CMP

(Container Managed Persistent) Interfaz Local. Define el conjunto de operaciones del componente SBB que

pueden ser invocadas de forma síncrona. Relaciones Hijo. Un SBB puede tener cero o más SBBs hijos.

Su interfaz se encuentra definido en la especificación del SLEE (javax.slee.Sbb)

Son como EJBs pero con la diferencia de que se encuentran subscritos (“attached”) a una actividad dinámica (Activity Context).

Page 14: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200614

Service Buildings Blocks (SBB)

SBB Entity: Instancia lógica de un componente SBB. Es una entidad lógica que representa el

estado persistente de una instancia determinada del SBB A grandes rasgos hay una SBB Entity por cada instancia de un servicio Es el estado persistente de cada instancia del SBB según se define en los

campos del CMP de la clase (abstracta) del SBB del componente. Mantiene las relaciones con las otras entidades padre e hijo (SBB entity tree) Es la entidad que se encuentra “subscrita” a la Activity Context

SBB Object: Es la instancia de una clase SBB Es un objeto Java sobre el que se “cachea” una SBB Entity Cada Host del Cluster tiene un pool de estos objetos, esperando a “cachear” el

estado de una SBB Entity, por lo tanto, esta asociado a una JVM concreta. Puede “cachear” diferentes SBB Entities a lo largo de su ciclo de vida

Page 15: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200615

Ciclo de Vida SBB Object

NO EXISTE

El Objeto aún no s e ha creado o ha .s ido des truido

POOLED

Se ha creado e l objeto pero aún no s e .le ha as ignado ninguna SBB Entity

READY

El Objeto s e encuentra as ignado a . una SBB Entity Ahora es tá

preparado para rec ibir eventos grac ias a que dis pone los métodos

para manipularlos

Al ser un objeto Java consta de un ciclo de vida:

Page 16: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200616

Resource Adaptors

Es la representación que tiene el SLEE de un recurso externo, tales como elementos de Red (HLR, MSC, etc), pilas de protocolos, directorios y BBDD

Su función es adaptar mediante una API cualquier recurso para su uso por parte del SLEE

Envían y reciben eventos, interactuando con los SBBs en ambas direcciones (un SBB invoca un método de la API del RA y el RA lanza – fire – eventos que serán tratados en los métodos definidos para tal tipo de evento en los SBBs)

Los eventos que puede lanzar un RA se definen en su DD (Deployment Descriptor)

RA TYPE

Es la API que define los métodos que pueden s er invocados des de

.e l s ervic io

Define los eventos y los ActivityObjects

Los s ervic ios dependen del RA Type y no de la implementac ión

del mismo → Portabilidad

Page 17: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200617

Eventos

SLEE diferencia los Eventos según los tipos de Eventos (request, response, error, etc) Ej: En JAIN SIP los eventos se clasifican según RequestEvents, ResponseEvents y

TimeoutsEvents. Cada una de estas categorías incluye numerosos “tipos de eventos” como por ejemplo la Request del tipo INVITE (javax.sip.message.Request.INVITE)

Se representa como un objeto Java, en dónde se encapsula la información necesaria

Se procesan en los métodos “Event Handler” de cada SBB (un método sólo procesa un evento)

Todos los eventos se distribuyen dentro de un canal denominado “Activity”

Page 18: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200618

Activity & Activity Object

Un flujo de eventos relacionados se representa como una Actividad.

La representación en el SLEE de una actividad es la Activity Context Interface (ACI). Representa el canal dinámico en que se produce un intercambio de eventos (es lo más parecido a la sesión de HTTP).

ACTIVITY

Entidad lógica en la que s e produce un ( ) intercambio de eventos de uno en uno

.entre un recurs o y un SBB

Des de e l punto de vis ta de l recurs o repres enta la máquina de es tados s obre

la que s e emiten los mens ajes o eventos que definen las diferentes trans ic iones

entre los es tados de l recurs o

ACTIVITY OBJECT

( )Es la repres entac ión Java de la actividad en e l recurs o es como el Objeto de l recurs o

Suminis tra la API del recurs o que pos teriormente s erá invocada des de e l SBB

, En e l SLEE s e define una Activity Context para proveer un acces o al Activity Object de es te, ( ).modo el SLEE no tiene vis ibilidad s obre é l s ólo e l recurs o

Page 19: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200619

Activity Context & ACI

( )ACTIVITY CONTEXT INTERFACE ACI

( ) , Es la vis ión Objeto que tiene e l SBB del Activity Context grac ias al cuál los SBBs pueden leer y es cribir s u es tado en e l mismo

, Determina qué eventos van a cada SBB dado que los SBBs s ólo recogen eventos de s us , ( ) .corres pondientes actividades que dando “s ubs critos ” attachados a la misma

Es creada y e liminada en tiempo de ejecuc ión y puede afectar al c ic lo de vida de nues tro, - s ervic io ya que un SBB no es des truido has ta que no s e encuentra “des attachado” de todas

.s us actividades

.Un SBB puede generar una ACI nueva grac ias a la ACIFactory que le ofrece e l RA

ACTIVITY CONTEXT

( ) Es la entidad lógica s in API que repres enta y encaps ula al Activity Object en e l SLEE

Contiene atributos que permiten compartir información entre los SBBs de un mismo componente

Page 20: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200620

Relación entre SBB y Activities

Las Activities representan “cosas” que son externas al SLEE

Un Activity Object es la representación Java de una Activity (Rel. 1 a 1)

Una Activity Context es la representación de una Activity en el SLEE (Rel. 1 a 1)

Los SBBs se subscriben (“attachan”) a los Activities Contexts (Rel. 0..n a 0..n)

Page 21: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200621

Profiles

Contiene los datos provisionados a los SBBs para la ejecución de su lógica.

Son de lectura /escritura y se precargan en la memoria de la JVM al arrancar el SLEE. Son globales a todo el SLEE.

Se organizan como esquemas de atributos – valor (Ej: un número de teléfono o un email serían dos atributos de un Profile)

Cada Profile dispone un “Profile Specification” en donde se define el interfaz para modificarlo.

Se pueden definir en el despliegue (DD) o desde la consola de administración, en dónde se pueden modificar “en caliente”

Se identifican con un ProfileID (#{ProfileTableName, ProfileName})

Se acceden obligatoriamente a través del CMP (Ej: getVPNProfile(ProfileID id))

La “Profile Facility” proporciona los métodos para su uso (Ej: getProfileByIndexedAtributte, getProfiles(),..)

Page 22: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200622

CMP (Container Managed Persistent)

Son un conjunto de atributos o campos que se definen en un SBB para que almacene/acceda a ciertos datos persistentes durante su ejecución

Los “CMP fields” pueden almacenar: Cualquier tipo de objeto serializable (java.io.Serializable) [1.0] Tipos primitivos de Java [1.0] El interfaz local de los SBBs (javax.slee.SbbLocalObject) [1.0] ACI y derivados (javax.slee.ActivityContextInterface) [1.1] Event Context interfaces (javax.slee.EventContext) [1.1] Profile Local interfaces (javax.slee.profile.ProfileLocalObject) [1.1]

Estos atributos son accesibles desde los SBBs a través de los métodos abstractos “getter” y “setter” que se deben definir para cada campo y que son implementados en tiempo de despliegue, es decir, no se encuentran implementados hasta que se levanta la primera instancia del SBB.

La persistencia de los datos almacenados en el CMP es tolerante a fallos

Page 23: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200623

Facilities

La especificación del SLEE define una serie de funcionalidades para gestionar de forma eficiente el uso de la aplicación, sus servicios, flujo de eventos y recursos. Además de ayudar a medir el rendimiento de la plataforma y su estado (alarmas, estadísticas, logs, etc)

TRACE FACILITY

. 4 ( Es la herramienta que utilizan los s ervic ios para generar LOGS Es igual que e l log j que ). ( , , ,es lo que us a internamente Permite diferentes nive les de traza ERROR INFO FINEST

…)import javax.slee.Sbb;import javax.slee.SbbContext;import javax.slee.facilities.Tracer;

public abstract class MySbb implements Sbb {private Tracer tracer;private SbbContext context;public void setSbbContext(SbbContext context) {

this.context = context;this.tracer = context.getTracer("MySbb");

}...// Generate an INFO trace tracer.info("An event has occurred");...

Page 24: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200624

Facilities

TIMER FACILITY

Es ta func ionalidad permite programar acc iones periódicamente o inic iar acc iones tras un tiempo .previamente definido

La “Timer Facility” controla un número determinado de timers totalmente independientes entre. 0 .s í Cada Timer puede lanzar ó n eventos tras s u venc imiento

PROFILE FACILITY

( )Es la func ionalidad que da acces o a las Profile Tables por lo tanto a los datos provis ionados

public ProfileTableActivity getProfileTableActivity(String profileTableName)public ProfileTable getProfileTable(String profileTableName)

[1.1]SERVICE LOOKUP FACILITY

Es ta func ionalidad permite a los Res ource Adaptors obtener información s obre los eventos que puede rec ibir un s ervic io ins talado en e l SLEE

Page 25: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200625

Facilities

[1.1]EVENT LOOKUP FACILITY

Es ta func ionalidad permite a los RA obtener información s obre los tipos de eventos( ) FireableEventType que s e encuentran ins talados en e l SLEE

Se puede us ar para convertir los eventos de l SLEE en “FireableEventType objects ” que s on los que us a e l RA para lanzar eventos des de o hac ia cualquier “End Point”

ALARMFACILITY

, , Es ta func ionalidad permite a SBBs RAs y Profiles activar o limpiar alarmas en e l SLEE

Las notificac iones de las alarmas que s e lancen generarán s u corres pondiente notificac ión en ( )e l AlarmMBean acces ible des de la cons ola de adminis trac ión

( )Cada alarma pos ee un identificador y un nive l de critic idad AlarmLevel

ACTIVITY CONTEXT NAMING FACILITY

La Activity Context Naming Facility fac ilita la etiquetac ión mediante un nombre de los Activity.Contexts

, Permite a un SBB object as ignar un nombre a un Activity Context para que otros SBBs objects .puedan bus car y acceder a dicha Activity

Un Activity Context puede tener cero o más nombres

Page 26: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200626

Facilities : JNDI Names

Dentro del contexto: “java:comp/env”

Page 27: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200627

Facilities (Código)

public void setSbbContext(SbbContext context) {this.context = context;try {

sbbEnv = (Context) new InitialContext().lookup("java:comp/env");id = context.getSbb();timerFacility = (TimerFacility) sbbEnv.lookup("slee/facilities/timer");ACNFacility = (ActivityContextNamingFacility)sbbEnv.lookup("slee/facilities/activitycontextnaming");profileFacility = (ProfileFacility) sbbEnv.lookup("slee/facilities/profile");

alarmFacility = (AlarmFacility) sbbEnv.lookup("slee/facilities/alarm");nullACIFactory = (NullActivityContextInterfaceFactory)sbbEnv.lookup(

"slee/nullactivity/activitycontextinterfacefactory");nullActivityFactory = (NullActivityFactory)sbbEnv.lookup("slee/nullactivity/factory");fp = (SipFactoryProvider) sbbEnv.lookup("slee/resources/jainsip/1.1/provider");provider = fp.getSipProvider();addressFactory = fp.getAddressFactory();headerFactory = fp.getHeaderFactory();messageFactory = fp.getMessageFactory();

} catch (NamingException ne) {System.out.println("Could not set SBB context: " + ne.toString());

}}

Page 28: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200628

Estadísticas de Uso

Un estadística de uso es un parámetro que puede ser modificado por cualquier objeto del SLEE para suministrar al Administrador, a través de la consola de administración del sistema, información sobre el funcionamiento del mismo.

Hay 2 tipos: Contadores: únicamente se pueden incrementar y decrementar “Samples”: almacenan valores numéricos sobre los que pueden obtener a

posteriori sus valores máximos, mínimos, medias…

Ejemplos:…public interface FooSbbUsageParameters {

// counter-type usage parameter namespublic void incrementFirstCount(long value);public void incrementSecondCount(long value);// sample-type usage parameter namespublic void sampleTimeBetweenNewConnections(long value);public void sampleTimeBetweenErrors(long value);

}

Los Profiles y RAs poseen sus propios interfaces para gestionar sus estadísticas de uso.

Page 29: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200629

¿Qué es un Servicio?

Un servicio es un conjunto de SBBs (como su propio nombre indica)

La instancia de un servicio puede incluir una o más instancias de SBBs de diferentes tipos. Un servicio es un grafo acíclico de SBBs

Se define a partir de un “Initial Event” que arranca un SBB root.

“SBB root” es el único SBB padre, todos los demás SBBs que arranquen su ejecución serán SBBs hijos del “SBB root”

La comunicación entre los diferentes SBBs puede ser de 2 modos: Síncrona: A través del SbbLocalObject del otro SBB, ya que posee los

métodos que puede ejecutar Asíncrona: Lanzando eventos a través del SLEE

Page 30: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200630

Funcionamiento (Síncrono)

La invocación de un SBB padre sobre un hijo es SINCRONA

Veamos un ejemplo:1. El RA lanza un evento, que indica el estado de algún recurso externo.2. El evento es recibido por el SLEE que lo procesa en aquellos SBBs que tengan definido

dicho evento como “initial event”. Cada uno de estos SBBs es un “root SBB” del servicio en el cual han sido desplegados. El SLEE arranca una instancia para cada SBB y los “attacha” a la ACI del evento. Esto se produce en los “event handler” de cada SBB.

3. El SBB padre va creando los diferentes SBBs hijo que necesita y obteniendo su interfaz local (Ej: EchoChildLocalInterface aChild = (EchoChildLocalInterface) getEchoChildSbbRelation().create();)

4. El SBB padre “attacha” al SBB hijo a la ACI y procede a “des-attacharse” de la misma. Anteriormente transfiere toda la información que necesite al hijo

5. El SBB ha terminado su función y al no estar “attachado” a ninguna actividad, su ejecución ha finalizado y se puede eliminar su SBB Entity.

Page 31: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200631

Funcionamiento (Asíncrono)

La invocación de un SBB sobre otro, que no sea hijo, es ASINCRONA

Veamos un ejemplo:1. El RA lanza un evento, que indica el estado de algún recurso externo.2. El evento es recibido por el SLEE que lo procesa en aquellos SBBs que tengan definido

dicho evento como “initial event”. Cada uno de estos SBBs es un “root SBB” del servicio en el cual han sido desplegados. El SLEE arranca una instancia para cada SBB y los “attacha” a la ACI del evento. Esto se produce en los “event handler” de cada SBB.

3. El root SBB va lanzando los eventos que tenga definidos en su lógica al SLEE4. El SLEE recibe los eventos y los envía a los SBBs que tengan definido ese evento como

“initial event”5. El root SBB ha terminado su función y si no está “attachado” a ninguna actividad, su

ejecución ha finalizado y se puede eliminar su SBB Entity.

Page 32: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200632

Vendor - OpenCloud

OpenCloud es una empresa de Nueva Zelanda creada en el año 2000

Es la mejor plataforma de JAIN SLEE, además de ser los únicos “fully compliant” con las versión 1.1 (de echo participan activamente en el desarrollo del estándar con SUN)

Poseen el mayor portal con información referente a JSLEE: OpenCloud Dev Portal!https://developer.opencloud.com

Su desarrollo se basa en el estándar con pequeños “matices”

La FSM Tool persigue el desarrollo de aplicaciones de JSLEE a partir de la especificación de su máquina de estados finitos con un DSL (domain specific lenguaje)

Page 33: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200633

Plataforma - Rhino OpenCloud

Punto fuerte: robusta configuración en cluster

Punto débil: consola de administración visual poco desarrollada (hay una por comandos) catálogo de aplicaciones bastante limitado Pruebas basadas en scripts muy tediosos

Los elementos más característicos de su Rhino Core Platform son:

o Rhino Service Interaction Layer – Proporciona un entorno para la composición, orquestación e interacción de los servicios existentes, tanto dentro del propio Rhino, como los servicios que se puedan encontrar alojados en un servidor de aplicaciones tradicional o un IN SCP (Service Control Point)

o Savanna Carrier-grade framework – Es el elemento que proporciona la escalabilidad y los 5 9´s de disponibilidad de la plataforma. Es el responsable del fail-over de la plataforma y los servicios, de la actualización on-line, además de controlar el clustering, la gestión de la memoria distribuida, etc.

Page 34: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200634

Vendor – JNetX N(x)

Empresa americana (desarrollo ruso) creada en 2001, con mas de 175 empleados localizados en unas 6 sedes

Líder del mercado en el desarrollo de servicios basados en estándares de telecomunicaciones

Partner de las empresas más importantes del sector IT. Tiene implantados servicios en la mayoría de los grandes operadores globales.

Aporta un gran catalogo de aplicaciones (+100) agrupadas en su DNA (Developers Network Area)

Page 35: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200635

Plataformas – JNetX N(x)

Puntos fuertes: Entorno de desarrollo, ejecución y pruebas

totalmente integrado en su TSS Pruebas más rápidas y visuales Consola de administración mas completa

Puntos débiles: El código generado no es comprensible Dependencia absoluta del TSS Orientado a un desarrollo más “teleco”

Page 36: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200636

Plataformas – Mobicents JAIN SLEE

Es la solución OpenSource que cuenta con el respaldo de RedHat

Básicamente su plataforma es un JBoss “dopado” para trabajar en clustering

Actualmente sólo son certificados en SLEE 1.0

Posee gran cantidad de código y ejemplos, especialmente para SIP (SIP Servlets y SIP Presence Service)

Posee una comunidad de desarrolladores bastante amplia y organizada (http://groups.google.com/group/mobicents-public)

Implementaron el EclipSLEE(http://mobicents-public.googlegroups.com/web/EclipSLEEDemo.html)

Page 37: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200637

Conclusiones

Hay que trabajar con ello

Aún no hay conocimiento experto (y menos en castellano)

Este tipo de plataformas están empezando a adoptar todo tipo de arquitecturas (SIP Servlets, Servicios Web,…)

Hace falta un conocimiento muy fuerte en protocolos para el desarrollo de cualquier servicio. IMS ayuda con su simplicidad.

El desarrollo es básicamente usar APIs propietarias, las de los RAs, por lo que aún no es posible un desarrollo independiente de la plataforma a pesar del esfuerzo de la versión 1.1 por conseguirlo

No es el futuro, que es IMS, pero sí el presente

Page 38: Development.in.Jain.Slee.(May.2009)

Confidentiel04/10/200638

www.altran.es


Recommended