Julian David Alzate Cuervo
SLA es un documento que especifica todas las condiciones del servicio prestado, responsabilidades de cada una de las partes y las posibles soluciones en el caso de incumplimiento.
Diseñar una aplicación en la nube exige entender dos conceptos que definen su resiliencia: alta disponibilidad y tolerancia a fallos. Si trabajas con arquitecturas cloud y quieres que tu aplicación siga operando aunque falle un componente, esta guía te muestra cómo aplicarlos con un caso real: Platzi Wallet.
¿Qué es la alta disponibilidad en arquitecturas cloud?
La alta disponibilidad es la forma en la que despliegas tu aplicación para que siga funcionando aunque uno de sus componentes falle. Si despliegas Platzi Wallet en una sola zona de disponibilidad y esa zona cae, tu aplicación deja de operar y dejas de ser altamente disponible.
De ahí sale la primera regla práctica que vale la pena tatuarse: toda aplicación en la nube debe ejecutarse en al menos dos zonas de disponibilidad. Así, si una se cae, la otra sigue atendiendo el tráfico.
¿Qué es alta disponibilidad? Es la capacidad de una aplicación de seguir operativa cuando uno de sus componentes falla, gracias a desplegarla en al menos dos zonas de disponibilidad.
¿Cómo funciona la alta disponibilidad con Platzi Wallet?
Imagina que un usuario hace un pago. El request llega al balanceador de aplicaciones, que busca el microservicio de pagos desplegado en la zona 1 y la zona 2. Si la zona 2 se cae, el balanceador redirige el request a la zona 1 y el pago se procesa.
La aplicación sigue disponible. Eso es alta disponibilidad en acción [03:45].
¿Qué son el RTO y el RPO y por qué importan?
Para dimensionar bien la alta disponibilidad necesitas dos métricas hermanas que siempre van juntas: RTO y RPO. Una habla de tiempo, la otra habla de datos.
¿Qué es el RTO o recovery time objective?
El RTO (Recovery Time Objective) es el tiempo máximo que tu aplicación puede estar caída sin afectar la continuidad del negocio. Si decides que Platzi Wallet puede tardar 10 minutos en volver a operar tras un desastre regional, tu RTO es de 10 minutos. En esos 10 minutos automatizas el redespliegue usando infraestructura como código y vuelves a estar operativo [01:30].
Y aquí viene lo interesante: a menor RTO, el costo crece de forma exponencial. ¿Cómo logras un RTO casi cero? Teniendo dos Platzi Wallet corriendo en paralelo en regiones distintas bajo un modelo activo-pasivo, listo para hacer switch de DNS cuando una región caiga.
¿Qué es el RPO o recovery point objective?
El RPO (Recovery Point Objective) es el volumen de datos que estás dispuesto a perder antes de volver a estar operativo. No mide tiempo de caída, mide pérdida de información.
¿Cuál es la diferencia entre RTO y RPO? El RTO mide cuánto tiempo puedes estar caído. El RPO mide cuántos datos puedes perder. Uno es tiempo, el otro es punto de recuperación.
Un ejemplo claro: si haces backup de la base de datos de Platzi Wallet todos los días a las 8:00 a.m. y la base se rompe a las 7:59 a.m., perdiste casi 24 horas de registros. Tu RPO es de 24 horas. Si haces backup cada dos horas, en el peor caso pierdes dos horas de datos [02:50].
Cuando preguntas a un cliente cuál quiere que sea su RPO, casi siempre responde "cero". Lograrlo es posible con replicación activo-activo a nivel de base de datos, pero la complejidad técnica y el costo son altos.
¿Qué es la tolerancia a fallos y en qué se diferencia de la alta disponibilidad?
La tolerancia a fallos es la capacidad de soportar fallas en los sistemas y mantener la disponibilidad sin caída ni degradación del servicio. Es un concepto más grande que la alta disponibilidad y la contiene [04:20].
Aquí entran los SLA (Service Level Agreement), los acuerdos de nivel de servicio. Si le prometes a tu usuario que la aplicación estará inactiva como máximo una hora al mes, ese compromiso es tu SLA.
¿Cuándo una aplicación es tolerante a fallos y no solo altamente disponible?
Volvamos al ejemplo. Platzi Wallet tiene dos microservicios de pagos por zona. Si la zona 2 cae, sigues operando con dos microservicios en la zona 1, pero pasaste de cuatro a dos atendiendo el tráfico. La aplicación está disponible, pero hay degradación del servicio mientras escala.
Para ser tolerante a fallos deberías tener al menos cuatro microservicios por zona, de modo que ante una caída no haya degradación perceptible.
¿Una app tolerante a fallos es siempre altamente disponible? Sí. Si es tolerante a fallos, implícitamente es altamente disponible. Pero al revés no aplica: puedes ser altamente disponible sin ser tolerante a fallos.
¿Cómo aplicar estos conceptos en una estrategia de disaster recovery?
Definir RTO y RPO no es un ejercicio teórico. Es la base de tu estrategia de disaster recovery: si pasa algo, en cuánto tiempo vuelves a estar operativo y cuánta información pierdes.
Algunas ideas para guiar tus decisiones:
Ahora te toca a ti: piensa en una aplicación que estés diseñando, define su RTO y RPO, y ajusta la arquitectura según esos números. ¿Qué estrategia de disaster recovery elegirías y por qué? Cuéntame en los comentarios.
Alta Disponibilidad: Mantener un sistema funcionando incluso cuando ocurren problemas, minimizando el tiempo de inactividad y asegurando servicios continuos.
RTO (Tiempo de Recuperación Objetivo): El tiempo máximo deseado para que un sistema vuelva a funcionar después de una falla, reduciendo el impacto del tiempo de inactividad.
RPO (Punto de Recuperación Objetivo): La cantidad máxima de datos que una organización está dispuesta a perder en una interrupción, marcando cuán actualizados deben estar los datos recuperados.
Tolerancia a Fallos: La tolerancia a fallos es la capacidad de un sistema, aplicación o servicio para continuar funcionando de manera aceptable incluso cuando uno o varios componentes experimentan problemas o fallas. Implica diseñar sistemas de manera que sean capaces de manejar errores y problemas sin que todo el sistema se vea comprometido, lo que garantiza la disponibilidad y la continuidad de los servicios incluso en condiciones adversas.
Julian David Alzate Cuervo
SLA es un documento que especifica todas las condiciones del servicio prestado, responsabilidades de cada una de las partes y las posibles soluciones en el caso de incumplimiento.
José Pablo Cabrera Romo
Las estrategias de recuperación ante desastres, conocidas como Disaster Recovery (DR), son fundamentales para garantizar la continuidad de los negocios y la protección de los datos en situaciones de emergencia. Aquí tienes algunas estrategias comunes de Disaster Recovery:
Copias de seguridad regulares: Realizar copias de seguridad de los datos críticos y almacenarlas en ubicaciones seguras, ya sea en servidores locales o en la nube. Las copias de seguridad deben ser automáticas y se deben probar de forma periódica para asegurarse de que se pueden restaurar correctamente.
Replicación de datos: Configurar la replicación en tiempo real o cerca de tiempo real de los datos críticos en servidores o centros de datos secundarios. Esto garantiza que siempre haya una copia actualizada de los datos disponibles.
Centros de datos secundarios o fuera del sitio: Mantener un centro de datos secundario o un sitio de recuperación ante desastres en una ubicación geográfica diferente. Esto protege los datos y sistemas en caso de desastres naturales o incidentes locales.
Virtualización y contenedores: Utilizar tecnologías de virtualización y contenedores para permitir la rápida implementación de sistemas y aplicaciones en servidores alternativos en caso de una falla en el servidor principal.
Plan de Continuidad de Negocios (BCP): Desarrollar un plan de continuidad de negocios que detalle cómo se debe actuar en caso de desastres. Esto debe incluir la asignación de funciones y responsabilidades, la comunicación con el personal y proveedores, y los pasos específicos para la recuperación.
Pruebas de recuperación ante desastres: Realizar pruebas periódicas de DR para asegurarse de que todos los procedimientos funcionen correctamente. Esto ayuda a identificar posibles problemas antes de que ocurra un desastre real.
Servicios de nube para DR: Utilizar servicios de nube como parte de su estrategia de DR. Muchos proveedores de nube ofrecen servicios específicos de recuperación ante desastres que pueden facilitar la recuperación y reducir los costos.
Recuperación de datos en tiempo real (RTO) y punto de recuperación (RPO): Definir objetivos claros para el tiempo de recuperación (cuánto tiempo puede pasar antes de que se restaure el servicio) y el punto de recuperación (cuántos datos se pueden perder). Estos objetivos varían según la crítica de la aplicación y los datos.
Almacenamiento resiliente: Utilizar tecnologías de almacenamiento resiliente, como RAID, para proteger los datos contra fallos de hardware.
Educación y capacitación del personal: Asegurarse de que el personal esté capacitado y preparado para responder adecuadamente a situaciones de recuperación ante desastres.
Es importante adaptar las estrategias de DR a las necesidades y presupuesto de su organización. Un enfoque adecuado para la recuperación ante desastres puede minimizar el tiempo de inactividad y proteger los activos críticos en caso de cualquier incidente inesperado.
Piero Nolte
Excelente aporte!
Lucas Rojas
Alta Disponibilidad
💡 La disponibilidad se refiere al hecho de cuanto tiempo se encuentra un servicio disponible, para acceder al mismo.
¿Por qué perderíamos disponibilidad?
💡 Alta disponibilidad: Contar con la mayor cantidad de tiempo de disponibilidad de nuestros recursos. ✅ Lo ideal es contar con la mayor cantidad de tiempo de disponibilidad en nuestros recursos. Los proveedores en la nube, brindan un Acuerdo de Nivel de Servicio (SLA) que garantiza cierto nivel de disponibilidad de los recursos con un porcentaje (%). Este acuerdo es muy cercano al 100%. 💯 Únicamente aplica para los recursos controlados por el proveedor. 🌐
Tolerancia a Fallos
💡 Tolerancia a Fallos Es la capacidad de permanecer en funcionamiento incluso en el caso de que un componente o servicio deje de funcionar.
Características:
Walter Omar Barrios Vazquez
What is a Service Level Agreement (SLA)?
A service level agreement (SLA) is an outsourcing and technology vendor contract that outlines a level of service that a supplier promises to deliver to the customer. It outlines metrics such as uptime, delivery time, response time, and resolution time. An SLA also details the course of action when requirements are not met, such as additional support or pricing discounts. SLAs are typically agreed upon between a client and a service provider, although business units within the same company can also make SLAs with each other.
Fuente: AWS
Alex Naupay
En el ejemplo de Alta disponibilidad: Hay aplicaciones en las 2 AZs (AZ1,AZ2), el balanceador de carga dónde está?
Carlos Andrés Zambrano Barrera
Profesorel balanceador de carga esta en las subredes públicas balanceando el tráfico en las 2azs
Gildder Guerrero Ramirez
El SLA (Service Level Agreement) es un acuerdo que define el nivel de servicio esperado entre un proveedor y un cliente, incluyendo métricas de rendimiento como tiempo de actividad y respuesta. Se relaciona con la tolerancia a fallos ya que un SLA bien definido establece expectativas sobre la disponibilidad continua, incluso en caso de fallas. Una aplicación tolerante a fallos debe cumplir con los SLAs, asegurando que, a pesar de fallos en componentes, el servicio se mantiene disponible y sin degradación significativa.
Enrique Rojas Reyes
seria util que #Bancolombia tome esta clase jajajajaja
Mauricio Ruiz Rubio
Diferencias entre DRP y BCP:
Eyair Raul Ayala Flores
¿Cómo defino el RTO ideal?
El RTO (Recovery Time Objective) se define respondiendo a una pregunta de negocio muy cruda: ¿Cuánto dinero o reputación pierdo por cada minuto que mi sistema está apagado? No es una decisión puramente técnica, sino financiera.
Si tienes un blog personal, quizás puedas soportar estar fuera de línea por 8 horas mientras restauras un servidor. Tu RTO sería de 8 horas y la solución es barata. Pero si operas una pasarela de pagos o una aplicación financiera, cada segundo caído cuesta miles de dólares. En ese caso, tu RTO debe ser de minutos o incluso segundos. Para lograr un RTO casi nulo, necesitas estrategias avanzadas como un modelo activo-activo, donde tienes réplicas exactas de tu infraestructura corriendo en diferentes regiones simultáneamente. Debes equilibrar el costo de la caída frente al costo exponencial de mantener esa infraestructura redundante.
Julian Mauricio Perez Mora
El modelo SaaS (Software como Servicio) elimina por completo la carga operativa porque consumes un producto finalizado. Piensa en esto como ir a un restaurante: no lavas los platos, no cocinas y no compras los ingredientes; solo disfrutas la comida. Al integrar soluciones SaaS en tu arquitectura, como un servicio de autenticación de usuarios, envío de correos electrónicos o APIs de reconocimiento de imágenes, te liberas de programar y mantener esas funcionalidades desde cero. Simplemente realizas una llamada a la API del proveedor y obtienes el resultado inmediato. Esto acelera el Time to Market de tu aplicación de forma increíble. Tu única responsabilidad será gestionar los accesos y pagar por lo que consumes, permitiendo que tus desarrolladores inviertan su tiempo en crear el valor único y central de tu negocio.
Jan Cobian
¿Es posible evitar degradar el servicio?
Sí, es totalmente posible, y se logra mediante el sobreaprovisionamiento estratégico y el autoescalado rápido. La degradación ocurre cuando un componente falla y los componentes sobrevivientes se saturan por el tráfico reasignado.
Para evitarlo, en lugar de diseñar tu infraestructura con los recursos justos para operar en un día normal, debes diseñarla pensando en el peor escenario. Si necesitas 4 microservicios para atender a tus usuarios fluidamente, no pongas 2 en la Zona A y 2 en la Zona B. Si la Zona A cae, te quedarás solo con 2, degradando el servicio. La solución es colocar 4 en la Zona A y 4 en la Zona B. Aunque esto incrementa los costos operativos, garantiza que ante la pérdida total de un centro de datos, tu aplicación mantenga el 100% de su capacidad de respuesta. Es el precio a pagar por una verdadera tolerancia a fallos.
Osvaldo Chípuli
Minimizar RTO (tiempo de recuperación) o RPO (pérdida de datos) implica arquitecturas más complejas, como replicación activo-activo entre regiones o backups muy frecuentes. Estas soluciones requieren duplicar recursos y la infraestructura necesaria, lo que aumenta exponencialmente los costos operativos, aunque aseguren mayor continuidad.
Rommer Batista
Es importante entender que alta disponibilidad busca una recuperación eficiente y rápida post-fallo con redundancia. Tolerancia a fallos va un paso más allá, usando componentes duplicados activos en tiempo real para que una falla no genere interrupción perceptible, esencial en sistemas de misión crítica donde cada segundo cuenta.
Jose Luis Quintero Sánchez
<u>Estrategias de recuperación en Azure</u>
Azure cuenta con 3 principales servicios para DRP:
Kevin Guzman
Suponiendo que tengo mi aplicación ejemplo Nequi, tendría sin duda para mejorar el RTO, por lo menos tres zonas Az1, 2, 3, también usaría sin duda, Kubernetes en GCP, así pues usando contenedores para cada uno de mis servicios sean serverless o no, tendré un deamon que estará levantandome nuevas instancias en cuanto se caigan, también por medio de argo podría automatizar el despliegue e integración continua, así asegurando que mi aplicación estará recuperada en caso de que sea una cuestión de error humano y demás.
Para el RPO, usaría replicación dependiendo de qué tipo de BD tenga, e implementaría también un tema de bkps automáticos diarios, o sería mejor por medio de la cantidad de datos ingresados?, no sé cómo se podría hacer pero podría implementarse.
Gildder Guerrero Ramirez
La alta disponibilidad y la tolerancia a fallos son conceptos fundamentales en arquitecturas de nube. La alta disponibilidad se refiere a la capacidad de una aplicación de seguir funcionando a pesar de fallos en componentes, lo que implica desplegarla en múltiples zonas de disponibilidad. Por otro lado, la tolerancia a fallos es la capacidad de un sistema de soportar fallas y mantener la disponibilidad sin degradar el servicio. En resumen, una aplicación puede ser altamente disponible sin ser tolerante a fallos, pero si es tolerante a fallos, automáticamente es altamente disponible.
Gildder Guerrero Ramirez
La tolerancia a fallos es la capacidad de un sistema para continuar operando a pesar de la presencia de fallas en algunos de sus componentes. Esto implica que incluso si una parte del sistema falla, el sistema en su conjunto debe seguir funcionando sin interrupciones significativas. En el contexto de la nube, esto se relaciona estrechamente con la alta disponibilidad, ya que un sistema tolerante a fallos puede mantener la disponibilidad del servicio, aunque experimenta contratiempos en alguna de sus partes.
Gildder Guerrero Ramirez
El RPO, o Recovery Point Objective, es el punto de recuperación objetivo en una estrategia de recuperación de desastres. Se refiere a la cantidad máxima de datos que una organización está dispuesta a perder en caso de una interrupción. Por ejemplo, si una base de datos se respalda cada 24 horas, el RPO sería de 24 horas, lo que implica que se podrían perder hasta 24 horas de datos en caso de una falla. Este concepto es clave para diseñar arquitecturas de alta disponibilidad y tolerancia a fallos en sistemas en la nube.
Gildder Guerrero Ramirez
Para calcular el RTO (Recovery Time Objective) de una empresa de manera realista, se deben considerar varios factores:
Análisis de Impacto en el Negocio (BIA): Evalúa cuánto tiempo puede estar inactiva la empresa sin afectar gravemente su operación y finanzas.
Identificación de Procesos Críticos: Determina qué aplicaciones y servicios son esenciales para la continuidad del negocio.
Consultas con Stakeholders: Recopila información de los líderes de cada área sobre sus necesidades de recuperación.
Simulaciones y Pruebas: Realiza ejercicios para medir tiempos de recuperación en situaciones de desastre.
Documentación y Revisión Continua: Actualiza el RTO regularmente, ya que las necesidades pueden cambiar con el tiempo.
Este proceso asegura que el RTO sea realista y alineado con las necesidades estratégicas de la empresa.