Fig. 1 Arquitectura de Software
2.1 Arquitectura de Software
Desarrollo
Definición:
Es el
diseño de más alto nivel de la estructura de un sistema y que nos servirá para
elaborar una planificación
Así una
arquitectura bien echa facilita la comprensión para los desarrolladores y aún
más para el usuario o cliente y por consiguiente encontraremos los posibles
errores para corregirlos a tiempo
Toda
arquitectura de software debe describir diversos aspectos del software.
Generalmente, cada uno de estos aspectos se describe de una manera más
comprensible si se utilizan distintos modelos o vistas
Existen tres
vistas fundamentales en cualquier arquitectura
- La visión estática:
Describe qué componentes
tiene la arquitectura.
- La visión funcional:
Describe qué hace cada
componente.
- La visión dinámica:
Describe cómo se comportan
los componentes a lo largo del tiempo y cómo interactúan entre sí.
Se puede
adoptar una arquitectura conocida en función de sus ventajas y desventajas para
cada caso en concreto. Entre las arquitecturas más comunes son:
- Monolítica
- Cliente servidor
- Arquitectura de tres niveles
- Arquitectura de N niveles
Arquitectura
Monolítica
El
software se estructura en grupos muy acoplados fig. 1, es decir que en el mismo
computador se tiene las tres capas como la de interfaz de usuario, la de lógica
de negocio y de datos
Fig. 2 Arquitectura Monolitica
Arquitectura
Cliente-Servidor
El software reparte su carga
de cómputo en dos partes independientes, La separación
entre cliente y servidor es una separación de tipo lógico
fig. 2, donde el servidor no se ejecuta necesariamente sobre una sola máquina
ni es necesariamente un sólo programa
Fig. 3 Cliente Servidor
Arquitectura de
tres niveles
Está referenciado a la
arquitectura cliente-servidor, pero aquí se dividirá en tres capas fig. 3 para
su mejor comprensión del sistema que se realice:
-Capa de presentación
-Capa de Negocio
-Capa de almacenamiento o Datos
Fig.4 Arquitectura de tres niveles
Arquitectura de N
niveles
Similar a la de tres capas
solo que aquí se dividiremos a más capas fig. 4, así que se podrá modificar una
capa y no toda la aplicación
Fig. 5 Arquitectura N niveles
2.2 Arquitectura Cliente – Servidor
Desarrollo
La Arquitectura Cliente-Servidor puede ser definida
como la combinación de sistemas que son capaces de colaborar entre ellos con la
finalidad de proveer a los usuarios toda la información que requieran sin que
conozcan donde está ubicada la misma. Además soporta un medio ambiente
distribuido en donde los requerimientos de servicio de un cliente resultan en
un trabajo realizado por servidores.
Diversas aplicaciones se ejecutan en un entorno
cliente/servidor. Esto significa que los equipos clientes (equipos
que forman parte de una red) contactan a un servidor, un equipo
generalmente muy potente en materia de capacidad de entrada/salida, que
proporciona servicios a los equipos clientes. Estos servicios son programas que
proporcionan datos como la hora, archivos, una conexión, etc. Los servicios son
utilizados por programas denominados programas clientes que se ejecutan en
equipos clientes. Por eso se utiliza el término "cliente" (cliente
FTP, cliente de correo electrónico, etc.) cuando un programa que se ha diseñado
para ejecutarse en un equipo cliente, capaz de procesar los datos recibidos de
un servidor (en el caso del cliente FTP se trata de archivos, mientras que para
el cliente de correo electrónico se trata de correo electrónico).
Fig. 6 Arquitectura Cliente-Servidor
Ventajas de la arquitectura cliente/servidor
El modelo cliente/servidor se recomienda, en
particular, para redes que requieran un alto grado de fiabilidad. Las
principales ventajas son:
- Recursos centralizados: debido a que el servidor es el centro de la red, puede administrar los recursos que son comunes a todos los usuarios, por ejemplo: una base de datos centralizada se utilizaría para evitar problemas provocados por datos contradictorios y redundantes.
- Seguridad mejorada: ya que la cantidad de puntos de entrada que permite el acceso a los datos no es importante.
- Administración al nivel del servidor: ya que los clientes no juegan un papel importante en este modelo, requieren menos administración.
- Red escalable: gracias a esta arquitectura, es posible quitar o agregar clientes sin afectar el funcionamiento de la red y sin la necesidad de realizar mayores modificaciones.
Desventajas del modelo cliente/servidor
La arquitectura cliente/servidor también tiene las
siguientes desventajas:
- Costo elevado: debido a la complejidad técnica del servidor.
- Un eslabón débil: el servidor es el único eslabón débil en la red de cliente/servidor, debido a que toda la red está construida en torno a él. Afortunadamente, el servidor es altamente tolerante a los fallos (principalmente gracias al sistema RAID).
2.3 Arquitectura WEB
Desarrollo
La forma de desarrollar aplicaciones hasta el momento
estaba basado sobre una arquitectura
simple: la aplicación corría en forma local en nuestra PC. La ventaja era que
la VM servía como ambiente donde cada uno de los objetos cumplía su función.
Lo más lógico es comprender lo
siguiente, 1 cliente tiene un programa
ejecutable (application client),
el web browser es el más común y el
servidor tiene un programa ejecutable: en la materia será nuestro application server el que tendrá una
VM donde vivan los objetos de negocio.
El cliente hace pedidos a través de un puerto contra
el servidor, el servidor responde. El flujo de mensajes siempre comienza en el
cliente:
Cliente pide servicio (request)
Servidor responde (response)
Fig. 7 Arquitectura WEB
Arquitectura cliente servidor
El modelo cliente-servidor es una
arquitectura software que involucra uno o más clientes solicitando servicios a
uno o más servidores.
El cliente puede ser un proceso corriendo
en una computadora o en un dispositivo como una PDA o un teléfono móvil. El
servidor puede ser un proceso corriendo en una computadora (normalmente de
altas prestaciones). En la arquitectura Web actual aparecen además elementos
que se sitúan en medio (proxies, cachés).
Beneficios:
Usabilidad/flexibilidad/interoperabilidad/
escalabilidad.
Clientes
Originan el tráfico web, envían las
peticiones y reciben las respuestas. Dos clases de clientes web: navegadores y
robots.
Los navegadores (Netscape, IE, etc.), las
peticiones están dirigidas por el usuario, repiten peticiones al mismo objeto cuando
navegan por un site, utilizan caches de memoria y disco.
Robots (spiders, y agentes inteligentes),
las peticiones son automatizadas la velocidad y carga está limitada por la
velocidad de proceso, y por la velocidad de la red.
Funciones de los navegadores
Construyen y mandan la petición HTTP[1]
reciben, interpretan y presentan la respuesta.
La apariencia final depende de los
parámetros de configuración algunos recursos precisan aplicaciones de ayuda
para visualizarse código MIME proporcionan el interfaz para conectarse y
utilizar otros servicios: mail, news, ftp, etc.
El protocolo por defecto es http caché
local sirve recursos guardados en la caché sin conectarse al servidor
consistencia:
Fuerte: revalida siempre el recurso
conectándose al servidor débil: se basa en los parámetros HTTP, y en los
parámetros de configuración, para decidir si es necesario revalidar el recurso.
Funciones del proxy
Caché: guarda las respuestas comparte
accesos con otros clientes filtra las peticiones y las respuestas (seguridad).
Filtra las peticiones a ciertos sitios web filtra respuestas (pe. Basándose en
el tamaño) guardan el anonimato.
Los servidores no conocen la IP del cliente transforman las peticiones y las respuestas.
Puede trasformar la petición para ajustarse a capacidades que comparte con el
servidor
(pe. Algoritmos de
compresión). Puede ajustar la respuesta a las capacidades del cliente actúan
también de pasarelas a otros sistemas no-HTTP.






No hay comentarios:
Publicar un comentario