Preguntas de Final Flashcards
¿Que es una SLA?
(Service Level Agreement).
Es un contrato donde el proveedor se compromete a cumplir con ciertos niveles de atributos de calidad (bastante comun la disponibilidad por ejemplo)
¿Cual es la diferencia entre escalabilidad y elasticidad?
La diferencia es que la escalabilidad es la capacidad del sistema para adaptarse al aumento de usuarios, transacciones y niveles de actividad, entre otros factores. Y la Elasticidad se refiere a la capacidad de un sistema para adaptarse y ajustar sus recursos de manera dinamica y automatica en respuesta a cambios en la carga de trabajo o demanda.
¿Que dice la regla de los 5 9’s?
Es una metrica que se utiliza para medir la confiabilidad y disponibilidad de un sistema o servicio.
Se expresa como un porcentaje y significa que el sistema
esta disponible el 99.999% del tiempo.
Para calcular la disponibilidad en terminos de ”nueves”, se considera el porcentaje de tiempo en el que el sistema esta en funcionamiento en un año.
- Disponibilidad de 99%: El sistema esta inactivo aproximadamente 3.65 dıas al año.
- Disponibilidad de 99.9% (tres nueves): El sistema esta inactivo
aproximadamente 8.76 horas al año. - Disponibilidad de 99.99% (cuatro nueves): El sistema esta inactivo
aproximadamente 52.56 minutos al año. - Disponibilidad de 99.999% (cinco nueves): El sistema est´a inactivo
aproximadamente 5.26 minutos al año.
¿Qu´e es el bandwidth?
Representa el rendimiento m´aximo disponible en un canal
de comunicaci´on en particular.
Esta es una medida importante para
comprender la capacidad de transmisi´on de la red. Adem´as, ”ancho de
banda utilizable” se refiere a la porci´on de ancho de banda disponible para
la aplicaci´on en cuesti´on que es relevante para determinar el rendimiento
de la red en el contexto espec´ıfico de la aplicaci´on.
¿Cu´ales son las t´acticas para la disponibilidad?
T´acticas PDR
Prevenci´on
1. Dise˜no redundante: La idea es implementar redundancia en com-
ponentes cr´ıticos para evitar un Single point of failure
- Transacciones: El uso de transacciones en el dise˜no del sistema
puede evitar incoherencias y la perdida de datos en caso de error. Garantizan que las operaciones se completen o reviertan por completo, manteniendo la integridad de los datos y asegurando la disponibilidad del sistema.
Detecci´on
1. Envio de se˜nales y monitoreo: La idea es implementar mecanismos de detecci´on que impliquen el envio de se˜nales o mensajes peri´odicos entre componentes para verificar su estado y asegurar que sigan funcionando correctamente.
- Votacion: Utilizado en sistemas con redundancia, la votacion consiste en monitorear diferentes componentes y comparar sus resultados para detectar errores. Las coincidencias en la mayor´ıa de los componentes se consideran v´alidas y las no coincidencias se ignoran, lo que permite detectar y recuperar las fallas del sistema.
Recuperaci´on
1. Redundancia activa: Esta tactica implica implementar componentes o servicios duplicados que se ejecutan simultaneamente, donde uno puede controlar y reanudar las operaciones en caso de que falle el componente principal. Esto permite una recuperaci´on r´apida y
mejora la disponibilidad del sistema.
2. Redundancia pasiva: Similar a la redundancia activa, con la difer- encia de que requiere una intervenci´on manual para activar el componente redundante.
3. Repuesto: Esta t´actica consiste en tener componentes de repuesto disponibles y listos para reemplazar r´apidamente aquellos que fallen.
¿C´omo se pueden relacionar la arquitectura stateless con un
Load Balancer?
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.
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´e es la visibilidad?
capacidad de un sistema de software para proporcionar informaci´on
clara, relevante y comprensible sobre su funcionamiento interno y comportamiento externo. Por lo tanto, la visibilidad se refiere a la capacidad de observar y comprender
lo que est´a sucediendo dentro del sistema y c´omo interact´ua con su entorno.
¿Por qu´e las bases de datos relacionales no son escalables?
Las bases de datos relacionales no fueron originalmente concebidas para funcionar
en entornos de cl´usteres. Es decir, para distribuir su carga en mas de un modulo.
Por esto las bdds NoSQL, diseñadas para si escalar shardean. Pero a cambio se pierde las trasacciones y garantias de las relacionales
¿Qu´e es Code On Demand?
Esta arquitectura, la cual deriva de VM y CS, el cliente tiene los recursos (como
CPU, memoria o acceso a una fuente de datos) para ejecutar un servicio, pero no
tiene el conocimiento o la experiencia necesarios para realizar la operaci´on de manera
efectiva. El cliente env´ıa una solicitud al servidor pidi´endole el c´odigo que representa
el ”know-how” necesario en lugar de enviar los datos al servidor para que se realice el
procesamiento. El cliente ejecuta el c´odigo del servidor localmente para completar la
operaci´on.
JavaScript (JS) en aplicaciones web es un ejemplo com´un de la arquitectura ”Code
on Demand”. En este caso, el cliente tiene la capacidad de ejecutar c´odigo JavaScript,
pero el servidor puede proporcionar scripts adicionales que se ejecutan localmente
en el navegador del cliente para mejorar la experiencia del usuario o proporcionar
funcionalidades adicionales.
Beneficios
* Configurabilidad y Extensibilidad: Permite agregar nuevas funcionalidades
a un cliente ya desplegado sin cambiar el c´odigo fuente original.
* Escalabilidad: Utilizar los recursos de los clientes para ejecutar el c´odigo,
reduce la carga en el servidor.
* Performance: La ejecuci´on se realiza interactuando localmente con el cliente,
sin necesidad del servidor.
Desventajas
* Visibilidad: El servidor env´ıa c´odigo al cliente en lugar de datos.
¿Qu´e es el sharding?
sirve para superar las limitaciones de espacio, recursos, ancho de
banda y geograficas de un almacenamiento de datos en 1 server. Implica en dividir el
almacenamiento de datos en particiones ”horizontales” (shards).
Cada shard funciona en su propio servidor y es independiente del resto, lo que
permite escalar horizontalmente y equilibrar la carga entre shards.
La ubicaci´on
geogr´afica de los shards tambi´en puede optimizarse para estar cerca de los usuarios
que acceder´an a los datos.
Cada shard contiene un conjunto de datos que pertenecen a un rango determinado
por una clave de shard o clave de partici´on. Existe una variedad de enfoques para
asignar los datos a los shards, incluida la estrategia de mapa de shardkey-shard, la
estrategia de rango que agrupa elementos relacionados o la estrategia de hash que usa
una funci´on de hash para asignar los datos.
Esto favorece a la Availability, Performance.