Descripción general técnica de Sun Java Enterprise System 5 Update 1

Estructura arquitectónica de Java ES

Los componentes de Java ES admiten la implementación de soluciones de software distribuidas. Para obtener la funcionalidad solicitada en los niveles de rendimiento, disponibilidad, seguridad, escalabilidad y la facilidad de mantenimiento establecidos por los requisitos de la empresa, estas soluciones de software se deben diseñar de forma adecuada.

Hay una serie de dimensiones arquitectónicas relacionadas con el diseño de potentes soluciones empresariales. Estas dimensiones representan perspectivas distintas desde las que se ven las interacciones de los distintos componentes de software utilizados para crear dichos sistemas. En concreto, el diseño de los sistemas distribuidos implica las siguientes tres dimensiones arquitectónicas:

Estas tres dimensiones de la arquitectura de la solución se muestran en la siguiente figura.

Figura 2–1 Dimensiones de la arquitectura de una solución de Java ES

Diagrama que muestra el marco tridimensional como capas lógicas, niveles de servicio de infraestructura y calidades de servicio.

Juntas, estas tres dimensiones representan un único marco que incorpora las relaciones entre los siguientes elementos de software: componentes de aplicación y componentes de infraestructura; todos ellos son necesarios para obtener las funciones de servicio y la calidad de servicio que se exigen a una solución de software.

Las siguientes secciones describen las tres dimensiones individualmente y, a continuación, figura una síntesis de las tres dimensiones en un marco unificado.

Dimensión 1: dependencias de los servicios de infraestructuras

Los componentes del software de interacción de las aplicaciones de empresa distribuidas requieren servicios de infraestructura subyacentes que permitan a los componentes distribuidos comunicarse entre sí, coordinar su trabajo, implementar un acceso seguro, etc. Esta sección explica la función principal desarrollada por una serie de componentes de Java ES al proporcionar estos servicios de infraestructura.

Niveles de servicio de infraestructura

Al diseñar un sistema de software distribuido, con independencia de que esté formado principalmente por los componentes desarrollados de forma personalizada o por los componentes "de fábrica" de Java ES, éste debe incluir una serie de servicios de infraestructura. Estos servicios operan en varios niveles.

La dimensión de las dependencias de los servicios de infraestructura se muestra en la Figura 2–2. Los niveles que se muestran en esta figura son una vista ampliada de la capa de los servicios de infraestructura de la Figura 1–1. La jerarquía de los servicios de la Figura 2–2 y las dependencias existentes entre ellos constituyen una importante dimensión de la arquitectura lógica de la solución. Estos servicios de infraestructura proporcionan los principales motivos para los componentes de servicios del sistema de Java ES (consulte Componentes de servicios del sistema).

En general, los servicios mostrados en la siguiente figura se dividen en tres amplios grupos: servicios de plataforma de nivel inferior, servicios de aplicación de nivel superior y un grupo de servicios de nivel intermedio. Los respectivos nombres proceden de su ubicación entre los otros dos grupos.

Figura 2–2 Dimensión 1: niveles de los servicios de infraestructuras

Diagrama que muestra los niveles de servicio de infraestructura distribuidos, desde los servicios de plataforma de sistema operativo de nivel inferior a los servicios de integración de nivel superior.

Las siguientes descripciones de los diferentes niveles de servicio de infraestructura hacen referencia a los artefactos del lenguaje de programación de Java, según sea pertinente. La Figura 2–2 muestra los niveles en orden ascendente, de menor a mayor:

Los niveles de servicio que se muestran en la Figura 2–2 reflejan una dependencia entre los servicios de infraestructura, desde los servicios del sistema operativo de nivel inferior hasta los servicios de aplicaciones de nivel superior y los servicios de integración. Cada servicio depende normalmente de servicios de niveles inferiores y respalda el funcionamiento de servicios superiores. La Figura 2–2, sin embargo, no representa una distribución en capas estricta de los servicios de infraestructura. Los servicios de nivel superior pueden interactuar directamente con servicios de nivel inferior sin depender de niveles intermedios. Por ejemplo, algunos servicios de tiempo de ejecución pueden depender directamente de servicios de plataforma sin necesitar ninguno de los niveles de servicio intermedios. Además, otros niveles de servicio, como los de supervisión o administración, también podrían incluirse en esta ilustración conceptual.

