Basado en este documento de la documentación oficial
Descripción del Documento
Este documento describe las políticas de recuperación de desastres para la infraestructura de Lapachos Lending implementada en una arquitectura serverless en AWS. El objetivo es garantizar la disponibilidad y recuperación rápida de nuestros servicios críticos en caso de una interrupción o desastre, minimizando la pérdida de datos y el impacto en nuestros usuarios.
Definiciones
El objetivo de punto de recuperación RPO (Recovery Point Objective) es la brecha máxima aceptable entre los datos en el sitio de recuperación de desastres y los últimos datos almacenados en la aplicación cuando ocurre el desastre. Este objetivo de recuperación determina lo que se considera una pérdida de datos aceptable (medida en unidades de tiempo) que puede ser causada por un desastre.
El objetivo de tiempo de recuperación RTO (Recovery Time Objective) es el retraso máximo aceptable entre la interrupción de una aplicación y la restauración de su servicio. Este objetivo de recuperación determina lo que se considera una ventana de tiempo aceptable cuando una aplicación no está disponible.
El Plan de Recuperación de Desastres (DRP) es un conjunto de procedimientos documentados que deben seguirse para recuperar y restaurar la infraestructura tecnológica y los servicios después de un evento catastrófico. Su propósito es garantizar la continuidad del negocio minimizando el tiempo de inactividad y la pérdida de datos.
Restauración de Servicios Críticos
RDS Amazon Aurora (Serverless v2)
Los datos relacionales almacenados en Amazon Aurora son vitales para el funcionamiento de nuestros sistemas, y es fundamental mantenerlos respaldados con las dos modalidades de backup que ofrece RDS Amazon Aurora:
Aurora Continuous Backup: Este tipo de respaldo se realiza de forma continua, lo que permite la restauración a cualquier punto en el tiempo dentro del período de retención de datos configurado. Esta modalidad es fundamental para minimizar la pérdida de datos y garantizar un RPO corto, ya que permite una recuperación precisa y rápida.
Snapshots Diario: Además de los respaldos continuos, Amazon Aurora también realiza snapshots diarios que se almacenan durante un período prolongado. Estos snapshots permiten tener puntos de restauración más antiguos, lo cual es útil para recuperación ante incidentes más graves o situaciones que requieran restauraciones específicas a fechas pasadas.
Datos Almacenados
Préstamos: Detalles sobre los préstamos otorgados, incluyendo el monto, tasas de interés y plazos.
Adelantos: Información sobre adelantos de crédito proporcionados a los clientes, incluyendo las condiciones y fechas de vencimiento.
Clientes: Información detallada de los clientes, incluyendo datos personales y financieros.
Proveedores: Datos de proveedores con los que se tienen relaciones comerciales, tales como información de contacto, contratos y servicios proporcionados.
Relaciones Comerciales: Información sobre relaciones entre clientes y préstamos, así como las condiciones comerciales específicas asociadas a cada cliente o proveedor.
Facturas: Detalles sobre las facturas emitidas y recibidas, incluyendo montos, fechas de emisión y vencimiento, y estados.
Pagos: Información sobre pagos realizados por los clientes, fechas y montos.
Método de Recuperación
En Amazon Aurora se pueden utilizar dos modalidades de recuperación:
Recuperación Continua (PITR): En caso de un desastre, se llevará a cabo restaurando los respaldos más recientes mediante la funcionalidad de restauración a un punto en el tiempo (PITR). Esta modalidad permite restablecer la base de datos hasta el momento más cercano antes del incidente, minimizando la pérdida de datos.
RPO: 15 minutos. Este es el tiempo máximo de pérdida de datos aceptable, asegurando que solo se pierda un mínimo de información en caso de un desastre.
RTO: 30 minutos. Este es el tiempo máximo aceptable para restablecer el servicio y asegurar que la base de datos esté operativa nuevamente.
Recuperación a partir de Snapshots Diarios: La recuperación desde snapshots puede llevar un poco más de tiempo, pero proporciona un respaldo sólido en caso de problemas significativos o de largo plazo.
RPO: Hasta 24 horas. Dado que los snapshots se realizan diariamente, la posible pérdida de datos puede ser mayor en comparación con la recuperación continua.
RTO: 2 horas. Este es el tiempo depende del tamaño del respaldo a restaurar.
Amazon DynamoDB
Se implementarán respaldos diarios automáticos, utilizando la funcionalidad de backup y restore de DynamoDB, así como puntos de restauración (PITR) para garantizar la recuperación en caso de pérdida o corrupción de datos.
Amazon S3
Los respaldos de objetos críticos almacenados en S3 se ejecutarán de forma diaria, aprovechando el versionado de S3 y la replicación cruzada de regiones para evitar pérdidas de datos. Las versiones de los objetos se mantendrán durante 90 días, y las versiones obsoletas se eliminarán automáticamente siguiendo una política de ciclo de vida para optimizar el almacenamiento.
AWS Lambda, API Gateway, AWS Step Functions, AWS AppSync y AWS Amplify
Estos servicios son críticos para el funcionamiento de la infraestructura serverless. Por ejemplo, las configuraciones de API Gateway, Lambda y Step Functions se gestionan con el framework Serverless y se respaldan en el repositorio de código utilizando Git para garantizar que se puedan restaurar rápidamente. Todo el despliegue se realiza con AWS CodeBuild para automatizar el proceso de implementación. Todas las configuraciones de los recursos están documentadas junto con los pasos necesarios para recrear cualquier ambiente en el documento de Despliegue (LAP-TECH-001-ES). En caso de una interrupción mayor, se podrán desplegar nuevamente utilizando AWS CloudFormation.
Ejecuciones de Step Functions
Las ejecuciones de AWS Step Functions son importantes, y se registran las entradas y salidas de las ejecuciones para facilitar la restauración manual o la re-ejecución en caso de interrupción.
Frecuencia de Respaldos y Estrategias de Recuperación
Amazon Aurora y DynamoDB
Se realizan respaldos diarios automáticos, con opciones de restauración a un punto en el tiempo (PITR). Estos respaldos se conservarán por un período de 30 días.
Amazon S3
Se habilitará el versionado y se ejecutarán respaldos diarios para garantizar que todos los datos almacenados puedan recuperarse rápidamente en caso de pérdida.
Servicios Serverless
Las configuraciones de API Gateway, Lambda, Step Functions y AppSync serán respaldadas mediante exportaciones automatizadas y plantillas de infraestructura.
Plan de Recuperación de Desastres (DRP)
En caso de una caída total de los servicios y la necesidad de levantar un nuevo entorno productivo, se seguirán los siguientes pasos:
1- Evaluación del Impacto
Determinar el alcance del impacto y los servicios afectados.
2 - Activación del Plan de Recuperación
Notificar al equipo técnico y de operaciones y activar el plan de recuperación.
3 - Recreación del Ambiente
Servicios Críticos (DynamoDB, Aurora, S3)
Restaurar los respaldos más recientes y validar la integridad de los datos.
API Gateway, Lambda, Step Functions, AppSync y Amplify
Desplegar nuevamente utilizando plantillas de CloudFormation y scripts de CodeBuild para recrear la configuración original y levantar los servicios rápidamente.
4 - Verificación de Servicios
Realizar pruebas de integridad y funcionalidad para asegurarse de que los servicios estén funcionando correctamente. Esto incluye:
Métricas y Herramientas de Monitoreo
Utilizar herramientas como Amazon CloudWatch para monitorear métricas clave de rendimiento, incluyendo tiempos de respuesta y errores de API Gateway, latencia de Lambda, y flujos de Step Functions.
Pruebas Automatizadas
Ejecutar pruebas automatizadas con AWS CodeBuild para validar la funcionalidad de los servicios después de la restauración.
Verificación de AWS Amplify
Confirmar que las aplicaciones web y móviles desplegadas con Amplify estén accesibles y que todos los recursos conectados funcionen sin problemas.
Pruebas de Conectividad
Verificar que los endpoints de API Gateway estén accesibles y respondiendo adecuadamente.
Ejecución de Lambdas
Probar la ejecución de funciones Lambda críticas para asegurarse de que el código se ejecute sin errores y las dependencias estén disponibles.
Verificación de Step Functions
Asegurarse de que las ejecuciones de Step Functions se completen como se espera, verificando el flujo y las salidas de cada estado.
Pruebas de Integración con AppSync
Verificar que las consultas y mutaciones de AppSync funcionen correctamente y que los datos sean coherentes con las expectativas.
5 - Validación de Usuarios
Verificar que Amazon Cognito esté completamente funcional y que los usuarios puedan autenticarse sin problemas.
6 - Monitoreo y Ajustes
Implementar monitoreo reforzado durante las primeras 24 horas para detectar cualquier problema posterior a la restauración.
Tiempos y Verificaciones
Tiempo de Recuperación de Ambiente
El tiempo estimado para levantar un nuevo entorno productivo es de 6 horas, dependiendo de la complejidad del incidente. La complejidad del incidente se mide en función del número de servicios afectados, la cantidad de datos a restaurar, y la disponibilidad de recursos para la recuperación. Factores como la magnitud del fallo, la ubicación geográfica de los datos y la necesidad de coordinación con el equipo técnico también pueden afectar este tiempo estimado.
Verificación de Integridad
Realizar verificaciones exhaustivas de integridad de datos y funcionalidad para garantizar que el ambiente restaurado esté listo para el uso.
Cifrado y Seguridad de los Respaldos
Todo respaldo, ya sea automático o manual, está cifrado en reposo y en tránsito utilizando los mecanismos de cifrado predeterminados de AWS (KMS). El acceso a los respaldos está restringido a roles y usuarios con permisos específicos, siguiendo el principio de menor privilegio.
Pruebas de Recuperación
Se realizarán pruebas de recuperación de forma trimestral para garantizar que los procedimientos documentados sean efectivos y se cumplan los tiempos de recuperación establecidos. Estas pruebas incluirán:
Simulaciones de Fallos
Se realizarán simulaciones de fallos para verificar que los procesos de recuperación sean efectivos. Esto incluirá la desconexión controlada de servicios críticos como DynamoDB, Aurora, S3, Lambda y API Gateway, evaluando el tiempo de recuperación y la correcta restauración de los datos.
Restauración de Respaldos
Se probará la restauración de respaldos de Amazon Aurora, DynamoDB y S3 para asegurar que los datos puedan ser recuperados sin pérdida de información y en los tiempos esperados.
Recreación de Entorno Productivo
Se llevará a cabo la recreación de un entorno productivo completo en una región alternativa, utilizando las plantillas de infraestructura de CloudFormation, para garantizar que el despliegue sea rápido y correcto.
Verificación de Integridad y Pruebas de Funcionalidad
Después de cada prueba, se realizarán verificaciones exhaustivas de integridad de datos y pruebas de funcionalidad para garantizar que todos los servicios se restablezcan correctamente y que el sistema funcione como se espera.
Documentación y Mejora Continua
Al finalizar cada prueba, el equipo técnico será responsable de documentar los resultados, identificando cualquier falla o retraso en el proceso de recuperación. Se seguirá un proceso estructurado para implementar las mejoras identificadas, que incluirá la revisión de acciones por parte del equipo de infraestructura y la validación de las soluciones propuestas antes de su implementación.