Arquitectura de aplicación JEE - Parte I


Introducción

Definir una arquitectura de aplicación es un proceso de crear una solución estructurada que sea conforme con todos los requerimientos técnicos y operacionales que demanda un determinado problema y al mismo tiempo sea capaz de optimizar o conseguir un conjunto de atributos de calidad como el rendimiento, la seguridad o la disponibilidad.

¿Qué es la arquitectura de aplicación?

Acorde a Bass, Clements y Kazman en su libro “Arquitectura de Software en la práctica" 2da edición, la arquitectura de software se define como “la estructura o estructuras de un sistema, el cuál contiene elementos de software, las propiedades visibles públicamente de estos elementos y las relaciones entre ellos”.

La arquitectura se refiere a las interfaces o parte pública de los componentes del sistema y no a su implementación interna.

Los algoritmos o estructuras de datos utilizados dentro de los componentes no es una tarea de arquitectura.

¿Para que necesitamos la arquitectura de aplicación?

Como en cualquier otro sistema complejo, el software también tiene que ser diseñado y construido sobre bases sólidas.

Los errores que se cometen al no diseñar una arquitectura sólida no solo ponen en riesgo el futuro de la aplicación que estamos construyendo en cuanto a sus estabilidad o despliegue en entornos de Producción, sino que ocasionan numerosas pérdidas de tiempo y dinero al intentar arreglar los problemas sobre la marcha.

A pesar de que las herramientas, los lenguajes de programación, los servidores de aplicaciones, los entornos y los frameworks de desarrollo, simplifican considerablemente el diseño de las aplicaciones, no quita que tengamos que atender los requerimientos de diseño basados en escenarios específicos.

¿Qué es un escenario?

Un escenario es el espacio escénico donde se representa una obra de danza, música o teatro y que constituye el punto focal donde el público consume o disfruta de esta obra.

Como cada obra de teatro, por ejemplo, tiene su decoración y su ambiente, que pueden variar en la medida que transcurren las escenas, en un escenario de software podemos encontrar diferentes sistemas operativos, diferentes ordenadores y diferentes componentes de software que interactúan entre sí para ofrecer al público (en este caso, los clientes finales) una representación o interacción que no es más que el objetivo de la propia aplicación que el cliente consume en forma de gráficos, reportes, entradas de datos, alertas, etc.

De la misma forma que una obra que transcurre en el desierto de Arabia, tendrá como escenario el sol y la arena, en un sistema de envío de correos electrónicos necesitamos un cliente de correo, un servidor POP3 de recepción de correos, uno de SMTP para envío de correos, enlazados a través de la red.

Este escenario simple, ampliamente aceptado y probado a través del tiempo, es lo que se denomina un escenario clave.

Un escenario clave puede ser enriquecido acorde a los requerimientos de nuestra aplicación, de la misma forma que en una obra que transcurre en el desierto podemos añadir unas palmeras y un manantial para crear un oasis.

En nuestro escenario de correo podemos añadir por ejemplo un firewall, o un router o un servidor Proxy, pero no podemos eliminar ninguno de los elementos del escenario clave: el cliente y los servidores de POP3 y SMTP si queremos enviar y recibir correos electrónicos.

El reconocer como arquitectos un escenario clave, nos permite comenzar correctamente el diseño de la arquitectura de una aplicación sobre una base sólida, porque ya tendremos incluidos los elementos imprescindibles que necesitamos para que esta aplicación pueda funcionar.

Preguntas de alto nivel cuando pensamos en una arquitectura de aplicación

  • ¿Cómo se va a desplegar una aplicación en el entorno de Producción?
  • ¿Cómo utilizarán o interactuarán con la aplicación los usuarios finales?
  • ¿Estamos utilizando las piezas o componentes correctos para construir la aplicación?
  • ¿Estamos utilizando la tecnología correcta a la hora de construir la aplicación?
  • ¿Qué atributos de calidad o restricciones requiere esta aplicación en cuanto a rendimiento, concurrencia, configuración, seguridad, escalabilidad o internacionalización?


Que objetivos hay que tener en cuenta al diseñar una arquitectura

Al diseñar la arquitectura de una aplicación hay que combinar los objetivos que persiguen el usuario, el negocio y el sistema. Para cada una de estas áreas tenemos que conocer:

  • Los escenarios claves
  • Los atributos de calidad más importantes
  • Los elementos más importantes que aseguran el éxito o la aceptación
  • Los elementos más importantes que ponen en riesgo el éxito o la aceptación
El gran reto de los arquitectos de aplicación es encontrar un balance entre lo que demanda cada una de estas áreas. Por ejemplo, a la hora de crear una aplicación Web que muestre las páginas en medio segundo para dar una rápida respuesta de usuario (requerimiento del área de usuario) necesitaríamos quizás un conjunto de servidores de aplicación muy potente en una configuración de alta disponibilidad y balanceo de carga (requerimiento del área de sistemas) que quizás tenga un coste prohibitivo (requerimiento del área de negocios) para el despliegue en Producción de nuestra aplicación.

En vez de eso podríamos elegir una configuración de sistemas que permita con menos servidores o con servidores más baratos, lograr en alta disponibilidad y con balanceo de carga que nuestra aplicación Web responda en dos segundos con el 90% de las páginas, lo cuál también es aceptable desde el punto de vista de la experiencia de usuario final. De esa manera hemos encontrado una solución de compromiso que pueda satisfacer los objetivos de cada una de las áreas.

posted under , , |

0 comentarios:

Publicar un comentario

Entrada más reciente Entrada antigua Inicio