La automatización como base para acelerar el ciclo de vida del desarrollo

Dentro del trabajo en la nube, la automatización es uno de los elementos clave más destacados, ya que facilita que los resultados sean consistentes y fiables.

La estandarización lograda gracias esta automatización permite optimizar los recursos, que pueden llegar a ser muy limitados, y adoptar buenas prácticas que mejoren la eficiencia operativa.

Realizado por José A. Melgar | Sergio Pardo | Alejandro Lizarán

Titulación Bootcamp en DevOps y Cloud Computing

Tecnologías Azure DevOps | Terraform | Entity Framework Core | SQL | Entra ID


¿Cuál es la motivación?

El potencial que presentan los entornos cloud puede llegar a verse poco aprovechados si no se emplean todos los recursos que se tienen al alcance de la mano. La automatización es uno de ellos, alejando los errores humanos y acercando unos resultados más estandarizados y fiables.

Los entornos cloud cuentan con un gran potencial para ayudar a garantizar la continuidad del negocio y la protección de datos críticos frente a eventos adversos no previstos, minimizando tanto el tiempo de inactividad hasta volver a estar en funcionamiento como la pérdida de datos. Usados de manera correcta, el uso de herramientas compatibles con el entorno permite asegurar la integridad y disponibilidad de los datos, fortaleciendo la resiliencia empresarial y la protección continua de los activos críticos de la empresa.

Program aims

  • Diseñar una arquitectura Disaster Recovery activa-pasiva entre Azure y GPC que sea escalable y resistente a fallos.
  • Lograr un Tiempo de Recuperación o RTO de 30 minutos para la infraestructura y los recursos críticos del negocio.
  • Conseguir que el Punto de Recuperación o RPO sea de 30 minutos para la base de datos del negocio.
  • Diseñar una estrategia de despliegue y gestión automatizada.

Desarrollo

El desarrollo de esta solución ante desastres que afectan a la infraestructura crítica se ha alejado de la práctica habitual de emplear recursos nativos ofrecidos por los proveedores cloud y se ha centrado en las herramientas no nativas de migración. La implementación de la solución se ha basado en:

  • Medidas de seguridad: son uno de los factores clave para contar con una estructura resiliente. El primer gran grupo de medidas está relacionado con la seguridad de los datos, como la automatización de la realización de backups de la base de datos con DevOps. En caso de que sí ocurra un fallo de seguridad, el segundo grupo de medidas, dedicadas a llevar a cabo un protocolo de acción, está enfocado a lograr una recuperación rápida y eficiente del servicio en caso de interrupción.
  • Pipeline en Azure DevOps: este planteamiento permitió el despliegue de la infraestructura, pero también la configuración y la automatización de los backups, logrando su transferencia desde Azure (entorno activo) a FCP
  • Despliegue de la arquitectura: este tipo de despliegue requiere herramientas más básicas, como Visual Studio Code, pero también otras más especializadas, como Terraform, que permiten trabajar con Infraestructura como Código (IaC). Asimismo, también se emplearon herramientas pertenecientes a Google Cloud y Azure, como Kubernetes, que ayudaron en el proceso de diseño, despliegue y gestión.
  • Planteamiento de escenarios: para poder anticiparse a eventos imprevistos, se plantearon una multitud de escenarios. Se dividieron en naturales, técnicos y humanos, cada uno de ellos con una serie de posibles sucesos que llevan a la interrupción del servicio y la pérdida de datos, como un fallo en el proveedor cloud o la corrupción de datos de manera accidental.
  • Creación de un plan de recuperación: una vez sucede el evento, es necesaria una respuesta rápida para minimizar posibles daños. Para ello, se automatizaron procesos como la realización de healthchecks o backups de las bases de datos SQL. El propio plan también necesita ser revisado, por lo que se realizaron pruebas de manera periódica, así como se establecieron diferentes métricas de rendimiento y criterios de éxito.

Resultados

Alejarse de la práctica habitual de emplear los recursos nativos presentó varios desafíos, pero el proyecto logró su principal objetivo: transferir backups de la base de datos de Azure a GCP, siempre de manera automática y periódica según lo establecido en el plan de recuperación. Todo esto permitió minimizar el coste de infraestructura en Google Cloud Platform con un único bucket de almacenamiento. Los beneficios que aporta el proyecto a una organización son:

  • Automatización de todo el proceso a través de pipelines.
  • Bajo coste económico para la implementación del proyecto, gracias a que en cada momento sólo se asume el coste de la infraestructura que está en funcionamiento porque en el cloud pasivo se mantiene desplegado un único bucket de almacenamiento de backups.
  • Escalabilidad futura del mismo, requiriendo llevar a cabo nuevas fases de desarrollo en materia de seguridad.

Conclusions

Este proyecto ha demostrado una opción alejada de las típicas ofrecidas por los proveedores de cloud para lograr una solución de recuperación ante desastres (DR) en entornos cloud para garantizar la continuidad del negocio y la protección de los datos y sistemas considerados críticos. El uso de una arquitectura activa-pasiva entre Azure y Google Cloud Platform ha permitido la reducción del Tiempo de Recuperación (RTO) y el Punto de Recuperación (RPO) a tan sólo 30 minutos, asegurando la disponibilidad e integridad de la infraestructura y los recursos del negocio.

El uso de herramientas como Terraform, Azure DevOps y Kubernetes permitió la automatización de la Infraestructura como Código (IaC), facilitando tanto la implementación como la gestión del sistema. Además, la protección de las bases de datos se vio reforzada por el enfoque en seguridad de datos y la automatización de backups a través de pipelines, permitiendo que dichas bases de datos estuvieran protegidas y fueran recuperables en caso de desastre.

arrow-right