La resiliencia es una de las características que le brindan al ser humano una superioridad sobre los demás seres vivos. Aunque tiene su origen en la física, el alcance ha sido tal que el concepto de resiliencia se ha aplicado a diversos campos como la psicología, y actualmente en el campo de la tecnología con los sistemas resilientes en la nube pública.
La resiliencia no es más que la capacidad de pasar por momentos de gran dificultad, superar las crisis y finalmente recuperarse. En el caso específico de los sistemas tecnológicos, es la capacidad de los mismos de autogestionarse frente a situaciones de dificultad.
También te puede interesar: Nube pública para empresas en Perú: consideraciones para una migración exitosa
Resiliencia en la nube pública
El concepto de resiliencia nos permite comprender el proceso de evolución de la infraestructura del cloud computing en los centros de datos más modernos. Es evidente que los sistemas actuales se vuelven cada vez más complejos, al punto que resulta casi imposible para las capacidades humanas llevar un registro detallado de todo lo que ocurre en ellos, más allá de tener una idea general de cómo se despliegan los procesos.
Por lo tanto, la resiliencia en la nube pública se vuelve crucial, ya que brinda a los sistemas la capacidad de reaccionar y recuperarse ante fallas sin perjudicar su funcionamiento. Los sistemas resilientes en la nube pública no buscan evitar estas fallas, sino aceptarlas y desarrollar servicios con la capacidad de recuperación necesaria para mantenerse en funcionamiento de manera activa.
Fallas comunes
Generalmente, los sistemas implementados en la nube se basan en arquitecturas distribuidas, las cuales están expuestas a una mayor cantidad de posibles errores en comparación con las aplicaciones del modelo clásico. Algunas de las fallas más comunes incluyen:
- Sobrecarga de componentes: este error provoca un aumento progresivo en el tiempo de respuesta, lo que puede resultar en errores de conexión.
- Microcortes de red: estos fallos causan problemas de conectividad.
- Caída de un componente: el cambio o reinicio de una ubicación puede ocasionar la caída de algún componente.
- Errores de hardware.
- Aumentos inesperados en la latencia de la red: la latencia en la red puede desencadenar timeouts de comunicación entre los componentes, lo que afecta la calidad del servicio.
Aunque las plataformas de la nube pública están diseñadas para detectar y solucionar algunos de estos fallos en la capa de infraestructura en la que se ejecutan las aplicaciones, es necesario aplicar ciertas prácticas a nivel de aplicación o software para lograr que sean másresilientes en la nube pública.
¿Qué es resiliencia en la nube?
La resiliencia en la nube se refiere a la capacidad de los sistemas para resistir y adaptarse a posibles fallas sin interrumpir la aplicación. Esto se logra mediante la implementación de parámetros específicos y el aprovechamiento de las capacidades de las plataformas de la nube para superar tales fallos. Los sistemas resilientes en la nube pública se basan en la aplicación de estas técnicas en cada una de las capas de las aplicaciones, es decir, la infraestructura y el software.
Capa de infraestructura resiliente
En este aspecto, la resiliencia se puede lograr a nivel de hardware mediante soluciones como el uso de unidades de almacenamiento redundantes (RAID) o fuentes de alimentación duplicadas. Aunque estas son buenas prácticas, solo abordan ciertos tipos de fallas, por lo que es recomendable combinarlas con otras técnicas para lograr los niveles deseados de resiliencia. Estos conceptos incluyen la redundancia y la escalabilidad.
Redundancia
En los sistemas resilientes en la nube pública, la redundancia implica replicar cada elemento del servicio, de modo que cualquier actividad o parte de una actividad pueda ser ejecutada por más de un componente. Para implementar la redundancia, se utiliza un balanceador de carga que distribuye el trabajo entre las réplicas dentro de cada grupo de trabajo. La cantidad de redundancia necesaria dependerá de los requisitos comerciales de la aplicación y también afectará su complejidad y costos.
Es recomendable identificar los flujos críticos del servicio y agregar redundancia en cada punto de los flujos para evitar «puntos únicos de falla», es decir, componentes del sistema cuyo fallo podría ocasionar una interrupción total del servicio. También se sugiere la redundancia multirregional con georrepliación de la información, así como la distribución de la carga mediante el balanceo por DNS para dirigir cada solicitud a la región geográficamente adecuada.
Escalabilidad
La escalabilidad es fundamental para lograr sistemas resilientes en la nube pública. Se refiere a la capacidad de ajustar los recursos del sistema según las cargas de trabajo que experimente. El sistema debe adaptarse al aumento o disminución del flujo de trabajo para evitar fallos como timeouts en la comunicación debido a tiempos de respuesta prolongados; degradación de los subsistemas de almacenamiento por solicitudes masivas de información, caídas del servicio debido a la sobrecarga de trabajo, entre otros.
Existen dos tipos de escalabilidad
- Escalado vertical (scale up): se basa en aumentar la potencia de una máquina, ya sea en términos de memoria, CPU, capacidad de almacenamiento, entre otros.
- Escalado horizontal (scale out): implica agregar más máquinas al sistema.
El escalado horizontal está directamente relacionado con la redundancia, lo que significa que un sistema no redundante no puede escalar horizontalmente. Para lograr una escalabilidad horizontal con redundancia, es necesario implementar un mecanismo de retroalimentación. Este debe permitir ajustar dinámicamente los recursos en función de la carga en tiempo real del sistema y las necesidades óptimas del momento.
En este punto, la capacidad de observabilidad también desempeña un papel importante; ya que proporciona métricas para monitorear las cargas y automatizar los sistemas de escalado automático en los sistemas
¿Qué es una aplicación resiliente?
Podemos concluir que los sistemas resilientes en la nube pública tienen la capacidad de enfrentar y recuperarse de posibles fallos; minimizando su impacto en el sistema en general. Por lo tanto, consideramos como aplicaciones resilientes aquellas que pueden hacer frente a errores y recuperarse de ellos para mantener un funcionamiento óptimo.
En un entorno digital en constante evolución y con sistemas cada vez más complejos, la importancia de contar con aplicaciones resilientes en la nube no puede ser subestimada. La capacidad de recuperación frente a posibles fallos garantiza la continuidad del negocio y la satisfacción de los usuarios, evitando interrupciones costosas y perjudiciales. CANVIA, como proveedor líder en soluciones tecnológicas, ofrece servicios especializados para ayudar a las grandes empresas a explorar y desarrollar aplicaciones resilientes en la nube. Si quieres conocer nuestros servicios, explora nuestra sección Digital Service.
También te puede interesar: ¿Aplicaciones obsoletas? Cinco estrategias para comenzar a modernizarlas en la nube