Está en la página 1de 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
 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
 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
Servlets/JSPs

 Modelo 1.5
MVC Model
 Modelo 2

Multicanalidad
 Modelo 2X
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
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
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
(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
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
 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

Usuarios Balanceador
Internet
Sistema Sistema
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
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
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.
 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 Capa 2
Sistema completo Capa n

Mquina 1 MquinaMquina
1 Mquina 1
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
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
 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

APLICACIONES
APLICACIONES MAINFRAME

APLICACIN

SERVIDOR
nica capa fsica y lgica
Separacin
de Responsabilidades Evolucin

APLICACIONES
APLICACIONES CLIENTE - SERVIDOR

PRESENTACIN
CLIENTE Y NEGOCIO

NEGOCIO Y
SERVIDOR ACCESO A DATOS

Separacin Lgica y Fsica de la


interfaz de usuario
Separacin
de Responsabilidades Evolucin

PRIMERAS
PRIMERAS APLICACIONES WEB
Arquitectura basada en Transaction
Scripts (CGIs, Modelo 1)

Interfaz WEB HTML


Presentacin + lenguaje de script

Negocio +
acceso a datos
Separacin
de Responsabilidades Evolucin

APLICACIONES
APLICACIONES 3 CAPAS

JSPs, HTML,
lgica de
Presentacin presentacin

Lgica de
Negocio negocio,
procesos neg.

Persistencia Componentes de
acceso a datos
Separacin
de Responsabilidades Evolucin

Modelo
Modelo de Brown ncapas

JSPs, HTML,
lgica de
Presentacin presentacin

Negocio Lgica de
negocio,
procesos neg.

Persistencia
Componentes de
acceso a datos
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
 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
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
 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
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.).

También podría gustarte