Estilos de arquitectura Flashcards
(55 cards)
Qué es un estilo arquitectónico?
Un estilo arquitect´onico es un conjunto coordinado de restricciones arquitect´onicas
que restringe las funciones/caracter´ısticas de los elementos arquitect´onicos y las rela-
ciones permitidas entre esos elementos, dentro de cualquier arquitectura que se ajusta
a ese estilo.
Los estilos arquitect´onicos son m´etodos que combinan estructuras de soluciones
arquitect´onicas especificando un conjunto de componentes y sus responsabilidades.
Adem´as, establecen reglas que regulan c´omo se relacionan estos elementos entre s´ı. Estos
estilos permiten evaluar una variedad de arquitecturas alternativas, identificando sus
ventajas y desventajas en funci´on de las distintas caracter´ısticas de calidad requeridas.
Cómo se pueden clasificar los estilos arquitectónicos?
Los estilos arquitect´onicos se pueden clasificar de la siguiente manera (ojo, no es
una clasificación completa, sino una muestra representativa):
* Data Flow Styles
* Replication Styles
* Hierarchical Styles
* Mobile Code Styles
* Peer to Peer Styles
Respecto a replication styles, qué es el replicated repository?
Son una arquitectura en la que varios procesos brindan el mismo servicio. Los
servidores descentralizados trabajan juntos para dar a los clientes la impresi´on de que
hay un solo servidor central en lugar de un servidor centralizado.
Este enfoque se emplea en sistemas de archivos distribuidos,y sistemas de control de
versiones, como CVS/SVN (local), donde m´ultiples servidores colaboran para garantizar
el rendimiento y la disponibilidad.
Qué beneficios tiene el replicated repository?
- Escalabilidad: Permite manejar picos de carga, usuarios y transacciones m´as
grandes sin comprometer el rendimiento del sistema. - Performance: Como los datos se pueden obtener de los servidores m´as cercanos
al cliente, se reduce la latencia de las solicitudes normales. Adem´as, permite
trabajar en modo offline en situaciones en las que no se puede conectar al servidor
central. - Confiabilidad: Una falla en uno de los servidores no causa una ca´ıda del servicio
porque otros servidores pueden continuar brindando el servicio. - Simplicidad: La simplicidad en la manipulaci´on de datos replicados a nivel
local compensa la complejidad de la replicaci´on, lo que facilita el uso del sistema
para los clientes.
Genial muy lindo, pero una preocupaci´on importante en esta arquitectura es
mantener la consistencia de los datos. Para evitar inconsistencias y conflictos, es crucial
asegurarse de que los datos replicados siempre est´en sincronizados y actualizados entre
los servidores.
Respecto a replication styles, qué es cache?
Es una t´ecnica de arquitectura que implica la replicaci´on del resultado de una solic-
itud en un sistema, permitiendo que este resultado sea utilizado en futuras solicitudes
similares. Es una variante del concepto de ”Repositorios replicados” (RR) y se usa
principalmente en situaciones en las que el conjunto de datos posible es mayor de lo
que el cliente puede manejar o cuando el acceso completo al repositorio es innecesario.
Qué implementaciones hay de cache?
- Lazy Population (Poblaci´on perezosa): En este m´etodo, la cach´e se llena
o actualiza solo cuando es necesario; por ejemplo, cuando un cliente hace una
solicitud y el resultado no est´a en la cach´e. Esto permite ahorrar recursos al
replicar solo la informaci´on necesaria. - Active Population (Poblaci´on activa): En este caso, la cach´e se llena de
manera proactiva, anticipando las solicitudes que es probable que se realicen en
el futuro. Esta t´actica tiene como objetivo mejorar a´un m´as el rendimiento al
preparar los datos antes de la solicitud.
Qué beneficios tiene la cache?
El Cache es ampliamente utilizada en aplicaciones web para mejorar el
rendimiento y reducir la latencia. Algunos beneficios de su implementaci´on son:
* Performance: Aunque no ofrece mejoras tan significativas como la replicaci´on
de repositorios, a´un as´ı mejora el rendimiento del sistema al reducir el tiempo de
respuesta de las solicitudes.
* Simplicidad: es m´as sencillo de implementar en comparaci´on con la replicaci´on
de repositorios, lo que la convierte en una opci´on atractiva para sistemas con
requerimientos de recursos m´as modestos.
El cache requiere menos recursos de procesamiento y almacenamiento en com-
paraci´on con la replicaci´on de repositorios (RR), ya que solo replica datos relevantes
y puede transmitir solo cuando sea necesario. Debido a la naturaleza selectiva de la
cach´e, sin embargo, los beneficios en t´erminos de rendimiento percibido pueden ser
menores que los RR.
Respecto a Hierarchical styles, qué es client server?
El ”servidor-cliente” (servidor cliente, CS) es el estilo arquitect´onico m´as com´un
para aplicaciones basadas en red. El servidor y el cliente son los dos componentes
principales de la arquitectura de este estilo.
El componente que ofrece servicios y responde a las peticiones de los clientes es el
servidor. Es responsable de enviar o rechazar las solicitudes y responder a ellas.
El componente llamado cliente solicita servicios al servidor a trav´es de un conector.
El cliente sabe del servidor, pero no sabe de todos los clientes. Un servidor puede
manejar a muchos clientes.
Este estilo se destaca por la clara separaci´on de responsabilidades entre el servidor
y el cliente. El cliente se encarga de solicitar servicios y el servidor de proporcionarlos.
Esta separaci´on simplifica el dise˜no y facilita la evoluci´on de ambos componentes de
forma independiente.
Qué beneficios tiene el estilo de arquitectura client server?
Beneficios
* Escalabilidad: Debido a que el servidor es el componente que generalmente
requiere una mayor capacidad y recursos para atender a m´ultiples clientes, la
arquitectura ”Client-Server” permite un crecimiento m´as sencillo del sistema.
* Simplicidad: La separaci´on de funciones hace que el dise˜no general del sistema
sea m´as sencillo, lo que facilita el desarrollo y mantenimiento del software.
* Evolucionabilidad: La separaci´on de funciones permite que el cliente y el
servidor evolucionen de manera independiente. Siempre y cuando se mantenga
la interfaz entre ellos, las modificaciones en uno de los componentes no necesari-
amente afectar´an al otro.
Respecto a Hierarchical styles, qué es layered server?
Es un estilo arquitect´onico en el que las capas jer´arquicas organizan el sistema.
Cada capa proporciona servicios a la capa superior mientras que la capa inferior los
utiliza. Este m´etodo oculta las capas internas a las capas superiores para reducir el
acoplamiento entre las diferentes partes del sistema.
Qué beneficios y desventajas tiene layered server?
Beneficios
* Evolucionabilidad: Permite evolucionar cada capa de manera independiente
sin afectar a las dem´as.
* Extensibilidad: Es posible agregar nuevas capas a medida que se requieran
nuevas funcionalidades o servicios en el sistema.
* Reusabilidad: Las capas pueden ser dise˜nadas de forma modular y reutilizarse
en diferentes sistemas o contexto.
* Portabilidad: Las capas se pueden portar y utilizar en diferentes sistemas o
plataformas.
Sin embargo presenta una desventaja en la Performance, porque la adici´on de
capas puede introducir overhead y latencia en el sistema.
Respecto a Hierarchical styles, qué es layered client server?
El enfoque arquitect´onico ”Cliente Servidores de capas” (LCS) combina el concepto
de capas con el estilo ”Cliente Servidores de capas” (CS) en sistemas basados en
red. Para proporcionar una estructura m´as jer´arquica y modular, en este caso, las
arquitecturas CS se organizan en capas.
Qué es el reverse proxy?
El ”Reverse Proxy”, tambi´en conocido como proxy inverso, es una capa de aplicaci´on
accesible desde varios clientes y es un componente crucial de las arquitecturas LCS. Las
solicitudes de los clientes son recibidas por esta capa y luego enviadas a los componentes
del servidor. Adem´as, el ”Reverse Proxy” tiene la capacidad de traducir o modificar
las solicitudes antes de enviarlas a los servidores, lo que mejora la funcionalidad.
Qué beneficios tiene layered client server?
En cuesti´on a los beneficios, se suman los beneficios entre CS y LS.
Qué es un load balancer?
Es una parte importante de las arquitecturas de sistemas distribuidos que se
encarga de recibir solicitudes (requests) de los clientes y distribuirlas entre un grupo
de servidores, luego direccionando la respuesta del servidor seleccionado al cliente
correspondiente.
Su objetivo principal es mejorar el rendimiento y la disponibilidad del sistema
asegur´andose de que el tr´afico de las solicitudes se distribuya de manera equitativa y
se gestione de manera eficiente entre los servidores.
En qué se relaciona un load balancer y la arquitectura stateless?
La relaci´on entre el load balancer y arquitectura stateless, es que al servidor al
que se env´ıa una solicitud espec´ıfica no importa, ya que cada solicitud incluye todos
los datos necesarios para su procesamiento de manera independiente. Esto facilita la
distribuci´on eficiente de la carga y contribuye a la escalabilidad y la estabilidad del
sistema al eliminar la necesidad de preocuparse por la persistencia del estado en los
servidores individuales
Qué beneficios tiene un load balancer?
- Escalabilidad: Soporta un volumen de usuarios/requests m´as alto.
- Elasticidad: Seg´un el caso, podr´ıa escalar acorde a la demanda.
- Disponibilidad: Las capas pueden ser dise˜nadas de forma modular y reutilizarse
en diferentes sistemas o contexto. - Fiabilidad: El balanceador de carga mejora la confiabilidad del sistema al
eliminar un solo punto de falla al distribuir el tr´afico entre varios servidores. - Performance: Mejor uso de los recursos escasos. En algunos casos, el bal-
anceador de carga puede tratar ciertos tipos de solicitudes de manera diferenciada. - UX: Reduce el n´umero de errores visibles por el usuario.
Qué es un reverse proxy?
Es una parte importante de las arquitecturas de sistemas distribuidos que sirve
como intermediario entre los servidores reales y los clientes. Su funci´on principal es
recibir solicitudes de clientes, reenviarlas al servidor correspondiente y devolver la
respuesta del servidor al cliente. Una de sus caracter´ısticas principales es ocultar
la identidad de los servidores reales, actuando como una cara p´ublica o fachada del
sistema
Qué beneficios tiene un reverse proxy?
Seguridad: Act´ua como una barrera de seguridad que oculta la identidad y
ubicaci´on de los servidores reales. Al hacerlo, protege los servidores de posibles
ataques directos y reduce la exposici´on de vulnerabilidades. Esconde los servidores asi ecita explotar vulnerabilidades y puede implementar mecanismos de proteccion
contra ataques DoS
* Escalabilidad: Permite una mayor flexibilidad en el manejo de recursos, ya que
puede agregar o eliminar servidores reales de manera din´amica y transparente.
* Performance: Mejora el rendimiento del sistema al realizar t´ecnicas de acel-
eraci´on web, como el almacenamiento en cach´e, compresi´on y terminaci´on SSL
Respecto a Hierarchical styles, qué es Client-Stateless-Server?
Es un m´etodo arquitect´onico que proviene del estilo ”Client-Server” (CS), pero
tiene una limitaci´on: no se puede almacenar el estado de la sesi´on en el componente
servidor. En este caso, el propio cliente debe proporcionar toda la informaci´on necesaria
para comprender las solicitudes del cliente, y el servidor no mantiene ning´un tipo de
contexto o estado de la sesi´on. El cliente tiene todo el control sobre el estado.
¿Que es el estado? Cualquier informaci´on sobre la sesi´on del cliente que el servidor
debe recordar y mantener entre varias solicitudes se conoce como estado.
Qué beneficios y desvdentajas tiene Client-Stateless-Server?
Beneficios
* Visibilidad: Al no mantener el estado, simplifica la tarea de un sistema de
monitoreo.
* Confiabilidad: Al no depender del estado del servidor, el CSS facilita la
recuperaci´on ante fallos parciales o interrupciones.
* Escalabilidad: Permite asignar libremente un servidor para procesar una
solicitud.
Desventajas
* Performance: Al transmitir toda la informaci´on requerida con cada solicitud,
puede haber una transmisi´on de datos repetitiva a trav´es de la red, lo que puede
afectar el rendimiento en comparaci´on con sistemas que almacenan el estado en
el servidor.
Qué es Client-Cache-Stateless-Server?
Es un enfoque arquitect´onico que combina caracter´ısticas de ”Client Stateless
Server” (CSS) y Client Cache($). Esta arquitectura incorpora una capa de mediadores
de cach´e adicional para mejorar el rendimiento y la eficiencia del sistema.
Los clientes interact´uan con un servidor que no mantiene estado (CSS) en C$SS, lo
que significa que no almacena datos de sesi´on entre solicitudes. El servidor responde
de manera independiente y sin dependencia de estados anteriores a cada solicitud del
cliente, que contiene toda la informaci´on necesaria para ser comprendida y procesada.
Sin embargo, para mejorar el rendimiento y la eficiencia, se agrega la funcionalidad
de cach´e (Client Cache, $) en alg´un lugar de la arquitectura. Los mediadores4 de cach´e
almacenan copias temporales de respuestas a solicitudes previas para que, si un cliente
hace una solicitud id´entica o similar a una que ya ha sido atendida, el servidor pueda
evitar repetir todo el procesamiento y simplemente devolver la respuesta desde la cach´e.
Qué beneficios tiene Qué es Client-Cache-Stateless-Server?
Beneficios
* Performance: El uso del cach´e para almacenar respuestas previas reduce el
tiempo y los recursos necesarios para procesar solicitudes repetitivas.
Qué es Layered-Client-Cache-Stateless-Server?
Es un estilo arquitect´onico que combina caracter´ısticas de los estilos ”Layered
Client Server” y ”Client Cache Stateless Server”. Para mejorar el rendimiento, la
eficiencia y la escalabilidad del sistema, se agregan componentes de proxy y cach´e en
esta arquitectura.
El LC$SS utiliza un enfoque de capas jer´arquicas donde los clientes interact´uan con
un servidor que no mantiene estado (Client Stateless Server, CSS), y cada solicitud del
cliente contiene toda la informaci´on necesaria para comprender y procesar. Adem´as,
incluye componentes de cach´e que almacenan copias temporales de respuestas previa-
mente atendidas, as´ı como componentes de proxy que funcionan como intermediarios
entre los clientes y los servidores reales.
En relaci´on a los beneficios y contras, se suman ambos aspectos de LCS y C$SS.