Arquitectura de Aplicaciones Web - Consideraciones de diseño
Introducción
El núcleo de una aplicación Web es la lógica desplegada en
el servidor. De hecho lo que vemos en el navegador, puede considerarse como una
extensión o capa de presentación de la aplicación Web que realmente se está ejecutando
en el servidor.
Por regla general, una aplicación Web está formada por tres
capas:
- Capa
de presentación: es la que ve el usuario (también se la denomina
"capa de usuario"), presenta la aplicación al usuario en forma
de página Web, le comunica la información y captura la información del
usuario en un mínimo de proceso (realiza un filtrado previo para comprobar
que no hay errores de formato). También es conocida como interfaz Web y
debe tener la característica de ser "amigable" (entendible y
fácil de usar) para el usuario. Esta capa se comunica únicamente con la
capa de negocio.
- Capa
de negocio: es donde se reciben las peticiones del usuario y se
envían las respuestas tras el proceso. Se denomina capa de negocio (e
incluso de lógica del negocio) porque es aquí donde se establecen todas
las reglas que deben cumplirse. Esta capa se comunica con la capa de
presentación, para recibir las solicitudes y presentar los resultados, y
con la capa de datos, para solicitar al gestor de base de datos almacenar o recuperar datos de él.
- Capa
de datos o capa de acceso a datos: es la encargada de acceder a los datos de negocio.
Esta capa realiza todo el almacenamiento de datos, recibe solicitudes de
almacenamiento o recuperación de información desde la capa de negocio.
Consideraciones de diseño
- Divida
la estructura de su aplicación en capas lógicas. Divida los componentes de
su aplicación de forma lógica en capa de presentación, capa de negocio y
capa de datos. Esto facilita no solo las tareas de desarrollo (cada capa
es desarrollada por el equipo o desarrolladores que más experiencia y
habilidades tienen) sino además la escalabilidad de la aplicación
(posibilidad de crecer bajo demanda), la monitorización (observar el
comportamiento del servidor y las aplicaciones desplegadas) y optimizar el
rendimiento de cada capa por separado
- Acople
las capas lo menos posible. Esto se consigue diseñando interfaces que
permitan dar servicio a las capas que se comunican con una capa concreta.
Desacoplar significa que cada capa en su interfaz, concepción y
funcionamiento debe ser de manera ideal totalmente independiente de las
otras. El uso de capas desacopladas puede ayudar incluso a sustituir una
capa completa por otra mejorada con la misma interfaz o el adoptar nuevas
tecnologías en una capa concreta.
- Reduzca
el tráfico entre los ordenadores clientes y el servidor. Cuando se diseña
una aplicación Web, un objetivo importante es reducir el tráfico entre los
servidores y los ordenadores clientes e incluso entre los servidores de
una capa y los de otra. Esto se consigue con técnicas tales como el caché
con el objetivo de que no se genere tráfico siempre que se demande del
servidor la misma información
- Considere
el uso de logging en la aplicación Web. Los logs son muy importantes
porque ayudan a descubrir errores ocultos o inesperados en las
aplicaciones así como realizar estadísticas de funcionamiento de la
aplicación. Tenga en cuenta al configurar un log el nivel de detalle
requerido (no hay que olvidar que el uso de logging consume recursos del
servidor). Por ejemplo, un log de desarrollo trazará la mayor cantidad de
información que nos permita depurar las aplicaciones, mientras que un log
de Producción trazará solo errores graves o estadísticas.
- Evite
el bloqueo de la interfaz de usuario durante tareas de larga duración. Las
aplicaciones Web por lo general, se ejecutan de manera sincrónica: o sea
el usuario demanda una información, la información se le pide al servidor
y este responde en un plazo de tiempo razonable mientras el usuario recibe
algún tipo de feedback indicándole que espere. Si por necesidades de
negocio, el proceso supera el tiempo razonable que el usuario debe
esperar, considere la implementación de mecanismos asincrónicos. Estos
mecanismos devuelven el control de la interfaz de usuario y la actualizan
con un nuevo estado una vez que el proceso de larga duración ha concluido.
- Considere
la autenticación de los usuarios. En una gran mayoría de aplicaciones Web,
parte o todas las funcionalidades están disponibles solo para usuarios
registrados, que son reconocidos o autenticados por la aplicación mediante
un proceso de login antes de poder demandar información.
- Cuide
la transmisión de datos sensibles a través de Internet. En una aplicación
Web es muy importante proteger la información confidencial o sensible de
los usuarios. Considere el uso de SSL, HTTPS y encriptación siempre que
tenga que proteger datos sensibles de los usuarios de la aplicación.
1 comentarios:
Hola!
Estoy realizando una investigación para el diseño de una arquitectura para el desarrollo de aplicaciones web empresariales, todo con software por cuyo uso no se necesite pagar licencia, por lo cual he decidido utilizar JEE, sin embargo, ya hablando en términos más concretos me gustaría saber qué tecnologías son las que se involucran en cada una de estas tres capas que mencionas arriba, es decir, dónde ubico los servlets, o los ManagedBeans, o hibernate (que es muy aparte de java según tengo entendido), etc. Estoy planeando utilizar Glasfish como contenedor y RedHat como SO anfitrión, quizá implemente también servicios web.
Lo cierto es que estoy bastante perdido en cuanto a la conceptualización de este modelo (empresarial) y todo lo que conlleva me gustaría un poco de orientación al respecto, ya que además de presentar dicha investigación tendré que realizar una pequeña implementación que demuestre que la arquitectura propuesta funcione correctamente.
Agradeceré mucho su apoyo.
Francisco Hernández
Publicar un comentario