Por Francisco Fagas Nota: Este artculo ofrece informacin general sobre la arquitectura orientada a servicios, MBI, EDRA, y la relacin que existe entre estos modelos presentados como solucin a los diferentes problemas con los que se encuentran los arquitectos de soluciones, desarrolladores y personal de mantenimiento de las aplicaciones empresariales (9 pginas impresas).
Contenido
Introduccin Arquitectura Orientada a Servicios Integrador de Negocios Arquitectura referencial de desarrollo empresarial MBI 3.0 & EDRA Conclusin
Introduccin
Desde siempre, desarrollar aplicaciones empresariales no ha sido una tarea fcil considerando que los avances de la tecnologa han ido simplificando el manejo de varios aspectos de este problema. Sin embargo, los desarrolladores de este tipo de aplicaciones continan enfrentndose a desafos tales como datos complejos; la mayor parte del tiempo los requerimientos no son explcitos, usuarios simultneos mltiples, los requerimientos del negocio cambian con frecuencia, plataformas heterogneas, e interdependencias complejas entre aplicaciones distribuidas. Adems, el hecho de que no exista ningn estndar de la industria para el desarrollo de este tipo de aplicaciones ha llevado a muchas organizaciones a desarrollar sus propios modelos generando as un alto costo de desarrollo y mantenimiento de las aplicaciones. Principio de la pgina
Figura 1: Cambios de una arquitectura Cliente/Servidor hacia una Arquitectura Orientada a Servicios. Volver al texto. Principio de la pgina
Integrador de Negocios
MBI (Microsoft Business Integrator) es una arquitectura de referencia para la construccin de aplicaciones, cuya arquitectura de integracin comn a todos los portfolios de soluciones utiliza las mejores prcticas de Microsoft Corporation; en otras palabras, MBI es unframework para crear, ejecutar y mantener aplicaciones corporativas basadas en la plataforma Microsoft .NET, desarrollado para resolver escenarios recurrentes de una empresa corporativa y la reduccin de costos de desarrollo y mantenimiento.
En el siguiente grfico (Ver Figura 2) podemos observar la evolucin de MBI como Framework para Arquitectura de Aplicaciones Corporativas.
Figura 2: Evolucin de MBI. Volver al texto. MBI brinda soluciones para los siguientes escenarios (Ver Figura 3):
OLTP Aplicaciones Multicanal Ruteo En Lnea de Transacciones Aplicaciones Orientadas a Tareas Integracin de Aplicaciones Empresariales (Enterprise Application Integration [EAI]) Consistencia de Datos (publicacin/suscripcin) Automatizacin de Procesos de Negocio Aplicaciones Compuestas/Agregacin
EDRA (Enterprise Development Reference Architecture), tambin llamada shadowfax es una gua de arquitectura para estandarizar y resolver los problemas que se presentan en el desarrollo de sistemas distribuidos; nos provee de quickstars y plantillas de aplicaciones, y su visin es percibir los beneficios de SOA con .NET sin experimentar grandes complicaciones en su implementacin (Ver Figura 5):
Figura 5: Modelo Conceptual de EDRA. Volver al texto. EDRA utiliza cuatro principios orientadores que ayudan a aliviar la transicin de objetos distribuidos altamente acoplados a servicios basados en estndares y con bajo acoplamiento:
Separacin de la interfaz del servicio y la implementacin interna del servicio para permitir escenarios de instalacin que estn optimizados para tener escalabilidad, fiabilidad, seguridad, rendimiento y disponibilidad. Separacin de la lgica de negocio y las preocupaciones de corte cruzado tales como auditora, monitoreo o disparo de eventos de negocio. (Una preocupacin de corte cruzado [cross-cutting concern] es un tipo de funcionalidad que puede aplicarse a mltiples clases o aplicaciones). Separacin de la lgica de negocios y el transporte subyacente de manera que mltiples transportes se puedan usar para acceder a una nica implementacin de un servicio. Desarrollo de interfases de servicio estables para asegurar la robustez de los servicios instalados.
Microsoft desarroll EDRA despus de hablar con clientes y de revisar las soluciones que fueron desarrolladas para solucionar problemas similares en las plataformas Microsoft .NET y J2EE. EDRA proporciona lo siguiente:
Gua arquitectnica que describe cmo tratar los cuatro principios que preceden. Un framework de aplicacin extensible (EDAF) que incorpora activos reutilizables para facilitar el desarrollo de aplicaciones empresariales usando ASP .NET Web Services, MSMQ, Enterprise Services y, en el futuro, Web Service Enhancements (WSE) e Indigo. Cuatro QuickStarts de aplicaciones que demuestran las capacidades dominantes del framework. Una plantilla de aplicacin que ayuda a implementar un ambiente para poner servicios en ejecucin y construir aplicaciones clientes que utilizan los servicios.
Menos cdigo que mantener Cdigo de base mejorado Mayor esfuerzo en horas de pruebas Modelo ms flexible y extensible Integracin con los Application Blocks corporativos (EIF, CMAB, etc.) Maximizacin del uso de la plataforma
Servicio: unidad bsica de diseo. El servidor los proporciona y el cliente los utiliza. Recursos compartidos: Muchos clientes utilizan los mismos servidores y, a travs de ellos, comparten tanto recursos lgicos como fsicos. Protocolos asimtricos: Los clientes inician conversaciones. Los servidores esperan su establecimiento pasivamente. Transparencia de localizacin fsica de los servidores y clientes: El cliente no tiene por qu saber dnde se encuentra situado el recurso que desea utilizar. Independencia de la plataforma HW y SW que se emplee. Sistemas dbilmente acoplados. Interaccin basada en envo de mensajes. Encapsulamiento de servicios. Los detalles de la implementacin de un servicio son transparentes al cliente. Escalabilidad horizontal (aadir clientes) y vertical (ampliar potencia de los servidores). Integridad: Datos y programas centralizados en servidores facilitan su integridad y mantenimiento. En el modelo usual Cliente/Servidor, un servidor, (daemon en la terminologa sajona basada en sistemas UNIX/LINUX, traducido como "demonio") se activa y espera las solicitudes de los clientes. Habitualmente, programas cliente mltiples comparten los servicios de un programa servidor comn. Tanto los programas cliente como los servidores son con frecuencia parte de un programa o aplicacin mayores. El Esquema de funcionamiento de un Sistema Cliente/Servidor sera:
1. 2. 3. 4. 5.
El El El El El
cliente solicita una informacin al servidor. servidor recibe la peticin del cliente. servidor procesa dicha solicitud. servidor enva el resultado obtenido al cliente. cliente recibe el resultado y lo procesa.
MODELOS CLIENTE/SERVIDOR
Una de las clasificaciones mejor conocidas de las arquitecturas Cliente/Servidor se basa en la idea de planos (tier), la cual es una variacin sobre la divisin o clasificacin por tamao de componentes. Esto se debe a que se trata de definir el modo en que las prestaciones funcionales de la aplicacin sern asignadas, y en qu proporcin, tanto al cliente como al servidor. Dichas prestaciones se deben agrupar entre los tres componentes clsicos para Cliente/Servidor: interfaz de usuario, lgica de negocios y los datos compartidos, cada uno de los
cuales corresponde a un plano. Ni que decir tiene que la mala eleccin de uno u otro modelo puede llegar a tener consecuencias fatales. Dentro de esta categora tenemos las aplicaciones en dos planos (two-tier), tres planos (three-tier) y multi-planos (multi-tier). Dado que este trmino ha sido sobrecargado de significados por cuanto se lo utiliza indistintamente para referirse tanto a aspectos lgicos (Software) como fsicos (Hardware), aqu se esquematizan ambas acepciones.
A NIVEL DE SOFTWARE
Este enfoque o clasificacin es el ms generalizado y el que ms se ajusta a los enfoques modernos, dado que se fundamenta en los componentes lgicos de la estructura Cliente/Servidor y en la madurez y popularidad de la computacin distribuida. Por ejemplo, esto permite hablar de servidores de aplicacin distribuidos a lo largo de una red, y no tiene mucho sentido identificar a un equipo de hardware como servidor, si no ms bien entenderlo como una plataforma fsica sobre la cual pueden operar uno o ms servidores de aplicaciones.
Ventajas:
Presenta una estructura de desarrollo bastante simple ya que el programador maneja un nico ambiente de desarrollo (es ms simple respecto al Cliente/Servidor en tres planos, puesto que reduce una capa de programacin, como se ver ms adelante). Inconvenientes: La gran cantidad de informacin que viaja al cliente congestiona demasiado el trfico de red, lo que se traduce en bajo rendimiento. Por su bajo rendimiento esta estructura tiene un bajo espectro de aplicacin, limitndose a la construccin de sistemas no crticos.
Ventajas: Presenta las mismas ventajas de una arquitectura dos planos con procedimientos almacenados, pero mejora considerablemente el rendimiento sobre sta, dado que reduce el trfico por la red al procesar los datos en la misma base de datos, haciendo viajar slo el resultado final de un conjunto de instrucciones SQL. Inconvenientes: Si bien la complejidad de desarrollo se ve disminuida, se pierde flexibilidad y escalabilidad en las soluciones implantadas. Obliga a basar el peso de la aplicacin en SQL extendido, propios del proveedor de la base de datos que se elija. Debiera considerarse que s bien los procedimientos almacenados (stored procedures), los desencadenantes (triggers) y las reglas (constraint) son tiles, en rigor son ajenos al estndar de SQL
Reduce el trfico de informacin en la red por lo que mejora el rendimiento de los sistemas (especialmente respecto a la estructura en dos planos). Brinda una mayor flexibilidad de desarrollo y de eleccin de plataformas sobre la cual montar las aplicaciones. Provee escalabilidad horizontal y vertical. Se mantiene la independencia entre el cdigo de la aplicacin (reglas y conocimiento del negocio) y los datos, mejorando la portabilidad de las aplicaciones. Los lenguajes sobre los cuales se desarrollan las aplicaciones son estndares lo que hace ms exportables las aplicaciones entre plataformas. Dado que mejora el rendimiento al optimizar el flujo de informacin entre componentes, permite construir sistemas crticos de alta fiabilidad. El mismo hecho de localizar las reglas del negocio en su propio ambiente, en vez de distribuirlos en la capa de interfaz de usuario, permite reducir el impacto de hacer mantenimiento, cambios urgentes de ltima hora o mejoras al sistema. Disminuye el nmero de usuarios (licencias) conectados a la base de datos. Inconvenientes: Dependiendo de la eleccin de los lenguajes de desarrollo, puede presentar mayor complejidad en comparacin con Cliente/Servidor dos planos. Existen pocos proveedores de herramientas integradas de desarrollo con relacin al modelo Cliente/Servidor dos planos, y normalmente son de alto costo.
A NIVEL DE HARDWARE
Esta clasificacin del modelo Cliente/Servidor se basa igualmente en la distribucin de los procesos y elementos entre sus componentes, pero centrndose en la parte fsica del mismo, en el que la administracin de la interfaz grfica se asocia a los clientes PC y la seguridad e integridad de los datos quedan asociados a ambientes mainframe o por lo menos a servidores locales y/o centrales.
La lgica de acceso a datos. Funciones que gestionan todas las interacciones entre el SW y los almacenes de datos (archivos, bases de datos, etc.) incluyendo recuperacin/consulta, actualizacin, seguridad y control de concurrencia. La lgica de presentacin. Funciones que gestionan la interfaz entre los usuarios del sistema y el SW, incluyendo la visualizacin e impresin de formas y reportes, y la posibilidad de validar entradas del sistema. La lgica de negocio o lgica de la aplicacin. Funciones que transforman entradas en salidas, incluyendo desde simples sumas hasta complejos modelos matemticos, financieros, cientficos, de ingeniera, etc. Segn cmo se distribuyan las funciones correspondientes a estas tres lgicas o funciones de un sistema entre cliente, middleware y servidor (los principales componentes de un sistema con arquitectura distribuda) nos podemos encontrar con los siguientes tipos de arquitectura cliente / servidor (conforme a la clebre clasificacin hecha por el Gartner Group):
Presentacin Distribuida. Presentacin remota. Acceso a datos remoto. Lgica o procesamiento distribudas. Bases de datos distribudas. La importancia de esta clasificacin radica en que permite jugar con el ancho de banda de la red y con la capacidad de proceso de los componentes hardware del sistema para repartir entre ellos la carga de proceso de las lgicas de la aplicacin. Seguidamente entraremos en ms detalle sobre estos tipos de arquitectura.
Presentacin distribuda.
El cliente asume parte de las funciones de presentacin de la aplicacin, ya que siguen existiendo programas en el servidor dedicados a esta tarea. El resto de funciones de la aplicacin (negocio, acceso a datos) residen en el servidor. Esta arquitectura se utiliza para construir emuladores de terminal, aplicaciones de control remoto, front ends grficos de aplicaciones que residen en un host, etc. Algunos ejemplos de productos que siguen esta filosofa son VLC, Microsoft Terminal Server, Cytrix Metaframe, emulador de host para sistemas operativos modernos como Windows, etc. La gran ventaja de esta arquitectura es que permite revitalizar sistemas antiguos. As, las aplicaciones antiguas que funcionaban en entornos host pueden ser empleadas desde modernas estaciones de trabajo Windows o Microsoft (que solamente hacen la funcin de trminal del host incrustada en un entorno de trabajo de escritorio moderno). El principal problema es que no se elimina la dependencia del host, no siendo posible la aplicacin de los conceptos de downsizing o rightsizing.
Presentacin remota.
Toda la lgica de negocio y acceso a datos se ejecuta en el servidor, que en esta ocasin no realiza ninguna funcin relacionada con la presentacin. Todas las funciones de presentacin son ejecutadas en el cliente. Un ejemplo de este tipo de aplicaciones son las aplicaciones web, las de los terminales de cajeros automticos, etc. La principal ventaja es que la interfaz de usuario se adapta bien a las capacidades del entorno cliente (en la presentacin distribuda el servidor tena que ejecutar funciones dentro de un entorno que podra no ser el ms apropiado para el cliente). La principal desventaja es que toda la informacin necesaria para la presentacin tiene que circular por la red desde el servidor al cliente.
Las bases de datos distribudas son ms difciles de implementar, y son dependientes del gestor de base de datos (siempre que no existan acuerdos y estndares) La integridad de los datos puede verse comprometida.