DISEÑO DE ARQUITECTURA LOGICA Y FÍSICA PARA APLICACIONES EMPRESARIALES Caché Nodo 1 Nodo 2 Firewall Servidor de recursos estáticos Servidores de bases de datos Nube Router balanceador de carga Nodo 3 Caché Cluster Replicación HTTP, Https, RPC request Historia: Conexion Servidores CDN Servidor JMS Servidor de Documentos Respaldo JMS Caché Cliente Respaldo BD Balanceador de carga Balanceador de carga Respaldo de router 1 OBJETIVOS Proponer una plataforma tecnológica escalable, confiable, segura y de alta disponibilidad de forma que pueda atender eficiente y eficazmente las necesidades de los ciudadanos, instituciones públicas y privadas, y expectativas de modernización institucional.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
DISEÑO DE ARQUITECTURA LOGICA Y FÍSICA
PARA APLICACIONES EMPRESARIALES
Caché
Nodo 1
Nodo 2
Firewall
Servidor de recursos
estáticos
Servidores
de bases de
datos
Nube
Router balanceador
de carga
Nodo 3
Caché
Cluster
Replicación
HTTP, Https, RPC request
Historia:
Conexion
Servidores CDN
Servidor JMS
Servidor de
Documentos Respaldo JMS
CachéCliente
Respaldo BD
Balanceador de
carga
Balanceador de
carga
Respaldo de router
1 OBJETIVOS
Proponer una plataforma tecnológica escalable, confiable, segura y de alta
disponibilidad de forma que pueda atender eficiente y eficazmente las
necesidades de los ciudadanos, instituciones públicas y privadas, y
expectativas de modernización institucional.
Diseño de Arquitectura Lógica y Física para Aplicaciones Empresariales
2 ARQUITECTURA DE HARDWARE
La arquitectura de hardware comprende principalmente a servidores, routers y
switches a cuales conocemos como equipos, además al medio de
comunicación entre estos (la red). Las capacidades de cada equipo, el número
de equipos, las configuraciones y distribución de los mismos impactan
directamente en el rendimiento y la disponibilidad del servicio. La adquisición
de nuevos equipos de última generación (que normalmente son muy caros) no
necesariamente va a mejorar esos dos aspectos.
La arquitectura propuesta se ilustra en el diagrama Nº1 “Arquitectura para la
alta disponibilidad de los servicios”, cuyos componentes detallamos a
continuación.
Diseño de Arquitectura Lógica y Física para Aplicaciones Empresariales
Esquema Nº 1 “Arquitectura para la alta disponibilidad de los servicios-Esquema General”
Caché
Nodo 1
Nodo 2
Firewall
Servidor de recursos
estáticos
Servidores
de bases de
datos
Nube
Router balanceador
de carga
Nodo 3
Caché
Cluster
Replicación
HTTP, Https, RPC request
Historia:
Conexion
Servidores CDN
Servidor JMS
Servidor de
Documentos Respaldo JMS
CachéCliente
Respaldo BD
Balanceador de
carga
Balanceador de
carga
Respaldo de router
Diseño de Arquitectura Lógica y Física para Aplicaciones Empresariales
Esquema Nº 2 “Arquitectura para la alta disponibilidad de los servicios”
LANInternet
Firewall
Servidor de
recursos estáticos
Router Activo
Servidores
CDN
Servidores de
bases de datos
Servidor JMSServidor de
Documentos
Respaldo JMS
Cliente
Router Backup
Clúster SIO
Familias de Clúster
Bases de datosClúster RRCC
Clúster certificación
digital
Clúster AFIS
Clúster PVM y servicios
en línea
Respaldo DB
Diseño de Arquitectura Lógica y Física para Aplicaciones Empresariales
Esquema Nº 3 “Configuración típica de un Clúster”
Respaldo balanceador
de carga
Balanceador
de carga
Nodo 1
cache
Nodo 2
cache
Nodo 3
cache
Cluster
Bases de datos
3.1. Nodos
Para nuestro caso, son los servidores de aplicaciones Java EE sobre los
cuales se ejecutan las aplicaciones Java que son accedidos por los
usuarios a través de protocolos HTTP o HTTPs. Son servidores que
implementan estándares de JEE y físicamente están instalados en una
computadora con capacidades de servidor (por ejemplo de tipo blade).
Los nodos deben tener características similares en hardware y deben
proporcionar los mismos servicios.
3.2. Clúster de servidores
Es una configuración de un conjunto de servidores interrelacionados que
se comportan como si fuera uno solo, orquestados por uno o varios
servidores balanceadores de carga, cuya finalidad es de proporcionar
Diseño de Arquitectura Lógica y Física para Aplicaciones Empresariales
servicios de: Alto rendimiento, alta disponibilidad, balanceo de carga y
escalabilidad.
Ésta configuración permite fácilmente agregar nuevos servidores cuando
se requiera mayores capacidades del servicio, bajar un servidor para su
mantenimiento o repotenciación, todo esto sin afectar la continuidad del
servicio.
Para lo cual, las sesiones deben ser replicadas entre todos los nodos del
clúster, de modo que si uno de ellos deja de estar disponible, otro nodo
comenzará inmediatamente a proporcionar los servicios sin perder la
sesión del usuario. Esta característica se conoce como replicación de
sesiones, es parte de las especificaciones del estándar JEE y que los
servidores de aplicaciones más populares como Glassfish, OAS, WebLogic
y Jboos lo implementan.
Se debe configurar varios clúster de servidores, cada clúster destinado a
un conjunto de aplicaciones que guarden relación
3.3. Balanceadores de carga
Los balanceadores de carga son servidores web convencionales pero con
una configuración particular que le permite distribuir la carga de número de
peticiones HTTP entre los nodos que conforman el clúster.
El balanceador de carga es un elemento muy importante y crítico en este
esquema de alta disponibilidad, en el sentido de que cualquier caída del
mismo puede afectar la disponibilidad del servicio, por ello se requiere que
tenga un servidor de contingencia.
3.4. Servidor JMS:
El uso de este servidor estaría destinado para servicios de mensajería,
ejecutar proceso por lotes (batch), servicios de consulta, para evitar la
complejidad del acceso y transferencia de datos desde un servidor de
aplicaciones vía protocolo HTTP y HTTPs.
Diseño de Arquitectura Lógica y Física para Aplicaciones Empresariales
Un servidor de mensajería por sus propias características de conexión y
protocolos de transmisión de datos, ofrece tiempos de respuesta más
rápidos que un servidor de aplicaciones.
3.5. Servidor de recursos estáticos
Los servidores de recursos estáticos son servidores web convencionales,
no ejecutan sobre algún JVM, cuya finalidad principal es de distribuir los
archivos estáticos como de los tipos: css, js, imágenes, flash y videos que
no cambian con frecuencia.
La estrategia de implementar un servidor para todos los recursos estáticos
de todas las aplicaciones, corresponde a liberar carga a los servidores de
aplicaciones que debieran dedicarse solo a tender peticiones
transaccionales, asimismo se puede aprovechar la reutilización de los
recursos existentes en caché del browser entre distintas aplicaciones ya
que todas invocarán al mismo dominio.
Este tipo de servidores no requiere utilizar cookies, por lo que
recomendamos su desactivación.
3.6. Bases de datos
Los servidores de bases de datos son recursos extremadamente críticos,
debido a que una caída de cualquiera de ellos ocasionará la caída o la
interrupción de servicio de todos los aplicativos que conectan a ella; por lo
tanto, se debe implementar servidores de contingencia sincronizados para
las bases de datos y distribuidos en diferentes locales.
3.7. Router
El router es un recurso crítico, necesariamente debe contar con un
mecanismo de redundancia que se acople a toda la infraestructura
planteada y asegure la alta disponibilidad de los servicios.
Diseño de Arquitectura Lógica y Física para Aplicaciones Empresariales
3 ARQUITECTURA DE SOFTWARE
No es posible definir una única arquitectura de software para las aplicaciones,
ya que dependiendo de los requisitos no funcionales del mismo, la arquitectura
y sus componentes pueden variar. Sin embargo podemos recomendar de que
el desarrollo de nuevas aplicaciones siga plenamente los estándares y
patrones de diseño JEE y aproveche los frameworks que implementan dichos
patrones, además de seguir la guía que se menciona en el documento
“Estándar de arquitectura para el desarrollo y mantenimiento de aplicaciones
web” de la Sub Gerencia de Ingeniería de Software.
La arquitectura de software propuesta es presentada en el esquema Nº 3
“Arquitectura de software para aplicaciones empresariales web”, el cual
propone un cambio muy importante en el JVM, se trata de no usar el JDK
habitual de Oracle y remplazarlo por JRockit, que es un JVM mucho más
eficiente en ambientes de producción de alto rendimiento, muestra un
excelente manejo de recursos como CPU y Memoria, Pool de conexiones, etc.
Una arquitectura de software va de la mano con la arquitectura de hardware
descrita en el apartado anterior, al combinar ambos y no descuidar detalles de
ninguno podemos obtener aplicativos de muy alto rendimiento. No diseñar una
buena arquitectura de software puede poner en riesgo todo un esquema físico
por más eficiente que fuera.
El rendimiento de los aplicativos es un tema complejo que lamentablemente no
se trata de un solo aspecto a solucionar, hay diversas consideraciones que en
ocasiones no le damos importancia pero al final suman como parte del
problema o la solución.
Los errores comunes que se cometen en la parte de software son en primer
lugar no seguir estándares y patrones, desarrollar sobre frameworks que no se
dominan o desarrollar con JDK antiguo.
Diseño de Arquitectura Lógica y Física para Aplicaciones Empresariales
Esquema Nº 4 “Arquitectura de software para aplicaciones empresariales web”
Servidor de aplicaciones
Sistema Operativo
JROCKIT 1.6 (JVM)
Patrones de diseño Estándares JEE
Aplicaciones empresariales de Reniec
Servidor
Cache
Pool de
ConexionesHerramientas
de monitoreo
Sesiones
Full Cache
Sistema Operativo
BrowserJVM
JavaScript
Librerías js
imágenes
Peticiones HTTP, HTTPS
Optimización de vistas
Compresión de datos
Servidor de AplicacionesCliente Comunicación
css
Diseño de Arquitectura Lógica y Física para Aplicaciones Empresariales
4.1. Servidor de Aplicaciones:
4.3.1. JRockit (Java Virtual Machine)
JRockit es una máquina virtual. Es lo que ejecuta los programas
basados en Java. Está orientado principalmente a servidores de alto
desempeño y rendimiento. Originalmente propiedad de Bea Systems,
quien la desarrolló como el core dentro de la plataforma WebLogic y
liberada en la actualidad con una licencia libre para desarrollo y uso en
producción interno (la licencia es la misma que Sun JDK ha tenido
durante varios años).
JRockit es muy eficiente en el manejo y administración de los recursos
como la Memoria y el CPU, asimismo ofrece un conjunto de
herramientas de diagnóstico como Oracle JRockit Real Time, Oracle
JRockit misión control.
JRockit es un JVM dinámicamente optimizado, por lo que tiene su rendimiento en tiempo
de ejecución basado en algoritmos de muestreo y heurística avanzada. Las herramientas
de JRockit toman ventaja de esta rica información y la proveen al usuario con muy poco
impacto en la aplicación que está corriendo. (http://www.a2econ.com/jsite)
4.3.2. Servidor Caché
El servidor cache guarda los objetos y archivos frecuentemente usados
por el servidor de aplicaciones, ayuda en la rapidez de la ejecución de
un proceso, y por ende mejora el tiempo respuesta al cliente.
4.3.3. Pool de conexiones
El pool de conexiones es un conjunto de conexiones a la base de datos
administrados por el servidor de aplicaciones, permite la reutilización de
las conexiones que requiere un determinado aplicativo.
Todos los aplicativos deben configurar un pool de conexiones, con
parámetros adecuados y de acuerdo a su necesidad, los cuales deben
ser ajustados mediante un procedimiento de test de carga del sistema,