Sei sulla pagina 1di 31

Arquitectura

Web
Introduccin
Concepto de Arquitectura en Desarrollo Software
Concepcin desde RUP
Arquitectura fsica
Distribucin de nodos en la red
Mapeo componente software nodo computacional Mapeo componente software nodo computacional
Concepto de Arquitectura software Moderno
Patrones de diseo de arquitectura
Separacin de responsabilidades
No existe forma de representar arquitectura
software con las herramientas actuales (RUP-UML)
Aplicaciones Web
con Java
Fuerte apuesta por parte del sector privado:
Sun Microsystems. Extensiones J2EE
BEA Systems con Weblogic
IBM con WebSphere
Netscape (y Sun) con iPlanet Netscape (y Sun) con iPlanet
Orin Oc4J Oracle 9IAS
Fuerte apuesta del mundo opensource!
www.apache.org Desarrollo del servidor web
apache, el ms difundido del mundo.
Jakarta.apache.org Conjunto de frameworks y
clases de utilidad como apoyo al desarrollo de
aplicaciones basadas en java/J2EE.
www.jboss.org Desarrollo del contenedor de EJBs
Jboss. Gratuito y muy efectivo.
Evolucin de
Modelos Arquitectnicos
Modelo 1
Modelo 1.5
Servlets/JSPs
MVC Model
Modelo 2
Modelo 2X
MVC Model
Multicanalidad
Modelo de Arquitectura 1
Aplicaciones CGI
Las ms primitivas
Aplicaciones Web CGI
Presentacin, negocio y persistencia mezclados
El estado se almacena en el cliente y cada peticin El estado se almacena en el cliente y cada peticin
supone una ejecucin completa independiente de
estado (Transacction Script)
Browser
Script
CGI
Database
Modelo de Arquitectura 1.5
JSP y Servlets
Separacin de responsabilidades:
JSPs llevan la lgica de presentacin
(navegabilidad, visualizacin, etc.)
Beans incrustados asumen las responsabilidades de
negocio y datos negocio y datos
Modelo de Arquitectura 2
MVC
Evolucin del modelo 1.5
Incorporacin del patrn de diseo MVC.
Controlador: Navegacin
Negocio y Datos: Beans
Presentacin: JSPs
Modelo de Arquitectura 2
MVC con Struts
Struts es la implementacin del MVC que
aporta Jakarta para aplicaciones web java.
http://jakarta.apache.org/struts
Modelo de Arquitectura 2X
Aplicaciones Multicanal
Evolucin del modelo
2 para construir
aplicaciones
multicanal.
Implementacin de
referencia STXX referencia STXX
(extiende Struts)
http://stxx.sourceforg
e.net/
Soluciones basadas en
XML y XSLTs.
Aspectos Generales en
Arquitectura WEB
Escalabilidad
Separacin de responsabilidades
Portabilidad
Componentizacin de los servicios de Componentizacin de los servicios de
infraestructura
Gestin de la sesin del usuario, cacheado
de entidades
Aplicacin de patrones de diseo
Escalabilidad
Importancia?
Caracterstica principal apps WEB:
Posible incremento vertiginoso del nmero de usuarios
Es importante:
El correcto dimensionamiento de la aplicacin El correcto dimensionamiento de la aplicacin
La adaptabilidad del sistema ante el incremento de
demanda.
Varias opciones:
Escalabilidad Horizontal
Escalabilidad Vertical
Cluster de servidores
Escalabilidad
Horizontal
Clonamos el sistema y balanceamos la
carga.
Sistema
Sistema
B
a
l
a
n
c
e
a
d
o
r
Usuarios
Internet
Sistema Sistema
B
a
l
a
n
c
e
a
d
o
r
Escalabilidad
Horizontal. Balanceador HW
Distribuye por algoritmos predeterminados (Round Robin,
LRU, etc.) las peticiones HTTP entre los distintos clones del
sistema
La seleccin del clon es por tanto aleatoria
Problema: No garantiza que diferentes peticiones de un Problema: No garantiza que diferentes peticiones de un
mismo usuario sean servidas por el mismo clon del sistema
-> No hay mantenimiento de la sesin del usuario en
servidor -> Condiciona el Diseo!.
La sesin la debe mantener el desarrollador por otros
medios:
Cookies
En base de datos
Al ser un proceso HW, es MUY rpido.
Escalabilidad
Horizontal. Balanceador SW
Examinan el paquete a nivel del protocolo
HTTP para garantizar el mantenimiento de la
sesin de usuario.
Distintas peticiones del mismo usuario son Distintas peticiones del mismo usuario son
servidas por el mismo clon del servidor.
Ms lentos que los balanceadores HW
Normalmente son soluciones baratas.
Ej., mdulo mod_jk de apache.
Escalabilidad
Horizontal. Balanceador HW HTTP
Dispositivos HW que examinan la peticin a
nivel de paquete HTTP.
Trmino medio entre las dos anteriores.
Garantizan el mantenimiento de sesin. Garantizan el mantenimiento de sesin.
Ms rpidos que los SW pero menos que los
HW.
Escalabilidad
Vertical
La separacin lgica entre capas se implementar de
forma que permita la separacin fsica de las
mismas.
Es necesario un Middleware entre las capas para
permitir la comunicacin remota.
Capa 1
Mquina 1
Capa 2
Mquina 1
Capa n
Mquina 1
Sistema completo
Mquina
Escalabilidad
Custers de Servidores
Habituales en los servidores de aplicaciones
comerciales (Weblogic, WebSphere, iPlanet, etc.).
Dependiendo de cmo se aplique puede clasificarse
como horizontal o vertical.
Distribuye y escala el sistema de modo transparente
a usuario y administrador.
Garantiza que sea cual sea la mquina que sirva la
peticin http tendr acceso a la sesin del usuario
(Replicacin de sesin)
La replicacin de sesin es MUY costosa, produce
bajo rendimiento del sistema.
Entonces
Qu hacer con la sesin?
Primeras tendencias eran evitar apoyarse en
la sesin (objeto Session): slo haba
balanceadores hw.
Hoy en da, est aceptado y se fomenta su Hoy en da, est aceptado y se fomenta su
uso.
OJO! Es MUY delicado. El uso excesivo del
objeto session puede acarrear problemas de
rendimiento, puesto que los objetos en
sesin no se liberan hasta que no caduque la
misma.
Separacin
de Responsabilidades
Premisa base para la separacin de capas
Distintas Responsabilidades no deben ser delegadas
en la misma clase (separacin de incumbencias)
Tendencia actual en aplicaciones WEB:
Arquitectura n-capas Arquitectura n-capas
El modelo ms bsico es el de tres capas:
Capa de presentacin
Capa de negocio
Capa de persistencia
Independencia de capas
Separacin
de Responsabilidades Evolucin
APLICACIN
APLICACIONES MAINFRAME APLICACIONES MAINFRAME APLICACIONES MAINFRAME APLICACIONES MAINFRAME
SERVIDOR
APLICACIN
nica capa fsica y lgica nica capa fsica y lgica nica capa fsica y lgica nica capa fsica y lgica
Separacin
de Responsabilidades Evolucin
PRESENTACIN
Y NEGOCIO
CLIENTE CLIENTE CLIENTE CLIENTE
APLICACIONES CLIENTE APLICACIONES CLIENTE APLICACIONES CLIENTE APLICACIONES CLIENTE - -- - SERVIDOR SERVIDOR SERVIDOR SERVIDOR
NEGOCIO Y
ACCESO A DATOS
Separacin Lgica y Fsica de la Separacin Lgica y Fsica de la Separacin Lgica y Fsica de la Separacin Lgica y Fsica de la
interfaz de usuario interfaz de usuario interfaz de usuario interfaz de usuario
SERVIDOR SERVIDOR SERVIDOR SERVIDOR
Separacin
de Responsabilidades Evolucin
Presentacin
Arquitectura basada en Transaction
Scripts (CGIs, Modelo 1)
Interfaz WEB HTML
+ lenguaje de script
PRIMERAS APLICACIONES WEB PRIMERAS APLICACIONES WEB PRIMERAS APLICACIONES WEB PRIMERAS APLICACIONES WEB
Negocio +
acceso a datos
Presentacin + lenguaje de script
Separacin
de Responsabilidades Evolucin
Presentacin
APLICACIONES 3 CAPAS APLICACIONES 3 CAPAS APLICACIONES 3 CAPAS APLICACIONES 3 CAPAS
JSPs, HTML,
lgica de
presentacin
Negocio
Persistencia
Lgica de
negocio,
procesos neg.
Componentes de
acceso a datos
Separacin
de Responsabilidades Evolucin
Modelo de Brown ncapas Modelo de Brown ncapas Modelo de Brown ncapas Modelo de Brown ncapas
JSPs, HTML,
lgica de
presentacin Presentacin
Lgica de
negocio,
procesos neg.
Componentes de
acceso a datos
Negocio
Persistencia
Separacin
de Responsabilidades Capa de
presentacin
Comprende las responsabilidades de
lgica de presentacin:
Navegabilidad del sistema
Validacin de datos de entrada
Formateo de los datos de salida
Internacionalizacin
Renderizado de presentacin
Etc.
Separacin
de Responsabilidades Capa de
negocio
Comprende las responsabilidades de
lgica de negocio (o dominio) del
sistema.
Resultado del anlisis funcional:
Conjunto de reglas de negocio que
abstraen el mundo real.
La capa de negocio ha de ser
independiente de la capa de
presentacin y viceversa (en la
medida de lo posible).
Separacin
de Responsabilidades Capa de
persistencia
Comprende las responsabilidades de lgica
de persistencia de las entidades que maneja
el sistema en desarrollo.
Insercin Insercin
Eliminacin
Actualizaciones
Bsquedas
Etc.
No tiene porqu tratarse necesariamente de
una base de datos relacional.
Portabilidad
Una aplicacin web debe poder
adaptarse a las distintas arquitecturas
fsicas posibles en el despliegue.
Las tareas de adaptacin a un nuevo Las tareas de adaptacin a un nuevo
entorno deben limitarse al mbito de
la configuracin, no del desarrollo.
Supuesto de ejemplo: Cliente reacio a
las tecnologas de componentes J2EE
(EJBs) por costes, rendimiento o
simplemente, moda.
Componentizacin de los servicios de
infraestructura
Servicio de infraestructura?: Componentes
independientes del dominio.
Rompen aparentemente la separacin vertical de
capas.
Dan lugar a la capa de infraestructura.
Ej.:
Servicio de Log
Pool JDBC
Sistema de configuracin
Gestor de permisos de acceso
Etc.
Gestin de la sesin del usuario
Aspecto muy delicado del sistema
Cacheado de entidades en
Sesin de usuario Sesin de usuario
Contexto de la aplicacin
Caducidad de la informacin
Refresco de datos
Rendimiento del sistema. Consumo de
recursos del sistema.
Aplicacin de patrones de Diseo
Definicin de patrn de diseo
GOF 94 Design Patterns
Adems de una solucin vlida para
problemas habituales, son un medio de problemas habituales, son un medio de
entendimiento que facilita la comunicacin
entre analista y desarrollador.
Aceleran el desarrollo de Software
Facilitan el mantenimiento
En proceso de integracin en las
herramientas CASE (Rose, Together, etc.).

Potrebbero piacerti anche