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
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.
0 comentarios:
Publicar un comentario