Title: Arquitectura Web
1ArquitecturaWeb
2IntroducciĆ³n
- Concepto de Arquitectura en Desarrollo Software
- ConcepciĆ³n desde RUP
- Arquitectura fĆsica
- DistribuciĆ³n de nodos en la red
- Mapeo componente software nodo computacional
- Concepto de Arquitectura software Moderno
- Patrones de diseƱo de arquitectura
- SeparaciĆ³n de responsabilidades
- No existe forma de representar arquitectura
software con las herramientas actuales (RUP-UML)
3Aplicaciones 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
- Fuerte apuesta del mundo opensource!
- www.apache.org Desarrollo del servidor web
apache, el mƔs 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.
4EvoluciĆ³n de Modelos ArquitectĆ³nicos
- Modelo 1
- Modelo 1.5
- Modelo 2
- Modelo 2X
Servlets/JSPs
MVC Model
Multicanalidad
5Modelo de Arquitectura 1Aplicaciones CGI
- Las mƔs primitivas
- Aplicaciones Web CGI
- PresentaciĆ³n, negocio y persistencia mezclados
6Modelo de Arquitectura 1.5JSP y Servlets
- SeparaciĆ³n de responsabilidades
- JSPs llevan la lĆ³gica de presentaciĆ³n
(navegabilidad, visualizaciĆ³n, etc.) - Beans incrustados asumen las responsabilidades de
negocio y datos -
7Modelo de Arquitectura 2MVC
- EvoluciĆ³n del modelo 1.5
- IncorporaciĆ³n del patrĆ³n de diseƱo MVC.
- Controlador NavegaciĆ³n
- Negocio y Datos Beans
- PresentaciĆ³n JSPs
8Modelo de Arquitectura 2MVC con Struts
- Struts es la implementaciĆ³n del MVC que aporta
Jakarta para aplicaciones web java. - http//jakarta.apache.org/struts
9Modelo de Arquitectura 2XAplicaciones Multicanal
- EvoluciĆ³n del modelo 2 para construir
aplicaciones multicanal. - ImplementaciĆ³n de referencia STXX (extiende
Struts) - http//stxx.sourceforge.net/
- Soluciones basadas en XML y XSLTs.
10Aspectos Generales enArquitectura WEB
- Escalabilidad
- SeparaciĆ³n de responsabilidades
- Portabilidad
- ComponentizaciĆ³n de los servicios de
infraestructura - GestiĆ³n de la sesiĆ³n del usuario, cacheado de
entidades - AplicaciĆ³n de patrones de diseƱo
11EscalabilidadImportancia?
- CaracterĆstica principal apps WEB
- Posible incremento vertiginoso del nĆŗmero de
usuarios - Es importante
- El correcto dimensionamiento de la aplicaciĆ³n
- La adaptabilidad del sistema ante el incremento
de demanda. - Varias opciones
- Escalabilidad Horizontal
- Escalabilidad Vertical
- Cluster de servidores
12EscalabilidadHorizontal
- Clonamos el sistema y balanceamos la carga.
Sistema
Sistema
Usuarios Internet
Sistema
Sistema
13EscalabilidadHorizontal. Balanceador HW
- Distribuye por algoritmos predeterminados (Round
Robin, LRU, etc.) las peticiones HTTP entre los
distintos clones del sistema - La selecciĆ³n del clon es por tanto aleatoria
- Problema No garantiza que diferentes peticiones
de un mismo usuario sean servidas por el mismo
clon del sistema -gt No hay mantenimiento de la
sesiĆ³n del usuario en servidor -gt Condiciona el
DiseƱo!. - La sesiĆ³n la debe mantener el desarrollador por
otros medios - Cookies
- En base de datos
- Al ser un proceso HW, es MUY rƔpido.
14EscalabilidadHorizontal. Balanceador SW
- Examinan el paquete a nivel del protocolo HTTP
para garantizar el mantenimiento de la sesiĆ³n de
usuario. - Distintas peticiones del mismo usuario son
servidas por el mismo clon del servidor. - MƔs lentos que los balanceadores HW
- Normalmente son soluciones baratas.
- Ej., mĆ³dulo mod_jk de apache.
15EscalabilidadHorizontal. Balanceador HW HTTP
- Dispositivos HW que examinan la peticiĆ³n a nivel
de paquete HTTP. - TĆ©rmino medio entre las dos anteriores.
- Garantizan el mantenimiento de sesiĆ³n.
- MƔs rƔpidos que los SW pero menos que los HW.
16EscalabilidadVertical
- La separaciĆ³n lĆ³gica entre capas se implementar
de forma que permita la separaciĆ³n fĆsica de las
mismas. - Es necesario un Middleware entre las capas para
permitir la comunicaciĆ³n remota.
17EscalabilidadCusters de Servidores
- Habituales en los servidores de aplicaciones
comerciales (Weblogic, WebSphere, iPlanet, etc.). - Dependiendo de cĆ³mo 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 mƔquina que sirva
la peticiĆ³n http tendrĆ” acceso a la sesiĆ³n del
usuario (ReplicaciĆ³n de sesiĆ³n) - La replicaciĆ³n de sesiĆ³n es MUY costosa, produce
bajo rendimiento del sistema.
18EntoncesQuĆ© hacer con la sesiĆ³n?
- Primeras tendencias eran evitar apoyarse en la
sesiĆ³n (objeto Session) sĆ³lo habĆa balanceadores
hw. - Hoy en dĆa, 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 sesiĆ³n no se liberan
hasta que no caduque la misma.
19SeparaciĆ³n de Responsabilidades
- Premisa base para la separaciĆ³n de capas
- Distintas Responsabilidades no deben ser
delegadas en la misma clase (separaciĆ³n de
incumbencias) - Tendencia actual en aplicaciones WEB
- Arquitectura n-capas
- El modelo mƔs bƔsico es el de tres capas
- Capa de presentaciĆ³n
- Capa de negocio
- Capa de persistencia
- Independencia de capas
20SeparaciĆ³n de Responsabilidades EvoluciĆ³n
Ćnica capa fĆsica y lĆ³gica
21SeparaciĆ³n de Responsabilidades EvoluciĆ³n
- APLICACIONES CLIENTE - SERVIDOR
CLIENTE
SERVIDOR
SeparaciĆ³n LĆ³gica y FĆsica de la interfaz de
usuario
22SeparaciĆ³n de Responsabilidades EvoluciĆ³n
23SeparaciĆ³n de Responsabilidades EvoluciĆ³n
24SeparaciĆ³n de Responsabilidades EvoluciĆ³n
25SeparaciĆ³n de Responsabilidades Capa de
presentaciĆ³n
- Comprende las responsabilidades de lĆ³gica de
presentaciĆ³n - Navegabilidad del sistema
- ValidaciĆ³n de datos de entrada
- Formateo de los datos de salida
- InternacionalizaciĆ³n
- Renderizado de presentaciĆ³n
- Etc.
26SeparaciĆ³n de Responsabilidades Capa de negocio
- Comprende las responsabilidades de lĆ³gica de
negocio (o dominio) del sistema. - Resultado del anƔlisis funcional
- Conjunto de reglas de negocio que abstraen el
mundo real. - La capa de negocio ha de ser independiente de la
capa de presentaciĆ³n y viceversa (en la medida de
lo posible).
27SeparaciĆ³n de Responsabilidades Capa de
persistencia
- Comprende las responsabilidades de lĆ³gica de
persistencia de las entidades que maneja el
sistema en desarrollo. - InserciĆ³n
- EliminaciĆ³n
- Actualizaciones
- BĆŗsquedas
- Etc.
- No tiene porquƩ tratarse necesariamente de una
base de datos relacional.
28Portabilidad
- Una aplicaciĆ³n web debe poder adaptarse a las
distintas arquitecturas fĆsicas posibles en el
despliegue. - Las tareas de adaptaciĆ³n a un nuevo entorno deben
limitarse al Ć”mbito de la configuraciĆ³n, no del
desarrollo. - Supuesto de ejemplo Cliente reacio a las
tecnologĆas de componentes J2EE (EJBs) por
costes, rendimiento o simplemente, moda.
29ComponentizaciĆ³n de los servicios de
infraestructura
- Servicio de infraestructura? Componentes
independientes del dominio. - Rompen aparentemente la separaciĆ³n vertical de
capas. - Dan lugar a la capa de infraestructura.
- Ej.
- Servicio de Log
- Pool JDBC
- Sistema de configuraciĆ³n
- Gestor de permisos de acceso
- Etc.
30GestiĆ³n de la sesiĆ³n del usuario
- Aspecto muy delicado del sistema
- Cacheado de entidades en
- SesiĆ³n de usuario
- Contexto de la aplicaciĆ³n
- Caducidad de la informaciĆ³n
- Refresco de datos
- Rendimiento del sistema. Consumo de recursos del
sistema.
31AplicaciĆ³n de patrones de DiseƱo
- DefiniciĆ³n de patrĆ³n de diseƱo
- GOF 94 Design Patterns
- AdemĆ”s de una soluciĆ³n vĆ”lida para problemas
habituales, son un medio de entendimiento que
facilita la comunicaciĆ³n entre analista y
desarrollador. - Aceleran el desarrollo de Software
- Facilitan el mantenimiento
- En proceso de integraciĆ³n en las herramientas
CASE (Rose, Together, etc.).
32WorkShop!
- Desarrollo de un contador de visitas. Empleo de
los objetos de sesiĆ³n y contexto. - Descargarse de la web el entorno de trabajo 0.5
(Contador de visitas de cada usuario!). - Descomprimir en el directorio del curso, compilar
y desplegar. - Probar contador accediendo mediante el navegador
a - http//localhost8080/arqui-java
- Abrir el fichero index.jsp y examinar el cĆ³digo
33WorkShop (II)!
- Modificar el contador de visitas para que cuente
las de TODOS los usuarios que accedan a la pƔgina - Editar el fichero index.jsp.
- En Lugar de colocar y recuperar el atributo
contador de la sesiĆ³n, hacerlo del contexto. - Ej. Sustituir
- session.getAttribute("contador")
- Por
- session.getServletContext().getAttribute("contador
") - Compilar y desplegar con Ant, y probar la
aplicaciĆ³n en - http//localhost8080/arqui-java