Componentes de los servicios de infraestructura de Java ES

Los componentes de Java ES despliegan los niveles de los servicios de infraestructura distribuidos que se muestran en la Figura 2–2. La posición de los componentes de servicios del sistema en los diferentes niveles se muestra en la siguiente figura.

Figura 2–3 Componentes de los servicios del sistema de Java ES

Diagrama que muestra la ubicación de los componentes de los servicios del sistema de Java ES en los diferentes niveles de los servicios de infraestructura distribuida.


Nota –

Los cuadros sombreados de la figura hacen referencia a componentes no incluidos en Java ES. Los componentes de colaboración de usuarios no forman parte de Java ES, aunque se implementen a menudo junto con los componentes de Java ES y se utilicen en las arquitecturas de Java ES. Estos componentes forman parte de Sun Java Communications Suite y se hace referencia a ellos en este documento sólo con fines ilustrativos. Además, las plataformas de sistemas operativos no forman parte formalmente de Java ES, pero se incluyen para mostrar las plataformas en las que se pueden utilizar los componentes de Java ES.


Dependencias de los servicios de infraestructura de Java ES

En general, los componentes de los servicios del sistema de Java ES que se muestran en la Figura 2–3 dependen de los componentes situados debajo de ellos en la infraestructura, a la vez que proporcionan respaldo a los componentes que están situados encima de ellos. Estas relaciones de dependencia y compatibilidad son un factor clave para diseñar las arquitecturas lógicas.

En la siguiente tabla, se muestran las relaciones específicas entre los componentes de servicios del sistema de Java ES, enumerados desde el nivel superior al inferior, tal y como se muestra en la Figura 2–3.

Tabla 2–1 Relaciones entre los componentes de los servicios del sistema de Java ES

Componente 

Depende de 

Proporciona compatibilidad a 

Portal Server 

Application Server o Web Server 

Access Manager 

Directory Server 

Si se configuran para usar los canales correspondientes: Calendar Server, Messaging Server , e Instant Messaging [Los componentes de Calendar Server, Messaging Server e Instant Messaging están disponibles como parte de Sun Java Communications Suite.]

Ninguna 

Access Manager 

Application Server o Web Server 

Directory Server 

Portal Server 

Si se configura para el inicio de sesión único: Calendar Server, Messaging Server , e Instant Messaging 

Application Server 

Message Queue 

Directory Server (para los objetos administrados) 

Portal Server 

Access Manager 

Message Queue 

Directory Server (para los objetos administrados) 

Application Server 

Web Server 

Access Manager (para el control de acceso) 

Portal Server 

Access Manager 

Directory Server 

Ninguna 

Portal Server 

Access Manager 

Calendar Server 

Messaging Server  

Instant Messaging 

Service Registry 

Java DB 

Componentes basados en Application Server 

Java DB 

Ninguna 

Service Registry 

Dimensión 2: capas lógicas

Los componentes de software de las aplicaciones de empresa distribuidas que interactúan, se pueden visualizar como residentes en un número de capas lógicas. Estas capas representan la independencia física y lógica de los componentes de software en función de la naturaleza de los servicios que proporcionan.

La dimensión de las capas lógicas de la arquitectura de la solución se muestra en la siguiente figura.

Figura 2–4 Dimensión 2: capas lógicas para aplicaciones de empresa distribuidas

Diagrama que muestra cuatro capas lógicas, de izquierda a derecha: capa de clientes, capa de presentación, capa de servicio de empresas y capa de datos.

En su mayor parte, las arquitecturas de capas lógicas representan la capa de aplicación empresarial distribuida de la Figura 1–1. Los componentes de los servicios del sistema de Java ES se describen en Niveles de servicio de infraestructura para proporcionar asistencia a los componentes de aplicaciones de todas las capas lógicas que se muestran en la Figura 2–4. Aunque los conceptos de las capas lógicas se aplican principalmente a las aplicaciones de empresa personalizadas, también se aplican a los servicios de colaboración proporcionados por los componentes de Sun Java Communications Suite y algunos servicios de portal.

