Tabla de contenido
PalancaPrefacio
Las características no funcionales en los sistemas de software modernos incluyen: disponibilidad (Disponibilidad), confiabilidad (Confiabilidad), escalabilidad (Escalabilidad), mantenibilidad (Mantenibilidad) y tolerancia a fallas (Fault Tolerance). Estas características no solo afectarán el rendimiento y la eficiencia del sistema de software. afectan directamente la experiencia del usuario. Este artículo también proporcionará una explicación detallada de las cinco características anteriores.
características no funcionales
En el diseño de sistemas, podemos dividirlo aproximadamente en dos tipos de requisitos para la planificación del diseño del sistema, a saber, requisitos funcionales (Requisitos funcionales) y requisitos no funcionales (Requisitos no funcionales).
- Requisitos funcionales, como diseñar una plataforma de visualización de videos que incluya funciones como inicio de sesión de usuario, carga de videos, visualización de videos, etc.
- Requisitos no funcionales, como diseñar una plataforma de visualización de videos que pueda manejar el tráfico de millones de usuarios.
Debería poder encontrar aquí que tanto los requisitos funcionales como los no funcionales son muy importantes, por lo que este artículo hablará primero sobre los requisitos no funcionales.
Disponibilidad
Disponibilidad Se refiere al porcentaje de servicios del sistema o del equipo general del sistema al que los usuarios pueden acceder y operar normalmente. Por ejemplo, si la disponibilidad de un servicio es 100%, significa que los servicios del sistema pueden operar y responder normalmente en cualquier momento, en lengua vernácula, el sistema no fallará.
Cómo medir la usabilidad
La disponibilidad se puede expresar como una relación matemática, simbolizada por A, siendo mejores los valores más altos. Lo expresamos con la siguiente fórmula matemática:
A (porcentaje) = (tiempo total – tiempo de inactividad del servicio) / tiempo total * 100%
Disponibilidad | Tiempo de inactividad por año | Tiempo de inactividad mensual | El tiempo de inactividad semanal |
---|---|---|---|
90% (un 9) | 36,5 días | 72 horas | 16,8 horas |
99% (dos 9) | 3,65 días | 7.20 horas | 1,68 horas |
99.9% (tres 9) | 8,76 horas | 43,8 minutos | 10,1 minutos |
99.99% (cuatro 9s) | 52,56 minutos | 4,32 minutos | 1,01 minutos |
99.999% (cinco 9) | 5,26 minutos | 25,9 segundos | 6,05 segundos |
99.9999% (seis 9) | 31,5 segundos | 2,59 segundos | 0,605 segundos |
99.99999% (siete 9s) | 3,15 segundos | 0,259 segundos | 0,0605 segundos |
Como puede ver en la tabla anterior, podemos usar el porcentaje de disponibilidad para juzgar la estabilidad de un sistema. Generalmente, los sistemas con mayor tráfico querrán que el índice de disponibilidad esté cerca de 100%, para que los usuarios no se vean afectados.
factores de usabilidad
Los siguientes son algunos factores que pueden afectar la disponibilidad:
- Fallo de hardware
- error de software
- problemas de red
- error humano
- desastre natural
Las empresas de servicios de sistemas suelen tomar una variedad de medidas para mejorar la disponibilidad, como por ejemplo:
- Realizar mantenimiento y pruebas regulares
- Implementar un plan de recuperación ante desastres
Fiabilidad
La confiabilidad es la velocidad a la que un servicio realiza su función dentro de un tiempo específico, donde las métricas de confiabilidad miden el desempeño de los servicios del sistema bajo diferentes condiciones operativas.
A menudo utilizamos la "media entre fallas (MTBF)" y el "tiempo medio de reparación (MTTR)" para medir la confiabilidad.
MTBF = número total de fallas/tiempo total transcurrido – suma de fallas
MTTR = reparaciones totales/tiempo total de mantenimiento
(Buscamos valores MTBF más altos y valores MTTR más bajos).
Fiabilidad y disponibilidad
La confiabilidad y la disponibilidad parecen muy similares, pero en realidad son dos conceptos diferentes. La confiabilidad (Reliability) y la disponibilidad (Disponibilidad) son dos indicadores importantes para medir si los servicios del sistema cumplen con los objetivos de nivel de servicio (SLO) acordados. La disponibilidad se centra en la pérdida de tiempo, la confiabilidad se centra en la frecuencia de las fallas. La disponibilidad y la confiabilidad son indispensables. Podemos juzgar la estabilidad de un sistema a través de estos dos indicadores.
Escalabilidad
La escalabilidad se refiere a la capacidad del sistema para manejar cargas de trabajo crecientes sin afectar el rendimiento. Por ejemplo, las plataformas de vídeo deben poder manejar un número cada vez mayor de usuarios y descargas y reproducciones de vídeos.
Las cargas de trabajo pueden ser de diferentes tipos, incluidas las siguientes:
- Carga de trabajo de solicitudes: esta es la cantidad de solicitudes que maneja el sistema.
- Carga de trabajo de datos/almacenamiento: esta es la cantidad de datos almacenados por el sistema.
Dimensiones
La escalabilidad tiene diferentes dimensiones:
- Escalabilidad de tamaño: Escalabilidad significa que podemos agregar más usuarios y datos al sistema.
- Escalabilidad administrativa: La escalabilidad de la gestión se refiere a la capacidad de un único sistema descentralizado de ser compartido fácilmente por un número cada vez mayor de usuarios.
- Escalabilidad geográfica: La escalabilidad geográfica se refiere a la facilidad con la que un programa puede servir a otras regiones a pesar de las limitaciones de desempeño. Para decirlo sin rodeos, el sistema se puede utilizar en diferentes países y zonas horarias sin afectar demasiado el rendimiento.
Escalabilidad diferente
Solemos mencionar la escalabilidad, que se puede dividir en dos tipos:
Escalado vertical \ Ampliación de escala
La expansión vertical se refiere a la actualización del equipo de servidor existente, por ejemplo, proporcionando más CPU o RAM para la expansión. La expansión vertical nos permite ampliar la capacidad de memoria y el rendimiento del servidor, pero todavía existe un límite superior para las actualizaciones de la computadora. No hay forma de actualizar infinitamente el equipo y el costo de la expansión vertical suele ser muy alto.
Escalado horizontal \ Escalado horizontal
La expansión horizontal se refiere al aumento del número de servidores a través de conexiones de red. Para decirlo sin rodeos, si es necesario ampliar el sistema, continúe aumentando la cantidad de servidores y realice la conexión y transmisión a través de la red. La ventaja de esto es que el costo es relativamente bajo.
Mantenibilidad
Además de crear sistemas de software, también necesitamos mantener el sistema. Esta mantenibilidad significa que el sistema puede corregir errores, agregar nuevas funciones, mantener la plataforma del sistema actualizada y garantizar un funcionamiento fluido para mantener el funcionamiento normal del sistema.
El concepto de mantenibilidad se puede dividir en tres aspectos básicos:
- Operabilidad (Operability): Se refiere a la dificultad de garantizar que el sistema funcione sin problemas en circunstancias normales y pueda restaurarse al estado normal en caso de falla.
- Lucidez: Se refiere a la complejidad del código. Cuanto más conciso y claro sea el código del sistema, más fácil será de entender y mantener, y viceversa.
- Modificabilidad: Se refiere a la capacidad del sistema para integrar fácilmente funciones nuevas y modificadas.
Cómo medir la mantenibilidad (Mantainability)
La mantenibilidad es la probabilidad de que un servicio vuelva a funcionar dentro de un período de tiempo específico después de una falla. También podemos utilizar métricas de mantenibilidad, que miden con qué facilidad y rapidez se puede restaurar un servicio a sus condiciones operativas normales.
Por ejemplo, considere la capacidad de servicio de un elemento del sistema en media hora 95%. En este caso, la probabilidad de que los componentes del sistema vuelvan a un estado completamente normal en media hora es 0,95. Usamos el tiempo medio de reparación (MTTR) como medida de M.
MTTR = reparaciones totales/tiempo total de mantenimiento
En otras palabras, MTTR es el tiempo promedio que lleva reparar y restaurar un componente fallido. Nuestro objetivo es que el valor del MTTR disminuya.
Tolerancia a fallos
¿Qué es la tolerancia a fallos?
Las aplicaciones del mundo real a gran escala suelen tener cientos de servidores y bases de datos que aceptan solicitudes de miles de millones de usuarios y almacenan grandes cantidades de datos. Estas aplicaciones también requieren un mecanismo para ayudar a garantizar la seguridad de los datos y evitar la necesidad de volver a ejecutar programas intensivos evitando puntos únicos de falla.
La tolerancia a fallos se refiere a la capacidad de un sistema para continuar ejecutándose incluso si uno o más componentes del sistema fallan. Aquí, los componentes del sistema pueden ser software o hardware, pero en la práctica, es muy difícil diseñar un sistema de software totalmente tolerante a fallos.
tecnología de tolerancia a fallas
Si el fallo se produce en el hardware o en el software, acabará afectando a los datos. La tolerancia a fallas se puede lograr mediante una variedad de técnicas y métodos, pero aún depende de la estructura de nuestro sistema.
- Replicación: esta es una de las técnicas de tolerancia a fallos más utilizadas. Esta tecnología también se utiliza especialmente en bases de datos. Podemos copiar servidores y datos. Cuando un servidor privado en el sistema falla, se convertirá automáticamente en un servidor copiado. Cuando dicho sistema encuentre otra falla, no afectará el uso. Por.
- Puntos de control: los puntos de control son un método para realizar una copia de seguridad del estado del sistema en la base de datos para facilitar una inspección rápida en el futuro cuando se produzca un error o una falla del servicio. Cuando falla un sistema distribuido, podemos obtener los datos actuales de puntos de control anteriores para permitir a los ingenieros repararlo.
Conclusión
Este artículo habla sobre conceptos importantes como la disponibilidad del sistema (Disponibilidad), confiabilidad (Confiabilidad), escalabilidad (Escalabilidad), mantenibilidad (Mantenibilidad) y tolerancia a fallas (Tolerancia a fallas).
- Disponibilidad(Disponibilidad)Representa la disponibilidad del sistema para los usuarios.
- fiabilidad(Fiabilidad)Representa la probabilidad de falla del sistema.
- Escalabilidad(Escalabilidad)Representa la capacidad del sistema para manejar la carga de trabajo.
- Mantenibilidad(Mantenibilidad)Representa la facilidad de mantenimiento del sistema.
- Tolerancia a fallos(Tolerancia a fallos)Representa la capacidad del sistema para soportar fallas.
Comprender estos conceptos y adoptar las técnicas adecuadas puede ayudar a los desarrolladores a crear sistemas que sean más confiables, eficientes y fáciles de usar.
Las siguientes son algunas sugerencias para mejorar la disponibilidad, confiabilidad, escalabilidad, mantenibilidad y tolerancia a fallas del sistema:
- Adoptar diseño redundante: Mejore la tolerancia a fallas del sistema mediante el uso de múltiples elementos o nodos del sistema.
- Realice un mantenimiento regular: Verifique y actualice periódicamente los sistemas para evitar fallas.
- Utilice una arquitectura escalable: Diseñe sistemas que puedan escalarse fácilmente para satisfacer las crecientes necesidades de los usuarios o volúmenes de datos.
- Utilice tecnología probada: Utilice técnicas probadas y confiables para mejorar la estabilidad del sistema.
- Para una prueba exhaustiva: Pruebe su sistema minuciosamente antes de implementarlo para identificar y solucionar problemas potenciales.
Artículo de referencia
¿Qué son los requisitos no funcionales? Significado de NFR
Otros artículos
Aplicación de la abstracción en el diseño de sistemas – Diseño de sistemas 02
Introducción al diseño de sistemas modernos – Diseño de sistemas 01
¿Entiendes realmente Monorepo? 5 minutos para presentarle la arquitectura front-end a gran escala
Experiencia de entrevista de ingeniero de software de Yahoo! 2023