crear un servidor moderno con orbixweb para os/390 uss por peter kanis distributed object technology...
Post on 27-Jan-2016
223 Views
Preview:
TRANSCRIPT
Crear un servidor moderno con OrbixWeb para OS/390 USS
porPeter Kanis
Distributed Object Technology & CORBA/Java Solutions
Contenido• El proyecto SwiBi.• Restricciones y limitaciones.• Arquitectura.• Diseño.• Herramientas y productos.• Modelo de “multi-threading” dinámico.• Equilibrado de sessiones.• Seguridad con RACF.• Configuración del OS/390 USS.
Distributed Object Technology & CORBA/Java Solutions
El proyecto Swisscom Billing (SwiBi)
• La facturación actuál es una aplicación dinosaurio en COBOL con pantallas 3270…
• SwiBi debe sustituir éste con una aplicación moderna i inteligente.
• SwiBi debe coexistir con la antiquedad durante un cierto tiemo:– La base de datos esta hech para COBOL con
CHAR(n), ningún VARCHAR.
Distributed Object Technology & CORBA/Java Solutions
Los requisitos SwiBi
• Busquedad de cuentas por– Varios identificadores de cliente,– N° de telefono,– Dirección,– N° de cuenta y/o N° de factura.
• Vista, creación y modificación de cuentas• Vista, creación y modificación de contatos.• Vista y modificación de facturas.• Vista historica de cuentas y contratos.
Distributed Object Technology & CORBA/Java Solutions
Restricciones y limitaciones (1)
• Pueden haber hasta 3500 clientes CORBA que conectan con el/los servidor(es):– Con un servidor CORBA, este rendimiento no es
possible.
– Hace falta alguna forma de equilibrado de sessiones entre los servidores..
– Necesitamos ejecutar transacciones en paralelo (RRSAF).
Distributed Object Technology & CORBA/Java Solutions
Restricciones y limitaciones (2)• La base de datos es un classico embrollio
“legacy” con cerca de 1500 tabelas:– Los nombres de tabelas y columnas cambian
mientras renuevan la base de datos.– Tenemos que utilizar “stored procedures” en
COBOL (DB2 5.1 no comprende Java).
• Los utilizadores estan definidos en RACF:– Hay que autentificar los utilizadores con RACF.
Distributed Object Technology & CORBA/Java Solutions
CORBAC++
ServantO
racle/DB
2gatew
ay
CORBAC++ Client
MFC
Windows AIX OS/390/MVS
DB2
Arquitectura variante 1
Distributed Object Technology & CORBA/Java Solutions
CORBAC++ Client
MFC
Windows
OrbixIMS
GatewayIMS DB2
OS/390 USS MVS
Arquitectura variante 2
Distributed Object Technology & CORBA/Java Solutions
CORBAor RMI
Java Client
Windows
DB2
MVSOS/390 USS
CORBAC++
Servant
CORBA orRMI Java
Server
IIOP
IIOP/RMI
CLI
JDBC
Arquitectura variante 3
Distributed Object Technology & CORBA/Java Solutions
Arquitectura Final
OrbixWebJava 2Client Applet
Windows OrbixWeb
SessionBalancer
OrbixWebRACF
AuthenticationServant
OrbixWebSwiBi
Servants
OS/390 USS OS/390 MVS
DB2
RACFSAF
IIOP
IIOP
IIOP
JDBCRRSAF
Distributed Object Technology & CORBA/Java Solutions
Arquitectura Alternativa
OrbixWebJava 2Client Applet
Windows
OrbixWebRACF
AuthenticationServant
OS/390 USS
OS/390 MVS
DB2
RACF
SAF
IIOP
IIOP
IIOP
DRDA
OrbixWebSessionBalancer
OrbixWebSwiBi
Servants
JDBC
DB2 ClientEnabler
AIX SP2 Node
Distributed Object Technology & CORBA/Java Solutions
El Diseño• Diseño vertical
– Cada “Business object” esta desarrolado en un “package” desde el IDL hasta el JDBC.
– Los programadores tienen que conocer todas la technologias utilizadas.
• Diseño horizontal:– Cada technologia esta desarrollado en capas
independientes:– Los programadores pueden estar repartidos
según sus conocimientos.
Distributed Object Technology & CORBA/Java Solutions
Ventajas del diseño horizontal
• La logica comercial está decoplada del CORBA, y resulta facil añadir otros interfazes, por ejemplo RMI.
• Equipos independientes pueden desarollar cada capa.
• La estructura interna de la aplicación es clara.
Distributed Object Technology & CORBA/Java Solutions
El diseño horizontal
• Una capa CORBA BOA conteniendo el interfaz sin logica (pass-through).
• Una capa “Application” implementando las clases “Factory” y “Controlador”.
• Una capa “Business” implementando la logica y las reglas comerciales.
• Una capa de “Access” implementando la funcionalidad de acceso a DB2 con JDBC.
Distributed Object Technology & CORBA/Java Solutions
Capas del servidor SwiBi (1)
CORBA IDL layercom.swisscom.swibi.server.boa
Business Object layercom.swisscom.swibi.server.bo
Access Object Layercom.swisscom.swibi.server.ao
Application layercom.swisscom.swibi.server.appl
Java CORBA Client
DB2
Distributed Object Technology & CORBA/Java Solutions
Capas del servidor SwiBi (2)
CORBA IDL layercom.swisscom.swibi.server.boa
Java CORBA Client
RMI layercom.swisscom.swibi.server.rmi
Java RMI Client
Business Object layercom.swisscom.swibi.server.bo
Access Object Layercom.swisscom.swibi.server.ao
Application layercom.swisscom.swibi.server.appl
DB2
Distributed Object Technology & CORBA/Java Solutions
Herramientas y productos (1)
• VisualAge for Java v2.0– Desarollo de servidor.– Clientes Windows NT.– Repositorio en AIX 4.3.
• JBuilder v3– Desarollo del Applet Java 2.
• Test Engine v4.3 for Java– Trazado para pruebas y “logging” en producción.– Calculo de estatisticas de rendimiento.
Distributed Object Technology & CORBA/Java Solutions
Arquitectura del Test Engine
Test Hosts
Process being traced or tested
TestEngine class
TracesControl
Test Engine Server Host
TraceRepository
Repository Management
Servant
Test EngineServant
Control Hosts
Test EngineFront End
Traces
Control
Trace ViewerHosts
Test EngineTrace Viewer
Traces fromRepository
Traces
Distributed Object Technology & CORBA/Java Solutions
Herramientas y productos (2)
• OrbixWeb v3.2– Desarollo de servidor/cliente en Windows NT.– Instalación ínicial en AIX.– Instalación final en OS/390.
• JDBC + DB2 CAE (AIX/NT)– Para accesso al DB2 (NT, AIX y OS/390).
• JDK 1.1.8– OS/390 y AIX.
Distributed Object Technology & CORBA/Java Solutions
¿Porque JDBC en vez de SQLJ?
• No existía SQLJ cuando hemos empezado el proyecto.
• Las pruebas que hicimos demostraron que no hay ganancia significativa de rendimiento com SQLJ.
• Swisscom esta modificando la base de datos y cada cambio supone una recompilación y instalación.
• La SQL esta contenida en ficheros “property” así podemos modificarlo facilmente.
Distributed Object Technology & CORBA/Java Solutions
El processo de desarrollo (1)
• El codigo del servidor se desarolla con IBM VisualAge for Java (Windows NT), El cliente con Borland JBuilder v3 (Windows NT).
• Los ficheros Java del cliente estan importatos en el repositorio del VisualAge.
• Los ficheros IDL estan compilados para el servidor y client y los “package” importatos en el repositorio del VisualAge.
• Los ficheros IDL y properties estan importatos en el repositorio del VisualAge como comentarios de methodos en una “pseudo”clase.
Distributed Object Technology & CORBA/Java Solutions
• El codigo contiene trazados Test Engine para las pruebas.
• Las clases estan exportados al AIX y comprobadas.• Las clases estan copiadas al USS y comprobadas.• Las pruebas tienen dos etapas:
– Utilizando un cliente “Test Engine” con scripts (repeatable tests).
– Utilizando el applet Java 2.
Distributed Object Technology & CORBA/Java Solutions
El processo de desarrollo (2)
Multi-threading dinámico (1)
• Como la carga varia mucho y los recursos CPU etc. del OS/390 son caros, hemos desarrollado una fuente dinámica de threads:– Lanzamos un numero minimo configurable de
threads formando una fuente fija.– Al incrementar la carga, lanzamos nuevos threads
hasta un maximo configurable. Estos forman la fuente dinámica.
– Un thread monitor assegura que los threads de la fuente dinámica mueren cuando han estado sin trabajo durante un tiempo configurable.
Distributed Object Technology & CORBA/Java Solutions
Application ORB
RequestQueue App. PropertiesOrb PropertiesMonitorThreadWorkerThread
MessageQueue
OrbixThreadFilter
1
1
1
1 n
n 1
1
1
111
1
1
1
static getApplication();connect();run();getAppProperty();
Diseño de la fuente dinámica de threads
Distributed Object Technology & CORBA/Java Solutions
Multi-threading dinámico (2)
• Hemos hecho un “package” de estas clases.• Con el, se puede escribir el main de un servidor
OrbixWeb con un minimo de 3 invocaciones de la clase Application.
• Los 5 Servidores OrbixWeb que hemos construido utilizan esta arquitectura :– SwiBi Server.– SwiBi Session Balancer.– RACF Authentication Server (en producción)– Test Engine Server (en producción)– Test Engine Repository Manager (en producción)
Distributed Object Technology & CORBA/Java Solutions
Equilibrado de Sessiones (1)
• El equilibrado de carga entre servidores no es razonable.
• En general, cada cliente hace mas o menos el mismo trabajo:– Equilibración de los sessiones entre los sevidores basta.
• Hemos construido un Equilibrador de Sessiones:– Los servidores se registran con el “Balancer”.– El “Balancer” comprueba regularmente la existencia de los
servidores (ping).– El “Balancer” se encarga de parrar los servidores.
Distributed Object Technology & CORBA/Java Solutions
Distributed Object Technology & CORBA/Java Solutions
OrbixWebJava 2
Client Applet
OrbixWebSessionBalancer
OrbixWebSwiBi
Servants
bind +getServerName()
Implementation Name +Host name
registerServer()shutdown()ping()
bind + invocations
Equilibrado de Sessiones (2)
Distributed Object Technology & CORBA/Java Solutions
Seguridad con RACF (1)• Las clases seguridad RACF de IBM JDK 1.1.8 estan muy mal
diseñadas:– Codigos error del sistema erroneos.
– Imposibilidad de verificar los derechos de un “Userid” en una clase de seguridad.
• Creamos nuestro proprio JNI para RACF:– void authenticate( userId, password);
– void changePassword(userId, oldPassword, newPassword);
– boolean isMemberOfGroup( userId, group);
– boolean canRead( userId, securityClass, entityName);
– boolean canUpdate( userId, securityClass, entityName);
– boolean canAlter( userId, securityClass, entityName);
– boolean canControl( userId, securityClass, entityName);
Distributed Object Technology & CORBA/Java Solutions
Seguridad con RACF (2)• No pudimos utilizar SSL:
– Solamente hace falta para la autentificación.
– El efecto negativo al rendimiento si la totalidad del sistema utiliza SSL.
– Estos son aplicaciones intranet.
– Swisscom no quiere mantener los certificados necesarios.
• Creamos nuestro proprio Encryptor para los password:– cifra mutable que cambia cada n minutos (configurable).
– “Random shift expansion algorithm”.
– Creamos un bloque de 64 bytes del los 8 caracteres del password.
Distributed Object Technology & CORBA/Java Solutions
Seguridad con RACF (3)
OrbixWebJava 2
Client Applet
OrbixWebRACF
AuthenticationServant
getCipher()
Encryptor
OrbixWebSwiBi
Servant
encryptPassword()
logon()
getCipher()authenticate() +isMemberOfGroup()
Configuación del OS/390 (1)
• Problemas con servidores Java:– Requiere mucho tiempo CPU para empezar y el
OS/390 reduce su prioridad hasta el minimo possible.
– Requiere bastantes recursos, threads, memoria, connecciones DB2 etc., hace falta muchos MIPs.
– Los administradores “host” piensan en technología 1970: transacciones cortos. Es muy estraño para ellos de tener un processo que puede durar dias, ver semanas y ademas que los “end users” no connectan al la base de datos.
Distributed Object Technology & CORBA/Java Solutions
Configuación del OS/390 (2)
• Soluciones:– Lanzar cada servidor con un user único utilzando
cron y un REXX script con setuid.– Installar 2 periodos de prioridad al user, uno mas
bajo para el lanzamiento, y un segundo mas alto para “run-time”.
– Quitar el control MVS que mata processos cuando utilizan demasiado CPU (SIGXCPU).
– Incrementar los recursos dedicados al Unix System Service.
Distributed Object Technology & CORBA/Java Solutions
Nuestro logo
Distributed Object Technology & CORBA/Java Solutions
top related