Descripción de capas lógicas

Esta sección proporciona breves descripciones de las cuatro capas lógicas que se muestran en la Figura 2–4. Las descripciones hacen referencia a los componentes de la aplicación implementados utilizando el modelo de componente de plataforma de J2EE. No obstante, otros modelos de componente distribuidos, como CORBA, también son compatibles con esta arquitectura.

Independencia lógica y física

La dimensión arquitectónica que se ilustra en la Figura 2–4 destaca la independencia lógica y física de los componentes, representada mediante 4 capas separadas. Estas capas representan la partición de la lógica de la aplicación en varios equipos en un entorno de red:

Arquitectura en capas aplicada a los componentes del sistema

Tal y como se muestra en la Figura 2–3, los componentes de los servicios de infraestructura de Java ES proporcionan la infraestructura subyacente que permite utilizar soluciones de software distribuidas. Algunas de estas soluciones proporcionan servicios de nivel de aplicación proporcionados por los componentes de Sun Java Communications Suite y algunos componentes de Java ES. Estas soluciones utilizan enfoques de diseño de capas lógicas.

Por ejemplo, los servicios de comunicación mediante correo electrónico proporcionados por Messaging Server se despliegan usando una serie de configuraciones diferenciadas desde el punto de vista lógico de Messaging Server . Cada una de estas diferentes configuraciones proporciona un conjunto de servicios distinto. Al diseñar soluciones de mensajería, estas distintas configuraciones se representan como componentes independientes ubicados en diferentes capas lógicas, como se muestra en la siguiente figura en la que las líneas que conectan los componentes representan las interacciones.


Nota –

La siguiente figura no se ha diseñado para que represente una arquitectura lógica completa. Se han omitido una serie de componentes de Java ES para simplificar la ilustración.


Figura 2–5 Messaging Server : ejemplo de arquitectura en capas

Diagrama que muestra componentes de Messaging Server distribuidos entre las cuatro capas lógicas.


Nota –

Los componentes de comunicaciones no forman parte de Java ES, aunque se implementen a menudo con los componentes de Java y se utilicen en las arquitecturas de Java ES. Estos componentes de comunicaciones forman parte de Sun Java Communications Suite y se hace referencia a ellos en este documento sólo con fines ilustrativos.


La separación lógica de las funciones de Messaging Server en distintas capas permite implementar las configuraciones lógicamente distintas de Messaging Server en varios equipos en un entorno físico. La separación física aporta flexibilidad a la hora de satisfacer los requisitos de calidad del servicio (consulte Dimensión 3: calidad del servicio). Por ejemplo, proporciona diversas soluciones de disponibilidad para distintas instancias y distintas implementaciones de seguridad para funciones de Messaging Server diferentes.

Dimensión 3: calidad del servicio

Las dos dimensiones arquitectónicas anteriores (dependencias de servicio de infraestructura y capas lógicas) hacen referencia en buena parte a los aspectos lógicos de la arquitectura, es decir, qué componentes son necesarios para interactuar de cierto modo con objeto de ofrecer los servicios a los usuarios finales. Otra dimensión igualmente importante de cualquier solución implementada es la capacidad de ésta para cumplir los requisitos de calidad del servicio.

La dimensión de calidad del servicio de una arquitectura de solución destaca las funciones desempeñadas por los componentes de calidad de servicio de Java ES.

Calidades del servicio

A medida que los servicios de Internet y de comercio electrónico se han hecho más importantes para las operaciones de negocios, el rendimiento, la disponibilidad, la seguridad, la escalabilidad y la facilidad de mantenimiento de estos servicios se han convertido en un requisito fundamental de calidad del servicio para las arquitecturas de implementación de alto rendimiento y de gran escala.

