Estilos arquitectonicos Flashcards
(37 cards)
Que es un estilo arquitectonico?
Conjunto coordinado de restricciones que restinge las funciones de los elementos y las relaciones permitidas entre ellos.
Encapsula decisiones importantes sobre los elementos y hace hincapie en las relaciones. De esta manera pueden favorecer o desfavorecer distintos atributos de calidad.
Que es Replicated Repository?
- mas de 1 proceso otorgando el mismo servicio
- Servidores descentralizados proveen la ilusion a los clientes de que hay 1 solo servidor centralizado
- Ej: Distributed Filesystem
Como afecta Replicated Repository a la escalabilidad, performance, confiabilidad y simplicidad?
- Escalabilidad: Mejora
- Performace: Mejora
- Confiabilidad: Mejora, si se cae uno de los servidores, esyan los demas para seguir funcionando
- Simplicidad: Empeora ya que capaz hay que tener los servidores con alguna sincronizacion
Que es el estilo de Cache?
Replicacion de un resultado para poder reutilizarlos en el futuro si se hace la misma request.
Se usa en general cuando el conjunto de datos es mayor de lo que el cliente puede manejar o cuando el acceso completo al repositorio es innecesario.
Como afecta el estilo de Cache la performance y la simplicidad?
- Performance: Mejora ya que reduce la cantidad de mensajes en la red.
- Simplicidad: Mejora, es mas facil que implementar RR
Que es el estilo Client-Server?
- El servidor es reactivo, cada vez que le llega un request lo procesa y responde
- El server no termina nunca
- Separation of concerns
- El cliente conoce al servidor, pero el servidor no conoce a los clientes
- El servidor atiende a mas de un cliente
Como afecta Client-Server a la simplicidad, escalabilidad, evolucionabilidad?
- Simplicidad: Es muy facil de implementar como de explicar y entender.
- Escalabilidad: Mejora ya que un mismo servidor puede atender muchos clientes a la vez
- Evolucionabilidad: Cada parte puede evolucionar sin joder a la otra
Que es el Layered System?
- Puede haber N capas
- Capas ordenadas jerarquicamente
- Cada capa brinda funcionalidades a las capas de arriba
- Reduce acoplamiento
Como Layered System afecta a la extensibilidad, performance, reusabilidad, portabilidad?
- Extensibilidad: mejora ya que se puede agregar una nueva layer facilmente sin afectar a las demas
- Performance: La comunicacion entre capas agrega un overhead que agrega latencia
- Reusabilidad: mejroa ya que cada capa podria usarse en otro sistema
- Portabilidad: mejora
Que es el Layered Client Server?
Puede heber n niveles. Por ejemplo se pueden agregar Load Balancers o Reverse proxies.
Que es Client Stateless Server?
- El server no guarda nada del estado, todo queda del lado del cliente
- En cada requests el mensaje debe agregar todo el estado necesatio para poder darle contexto al server
- Idempotencia: se le manda n veces el mismo request a un server y este solo lo procesa 1 vez
Como Client Stateless Server afecta a la visibilidad, performance, connfiabilidad y escalabilidad?
- Visibilidad: Mejora ya que todo va en el mensaje en tonces el mediador puede conseguir todo el estado mirando un mensaje
- Performance: empeora ya que se manda mucha info repetida por la red
- Confiabilidad: Mejora ya que si muere el server no se pierde toda la info de la sesion porq la tiene el cliente. Entonces no hay que recuperarla o volver a armarla.
- Escalabilidad: mejora ya que un load balancer puede mandar cada request a un server indiferente porq el estado viene en el mensaje. No hace falta que mande los requests de un mismo usuario simpre a un mismo server como en stateful.
Que es el Remote Session?
- El cliente inicia una sesion en el server, hace su trabajo yy luego cierra la sesion
- El estado lo mantiene el server
- Ej: Telnet
Como Remote Session afecta simplicidad, escalabilidad y visibilidad?
- Simplicidad: Es es mas facil de mantener y gestionar, ya que la interfaz del servidor es centralizada y los clientes solo necesitan interactuar con el servidor durante la sesion activa.
- Escalabilidad: no es tan buena ya que el server debe tener los estados de muchos clientes
- Visibilidad: es mala ya que solo se mandan los comandos y el estado no se ve nunca porq ese esta en el server solamente y no viaja en los mensajes
Que es Remote Data Access?
- El cliente le envia als consultas al servidor en formato estandar
- El server crea workspaces donde ejecuta las consultas
- El estado se distribuye entre el cliente y el servidor
Como Remote Data Access afecta a la eficiencia, escalabilidad y visibilidad?
- Eficiencia: Mejora ya que los datasets grandes pueden ser reducidos del lado del server y despues pasarle esa reduccion al cliente
- Escalabilidad: empeora ya que el server debe tener parte del estado
- Visibilidad: es buena por el uso del lenguaje estandar
A que nos referimos con ‘movilidad’ en el contexto del estilo arquitectonico ‘Mobile Code Styles’?
movilidad = cambiar dinamicamente la distancia entre el procesamiento y las fuentes/destinos de los datos
Que es Virtual Machine?
- Se ejecuta el codigo en un ambiente controlado
- Busca satisfacer requerimentos de seguridad y confiabilidad
Como Virtual Machine afecta a la visibilidad, portabilidad, extensibilidad?
- Visibilidad: es dificil saber que va a hacer un ejecutable mirando solo su codigo
- Portabilidad: mejora
- Extensibilidad: mejora, es facil agregar funcionalidad sobre una plataforma generica
Que es Remote Evaluation?
- VM en el server
- El cliente tiene el know-how para ejecutar un servicio pero no tiene los recursos
- El cliente envia el conocimiento al server, este lo ejecuta y devuelve la respuesta
- Entorno protegido, sin afectar a los otros clientes
- Ej: motor de base de datos
Como Remote Evaluation afecta a la visibilidad, escalabilidad, extensibilidad, eficiencia y confiabilidad?
- Visibilidad: no es muy buena ya que el cliente manda codigo que no es muy facil de enteder eso ya de por si
- Escalabilidad: empeora
- Extensibilidad: mejora, los dos pueden agregarse cosas sin molestar al otro
- Eficiencia: mejora, la accion del lado del cliente seria mas costosa
- Confiabilidad: empeora, el server tiene menos control de la ejecucion
Que es Code on Demand?
- El cliente tiene los recursos
- El server tiene el know how
- El cliente le pide el know-how al server con un request y este se lo manda y el cliente lo ejecuta
- Ej: HTML, front-end
Como Code on Demand afecta a la configutabilidad, extensibilidad, escalabilidad, performance y visibilidad?
- Configurabilidad: mejora, el server le puede mandar codigo disitinto a cada cliente
- Extensibilidad: mejora
- Escalabilidad: mejora ya que el server no tiene que ejecutar nada, lo ahce el cliente
- Performance: mismo que arriba
- Visibilidad: es mala ya que se manda codigo en vez de datos
Que es Layered Code on Demand Client Cache Stateless Server?
- Cerca del concepto de web actual