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.

posted under |

1 comentarios:

Pako dijo...

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

Entrada más reciente Entrada antigua Inicio