Para diseñar una solución de software satisfactoria, debe determinar los requisitos de calidad del servicio pertinentes y diseñar una arquitectura que satisfaga dichos requisitos. Se utiliza una serie de importantes calidades del servicio para especificar los requisitos de calidad del servicio. Estas calidades de servicios se resumen en la siguiente tabla.

Tabla 2–2 Calidades de servicio que afectan a la arquitectura de solución

Calidades de servicio del sistema 

Descripción 

Rendimiento

La medición de la latencia y del tiempo de respuesta con relación a las condiciones de carga de usuarios. 

Disponibilidad

Medida de la frecuencia con que los usuarios finales acceden a los servicios y recursos de un sistema (el tiempo de actividad de un sistema).

Seguridad

Combinación compleja de factores que describe la integridad de un sistema y sus usuarios. La seguridad incluye la seguridad física de los sistemas, seguridad de red, seguridad de datos y aplicaciones (autenticación y autorización de usuarios), así como el transporte seguro de la información. 

Escalabilidad

La capacidad de agregar a lo largo del tiempo funciones a un sistema implementado. La escalabilidad normalmente implica agregar recursos al sistema, pero no debería requerir cambios en la arquitectura de implementación. 

Capacidad latente

La capacidad de un sistema para gestionar el uso de carga máxima inusual sin recursos adicionales. 

Facilidad de mantenimiento

La facilidad con que un sistema implementado puede mantenerse, incluidas tareas tales como la supervisión del sistema, la reparación de los problemas que surjan y la actualización de los componentes de hardware y software. 

La dimensión de calidad del servicio influye en gran medida en la arquitectura de implementación de una solución: cómo se implementan en el entorno físico los componentes de la aplicación y componentes de infraestructura.

Las calidades del servicio que afectan a la arquitectura de implementación están estrechamente interrelacionadas. Los requisitos para una calidad de sistema afectan a menudo al diseño de otras calidades de servicio. Por ejemplo, unos mayores niveles de seguridad podrían afectar al rendimiento, que a su vez podría afectar a la disponibilidad. La integración de equipos adicionales para solucionar problemas de disponibilidad mediante la redundancia a menudo afecta a los costes de mantenimiento (facilidad de mantenimiento).

Al diseñar arquitecturas de implementación que satisfagan las necesidades y las limitaciones de negocios, es importante conocer el modo de interrelación de las calidades del servicio y las concesiones que se deben realizar.

Componentes de calidad del servicio de Java ES

Varios componentes de Java ES se utilizan principalmente para mejorar la calidad de los servicios proporcionados por los componentes de los servicios del sistema o por los componentes de aplicaciones distribuidas. A menudo, estos componentes de software se utilizan junto con los componentes de hardware como, por ejemplo, los equilibradores de carga y los servidores de seguridad.

Los componentes de calidad del servicio de Java ES, de los que se realiza una introducción en Componentes de calidad del servicio, se resumen a continuación:

La siguiente tabla muestra los componentes de calidad del servicio de Java ES más importantes desde una perspectiva arquitectónica, junto con las calidades del sistema a las que más afectan.

Tabla 2–3 Componentes de calidad de servicio y calidades de sistema afectadas

Componente 

Calidades de sistema afectadas 

Almacén de sesión de alta disponibilidad 

Disponibilidad 

Monitoring Console 

Facilidad de mantenimiento 

Portal Server Secure Remote Access

Seguridad 

Escalabilidad 

Sun Cluster 

Disponibilidad 

Escalabilidad 

Sun Cluster Geographic Edition 

Disponibilidad 

Escalabilidad 

Web Proxy Server 

Seguridad 

Rendimiento 

Escalabilidad 

Software de Sun Cluster

El software de Sun Cluster proporciona servicios de alta disponibilidad y escalabilidad para los componentes de Java ES y para las aplicaciones a las que proporciona compatibilidad la infraestructura de Java ES. Un clúster es un conjunto de equipos que no están firmemente acoplados y que, en conjunto, ofrecen una vista de cliente única de los servicios, los recursos del sistema y los datos. Internamente, el clúster utiliza equipos redundantes, interconexiones, almacenamiento de datos e interfaces de red para ofrecer alta disponibilidad en datos y servicios basados en clúster.

