La resiliencia de las aplicaciones es la capacidad del software para mantener la funcionalidad principal durante interrupciones imprevistas, como fallos de componentes, interrupciones o picos repentinos de carga de trabajo. Las aplicaciones resilientes ayudan a garantizar la continuidad del negocio, proteger la experiencia y minimizar el tiempo de inactividad.
Las aplicaciones potencian prácticamente todos los aspectos de los negocios modernos, desde el procesamiento de transacciones de clientes y la gestión de la cadena de suministro hasta permitir la colaboración de los empleados y el análisis de datos en tiempo real.
Cuando estas aplicaciones fallan, el impacto puede ser grave. Tiempo de inactividad: períodos en los que una aplicación no está disponible o no puede funcionar correctamente, puede resultar en daños a la reputación, experiencia de usuario degradada y pérdidas financieras significativas.
De hecho, el 98 % de las organizaciones informan ahora de que los costes por tiempo de inactividad superan los 100 000 USD por hora, y un tercio estima pérdidas de 1-5 millones de dólares.
Al diseñar e implementar aplicaciones resilientes, las organizaciones pueden evitar y mitigar estas interrupciones.
La resiliencia de las aplicaciones depende de dos principios básicos:
Las aplicaciones resilientes ayudan a reducir las vulnerabilidades en la arquitectura de aplicaciones, mejoran la eficacia operativa y garantizan una experiencia de usuario coherente incluso ante interrupciones inesperadas.
Boletín del sector
Manténgase al día sobre las tendencias más importantes e intrigantes del sector en materia de IA, automatización, datos y mucho más con el boletín Think. Consulte la Declaración de privacidad de IBM.
Su suscripción se enviará en inglés. Encontrará un enlace para darse de baja en cada boletín. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.
Para crear e implementar aplicaciones resilientes, los desarrolladores y los equipos de TI pueden utilizar varias herramientas y prácticas a lo largo del ciclo de vida de la aplicación.
Los componentes comunes de las aplicaciones resilientes son:
La redundancia significa tener copias de seguridad de los sistemas críticos. Si un sistema falla, la copia de seguridad se hace cargo y ayuda a garantizar que el sistema continúe funcionando.
Por ejemplo, es probable que un servicio de procesamiento de pagos tenga varias copias del servicio ejecutándose en diferentes servidores. Si un servidor falla, las copias en otros servidores pueden asumir automáticamente la carga de trabajo para que los clientes no noten ningún problema.
Las organizaciones suelen generar redundancia en áreas clave:
El equilibrio de carga implica distribuir el tráfico de red de manera eficiente entre varios servidores para ayudar a optimizar la disponibilidad de las aplicaciones. Es crítico para la resiliencia de la aplicación porque permite a los sistemas mantener el rendimiento y la disponibilidad incluso cuando los componentes individuales fallan o se sobrecargan.
Por ejemplo, si un servidor deja de responder, el equilibrador de carga puede redirigir automáticamente el tráfico a otros servidores en buen estado, manteniendo la aplicación en línea.
La contención de fallos es una práctica de diseño que aísla los componentes críticos dentro de un sistema distribuido, evitando que los problemas localizados se conviertan en interrupciones en todo el sistema.
La contención es especialmente importante en las arquitecturas de microservicios, donde un fallo en un servicio puede afectar rápidamente a muchas otras dependencias si no se contiene adecuadamente.
Las mallas de servicio son especialmente útiles para contener errores. Estas capas de infraestructura ayudan a gestionar la comunicación entre los microservicios en las aplicaciones distribuidas, proporcionando:
En conjunto, estas capacidades ayudan a garantizar que las fallas en un servicio no se propaguen a otros. Por ejemplo, supongamos que un motor de recomendación de productos falla en un sitio de comercio electrónico. Una malla de servicio puede detectar esta falla, evitar que las solicitudes lleguen al servicio dañado y redirigir el tráfico en consecuencia. Los usuarios pueden continuar navegando y comprando sin interrupciones.
La observabilidad permite a los equipos monitorizar el estado del sistema en tiempo real mediante el uso de tres tipos clave de datos: métricas (indicadores de rendimiento como tiempos de respuesta), registros (registros de eventos como errores o bloqueos) y rastreos (el recorrido completo que realiza una solicitud a través de un sistema).
Al capturar y analizar estas señales, los equipos pueden detectar anomalías, diagnosticar problemas rápidamente y reducir el tiempo de inactividad. Por ejemplo, si un cliente informa de que una página web se carga lentamente, las herramientas de observabilidad pueden ayudar a los ingenieros a rastrear la solicitud hasta el servicio que causó la demora y corregir el problema antes de que afecte a más usuarios.
La automatización desempeña un papel crítico en la resiliencia de la aplicación, ya que permite a los sistemas responder a los problemas sin necesidad de intervención manual.
Por ejemplo, las herramientas de observabilidad detectan problemas y la redundancia proporciona recursos de copia de seguridad. La automatización es lo que conecta estas capacidades, orquestando el proceso de recuperación. Una automatización eficaz puede reducir significativamente el tiempo de recuperación, convirtiendo lo que podrían ser horas de resolución manual de problemas en segundos de respuesta automatizada.
Entre las respuestas automatizadas clave en la resiliencia de las aplicaciones se incluyen:
Herramientas como Kubernetes, un sistema de código abierto para gestionar aplicaciones en contenedores, demuestran cómo la automatización une los componentes de resiliencia. Kubernetes puede detectar fallos mediante comprobaciones de estado integradas, reprogramar cargas de trabajo en nodos en buen estado y mantener la continuidad del servicio mediante flujos de trabajo automatizados.
La degradación elegante implica mantener la funcionalidad principal mientras se eliminan las características no esenciales durante el estrés. Por ejemplo, durante los picos de tráfico del Black Friday, un minorista podría desactivar temporalmente las reseñas de los clientes y las listas de deseos para ayudar a garantizar que el carrito de la compra y el proceso de pago sigan funcionando.
Las aplicaciones escalables pueden ajustar automáticamente los recursos en función de las demandas de la carga de trabajo. Esta capacidad ayuda a garantizar el rendimiento y la disponibilidad incluso cuando el tráfico fluctúa.
La escalabilidad se puede lograr de muchas maneras. Por ejemplo, las plataformas basadas en la nube proporcionan escalabilidad a través de capacidades como equilibradores de carga integrados, autoescalado y replicación multirregión, es decir, copia de datos y servicios en múltiples ubicaciones geográficas para mejorar el rendimiento y la fiabilidad. Estas capacidades permiten a los servicios distribuir el tráfico de forma inteligente, mantener el tiempo de actividad y minimizar el tiempo de recuperación en respuesta a condiciones cambiantes.
Por ejemplo, una plataforma de streaming alojada en la nube suele funcionar en 100 servidores. Pero durante un evento global en directo, puede escalar automáticamente a 10 000 servidores en varias regiones, proporcionando una reproducción fluida para millones de espectadores simultáneos.
Dado que las aplicaciones de software se han vuelto esenciales tanto para las operaciones comerciales como para la vida cotidiana de los consumidores, es imperativo que estas aplicaciones resistan interrupciones inesperadas y sigan funcionando en casi todas las condiciones.
Cuatro factores en particular impulsan el creciente énfasis en la resiliencia de las aplicaciones.
Los clientes esperan que los servicios digitales funcionen siempre. Según Google, el 53 % de los visitantes abandonan una página móvil si tarda más de tres segundos en cargarse.
Ya sea una aplicación bancaria, una plataforma de comercio electrónico o un portal sanitario, el tiempo de inactividad puede desencadenar deserciones de clientes, reacciones negativas en las redes sociales y daños duraderos a la marca. La disponibilidad de la aplicación no es solo una métrica técnica, sino un requisito empresarial fundamental.
Las interrupciones de las aplicaciones pueden ser costosas para organizaciones de todos los tamaños. Considere un escenario común: una venta minorista lanza un evento de ventas de alto tráfico, pero el servicio de pago falla debido a la demanda adicional. En cuestión de minutos, miles de transacciones se estancan, los clientes se frustran y la empresa pierde ingresos.
Más allá de la pérdida de ventas, las interrupciones pueden desencadenar una cascada de costes secundarios, desde gastos de corrección e infracciones de los acuerdos de nivel de servicio (SLA) hasta sanciones normativas, indemnizaciones a los clientes y daños a la marca a largo plazo.
Los recientes incidentes de gran repercusión muestran lo significativo que puede ser el impacto:
Las arquitecturas de aplicaciones modernas tienen muchas partes móviles: microservicios, entornos multinube, bibliotecas de códigos y más. Aunque estos componentes modulares mejoran la escalabilidad, también aumentan el número de posibles puntos de fallo.
Sin un diseño y una implementación resiliente, incluso los problemas menores pueden agravarse. El fallo de un solo microservicio puede propagarse por docenas de dependencias. Por ejemplo, si un servicio de base de datos que almacena información sobre productos deja de funcionar, puede interrumpir otras característica, como la búsqueda, las recomendaciones o el pago.
Las interrupciones de red entre regiones de la nube también pueden fragmentar los servicios y provocar incoherencias en los datos. A diferencia de un error de microservicio en el que un componente deja de funcionar por completo, estos problemas de conectividad crean un escenario de "cerebro dividido": diferentes partes de la aplicación continúan ejecutándose pero no pueden comunicarse entre sí.
Por ejemplo, el sistema de pedidos de una aplicación de comercio financiero podría desconectarse de los precios en tiempo real, causando a los usuarios ver cotizaciones incorrectas o tener experiencias de operaciones fallidas.
Las interrupciones de la interfaz de programación de aplicaciones (API) también pueden interrumpir la funcionalidad crítica. Mientras que los fallos de microservicios afectan a los componentes internos que controla la organización, las interrupciones de API implican servicios de terceros de los que depende una aplicación pero que no pueden realizar correcciones directamente. Por ejemplo, si el servicio de mapas de una aplicación de entrega se cae, los usuarios no pueden rastrear a los controladores y los controladores no pueden encontrar rutas, lo que interrumpe la experiencia aunque la aplicación siga funcionando.
En ciertos sectores y ubicaciones, los reguladores han establecido requisitos estrictos para la disponibilidad de datos, las capacidades de recuperación de aplicaciones, la mitigación de la pérdida de datos y el tiempo de actividad. Estos requisitos elevan la resiliencia de las aplicaciones de un objetivo técnico a un problema de cumplimiento.
Algunas leyes de protección y privacidad de datos ahora incluyen estándares de disponibilidad junto con mandatos de seguridad. Por ejemplo, el Reglamento General de Protección de Datos (RGPD) exige que los datos personales permanezcan protegidos y accesibles. En caso de fallo del sistema, se espera que las organizaciones recuperen los datos perdidos.
Los sectores altamente regulados, en particular, se enfrentan a algunos de los estándares más rigurosos.
Aunque la Ley Sarbanes-Oxley (SOX) no exige explícitamente planes de recuperación ante desastres, muchas organizaciones mantienen sistemas de copia de seguridad y procedimientos de recuperación formales para ayudar a cumplir (y demostrar el cumplimiento) con la ley.
Las instituciones financieras también se enfrentan a regulaciones y recomendaciones específicas del sector de organismos como el Consejo Federal de Examen de Instituciones Financieras (FFIEC), que proporciona orientación detallada sobre la planificación de la continuidad del negocio y los objetivos de tiempo de recuperación.
En virtud de la Ley de Portabilidad y Responsabilidad del Seguro Médico (HIPAA), las entidades cubiertas deben implementar salvaguardas administrativas, físicas y técnicas para ayudar a garantizar la disponibilidad e integridad de la información médica protegida electrónica (ePHI). Aunque la HIPAA no exige el acceso 24x7, requiere que las organizaciones sanitarias mantengan el acceso a los datos del paciente cuando sea necesario para el tratamiento.
La regla de seguridad de la HIPAA requiere planes de copia de seguridad de datos, procedimientos de recuperación ante desastres y operaciones en modo de emergencia, lo que lleva a muchas organizaciones a invertir en estrategias avanzadas de conmutación por error y replicación de datos.
Para ayudar a garantizar que los sistemas puedan soportar interrupciones del mundo real, las organizaciones validan la resiliencia de las aplicaciones a través de una combinación de medición continua y pruebas proactivas. Estos enfoques permiten a los equipos monitorear el rendimiento, identificar vulnerabilidades y confirmar si las aplicaciones pueden recuperarse de manera rápida y efectiva.
Los equipos de DevOps, en particular, integran con frecuencia prácticas de resiliencia en pipelines de integración continua/entrega continua (pipelines CI/CD). Esto les permite automatizar las pruebas de los procedimientos de conmutación por error, validar los cambios de configuración y revertir las implementaciones inestables para detectar problemas a tiempo y evitar que las interrupciones lleguen a los usuarios.
Las organizaciones confían en varias métricas clave para evaluar la resiliencia de las aplicaciones.
El RTO es el tiempo de inactividad máximo permitido antes de que se deba restaurar un sistema. El RTO ayuda a definir las expectativas de recuperación y respalda la recuperación ante desastres y la planificación de la continuidad del negocio.
Las organizaciones establecen RTO basándose en el análisis de impacto empresarial: determinando cuánto tiempo puede estar inactivo cada sistema antes de causar daños inaceptables a las operaciones, los ingresos o la experiencia del cliente.
Por ejemplo, un sistema de procesamiento de pagos puede tener un RTO de cinco minutos, mientras que una herramienta de informes internos puede tolerar 24 horas.
El MTTR es el tiempo que se tarda en restablecer el servicio tras un fallo. Las organizaciones miden el MTTR mediante herramientas de gestión de incidentes y plataformas de monitorización que rastrean automáticamente el tiempo transcurrido entre la detección del fallo y la restauración del servicio. Un MTTR más bajo significa una recuperación más rápida y una mejor experiencia de usuario.
El MTBF es el tiempo medio de funcionamiento entre fallos del sistema. Ofrece conocimiento de la frecuencia con la que se producen las interrupciones y se calcula dividiendo el total de horas operativas por el número de averías, que suelen rastrearse a través de sistemas de supervisión automatizados y registros de incidentes.
Los presupuestos de errores se refieren al nivel aceptable de tiempo de inactividad dentro de los objetivos de nivel de servicio. Los presupuestos de errores pueden permitir a los equipos asumir riesgos calculados. Si un servicio ha utilizado solo el 20 % de su presupuesto mensual de errores, los equipos pueden implementar nuevas características de forma más agresiva. Si el presupuesto está casi agotado, se centran en mejorar la estabilidad.
Los cuadros de mando de resiliencia son informes completos que utilizan datos de redundancia, latencia y recuperación para establecer una referencia de resiliencia de las aplicaciones e identificar oportunidades de mejora. Estos cuadros de mando suelen generarse mediante plataformas de observabilidad que agregan métricas de múltiples herramientas de monitorización.
Las organizaciones recurren cada vez más a las pruebas para obtener una perspectiva más realista. Mientras que las métricas pueden proporcionar una base, las pruebas pueden ayudar a las organizaciones a pasar de la preparación teórica a una resiliencia probada.
La ingeniería del caos es la práctica de introducir fallos controlados (como cerrar servidores, inyectar latencia o provocar pérdidas de conectividad) para comprobar cómo las aplicaciones se recuperan bajo estrés.
Por ejemplo, herramientas como Chaos Monkey de Netflix ponen fin aleatoriamente a instancias de aplicaciones para probar si los servicios pueden soportar cortes inesperados.
Las simulaciones de desastres son escenarios a gran escala que imitan grandes interrupciones o ataques para evaluar la recuperación técnica, la comunicación y la coordinación entre equipos.
Las simulaciones, como los ataques de ransomware y los fallos en la región de la nube, ayudan a las organizaciones a poner a prueba la arquitectura de las aplicaciones e identificar las brechas en los planes de recuperación ante desastres.
La inteligencia artificial (IA) y el machine learning (ML) están remodelando la forma en que las organizaciones abordan la resiliencia. Estas tecnologías aportan nuevas y potentes herramientas para evitar el tiempo de inactividad, pero también plantean retos únicos.
Uno de los mayores desafíos es que las cargas de trabajo de IA consumen muchos recursos. Muchos modelos se basan en unidades de procesamiento de gráficos (GPU), que son costosas y difíciles de duplicar en todas las regiones de la nube. Eso hace que la redundancia, una parte esencial de la resiliencia, sea más difícil de lograr.
Los sistemas de IA también pueden fallar de forma inesperada. Con el tiempo, su precisión podría degradarse, un problema conocido como desviación del modelo. O pueden encontrarse con entradas adversarias: datos maliciosos diseñados para engañar al sistema. Estos tipos de fallos pueden ser más difíciles de predecir y contener.
Además, cuando las características de IA se ralentizan o dejan de funcionar, un problema común en los entornos de nube debido a limitaciones de recursos o latencia, el resto de la aplicación aún debe funcionar de manera confiable, lo que ejerce una presión adicional sobre las estrategias de degradación elegantes.
Al mismo tiempo, la IA tiene importantes casos de uso para mejorar la resiliencia:
En resumen, aunque la IA introduce una nueva complejidad, también puede permitir una recuperación más rápida, una monitorización más inteligente y aplicaciones más resilientes en general, especialmente cuando se integra en entornos nativos de la nube y pipelines de DevOps.
Agilice la gestión de aplicaciones y obtenga información generada por IA sobre la que pueda actuar utilizando IBM Concert, una plataforma de automatización tecnológica impulsada por IA generativa.
Combine la capacidad de observabilidad full stack con la gestión de recursos de aplicaciones automatizada para resolver los problemas de rendimiento antes de que afecten a la experiencia del cliente.
Descubra los servicios altamente innovadores de IBM para la gestión de entornos complejos, híbridos y multinube.