El software de Sun Cluster supervisa continuamente el estado de los nodos miembros y de otros recursos del clúster. En caso de fallo, el software de Sun Cluster interviene para iniciar la conmutación por error de los recursos que supervisa y utiliza la redundancia interna para proporcionar un acceso prácticamente continuo a estos recursos.

Los paquetes de servicios de datos de Sun Cluster (a veces denominados "agentes de Sun Cluster") están disponibles para todos los componentes de los servicios del sistema Java ES. También puede escribir agentes para componentes de aplicaciones personalizados.

Dado el control que permite el software de Sun Cluster, también puede ofrecer servicios escalables. Aprovechando el sistema de archivos global del clúster y la capacidad de que haya varios nodos en un clúster para ejecutar servicios de aplicaciones e infraestructura, la creciente demanda de estos servicios puede equilibrarse en varias instancias simultáneas de los servicios. Por lo tanto, si se configura correctamente, el software de Sun Cluster puede proporcionar alta disponibilidad y escalabilidad en una aplicación de empresa distribuida.

Debido a la redundancia necesaria para poder usar los entornos de Sun Cluster, la inclusión de Sun Cluster en una solución aumenta sustancialmente el número de equipos y vínculos de red necesarios en el entorno físico.

A diferencia de los servicios proporcionados por otros componentes de Java ES, los servicios de disponibilidad de Sun Cluster son servicios "de igual a igual" distribuidos. Por lo tanto, el software de Sun Cluster debe instalarse en cada equipo de un clúster.

Sun Cluster Geographic Edition proporciona una extensión del software de Sun Cluster. Esta aplicación protege las aplicaciones frente a interrupciones inesperadas mediante el uso de varios clústeres separados geográficamente y una infraestructura que repite los datos entre los clústeres.


Nota –

Sun Cluster y Sun Cluster Geographic Edition sólo se admiten en el sistema operativo SolarisTM (SO Solaris).


Síntesis de las tres dimensiones arquitectónicas

Cuando se visualizan juntas, las tres dimensiones arquitectónicas que se muestran en la Figura 2–1 y que se describen en las secciones anteriores proporcionan una estructura para el diseño de soluciones de software distribuidas. Las tres dimensiones (dependencias de servicios de infraestructura, capas lógicas y calidad del servicio) destacan la función desempeñada por los componentes de Java ES en las arquitecturas de soluciones.

Cada dimensión representa una perspectiva arquitectónica diferente. Cada una de las arquitecturas de soluciones deberá tomar todas ellas en cuenta. Por ejemplo, los componentes distribuidos en cada capa lógica de una arquitectura de soluciones (dimensión 2) deberán estar apoyados por los componentes de infraestructura adecuados (dimensión 1) y los componentes de calidad de servicio adecuados (dimensión 3).

Igualmente, cualquier componente de una arquitectura de soluciones desempeña distintas funciones con respecto a las distintas dimensiones arquitectónicas. Por ejemplo, Directory Server se puede considerar como un componente de servidores en la capa de datos (dimensión 2) y como un proveedor de servicios de persistencia (dimensión 1). Debido al carácter central de Directory Server con respecto a estas dos dimensiones, los problemas de calidad del servicio (dimensión 3) son vitales para este componente de Java ES. Un fallo en Directory Server afectaría de forma significativa a un sistema empresarial, por lo que el diseño de alta disponibilidad de este componente es muy importante. Como Directory Server se utiliza para almacenar información de usuario y configuración confidencial, es también muy importante el diseño de la seguridad.

La interrelación de las tres dimensiones con respecto a los componentes de Java ES afecta al diseño de arquitecturas lógicas de soluciones y al diseño de arquitecturas de implementación de soluciones.

En esta guía no se describen metodologías de diseño detalladas basadas en la estructura arquitectónica representada por Estructura arquitectónica de Java ES. Sin embargo, la estructura arquitectónica tridimensional destaca aspectos de diseño que se deben conocer al implementar soluciones de software basadas en Java Enterprise System.