AWS Builder Center
[ES] Defensa Contra las Artes Oscuras de los data pipelines #2: aprendiendo sobre la resiliencia para un data pipeline

[ES] Defensa Contra las Artes Oscuras de los data pipelines #2: aprendiendo sobre la resiliencia para un data pipeline

Aprendiendo sobre resiliencia y lo que se requiere conocer en principios, procesos y prácticas para aplicarlas en un data pipeline.

Series: Defensa Contra las Artes Oscuras de los data pipelines - resiliencia (3 articles)

  1. 2
    [ES] Defensa Contra las Artes Oscuras de los data pipelines #2: aprendiendo sobre la resiliencia para un data pipeline This article
AWS UG Arequipa Leader | AWS Community Builder - Data | AWS X4 | Data Engineer
Ya en la primera lección , se aprendio como cae un data pipeline: actores y sus efectos en ello. Esta realidad lleva a que el equipo de datos busque dar resiliencia a sus data pipelines para que las operaciones de la analitica de datos puedan continuar sin afectar al negocio. Aquí las preguntas son:
🤔 ¿Qué es la resiliencia?, ¿Qué implicacion hay alrededor?, ¿Comó se consigue ello?, ¿Como se asocia a un data pipeline?

Definiendo resiliencia y sus implicaciones

El pilar de la fiabilidad; parte de los pilares de AWS Well-architected framework; indica que la resiliencia es el elemento primordial del pilar mismo. La definición de resiliencia es bastante precisa que tenemos que tener en cuenta:
La resiliencia es la capacidad de una carga de trabajo para recuperarse de interrupciones en la infraestructura o el servicio, adquirir dinámicamente recursos informáticos para satisfacer la demanda y mitigar interrupciones, como configuraciones incorrectas o problemas transitorios de red.
Con esta frase, se puede entender varios puntos relevantes de lo que implica realmente la resiliencia a nivel técnico:
  1. La unidad de gestión es la carga de trabajo. Los procesos de resiliencia se centran alrededor de la carga de trabajo de forma independiente y atomica.
  2. La recuperación de disrupción desde la infraestructura y/o el servicio, por lo que involucra pensar tanto en servicio y/o infraestructura que necesita la carga de trabajo para aplicar procesos de recuperación. La etapa de diseño de solución y entendimiento de requerimientos son la base para saber como lograr ello.
  3. Temas de escalamiento de recursos y mitigar interrupciones son capacidades requeridas. Este punto indica capacidades que debe tener para poder lograr la resiliencia, y que desde el diseño deben poder abordarse y automatizarse.
Una solución; un data pipeline en este caso; para ser resiliente tiene que adaptarse y soportar mecanismos de resiliencia cuando se empieza a diseñar, construir y mantener alrededor de sus cargas de trabajo. La resiliencia generalmente es una capacidad que construye y evoluciona con el tiempo. Para empezar a construir una capa inicial de resiliencia y como evoluciona en el tiempo, 3 temas relevantes entran en discusión: una negociacion entre costo eficiencia, agilidad de entrega y capacidad de la solución además de la gestión de riesgos y situaciones.
Aquí la razón del porque se debe negociar cada uno para definir la resiliencia inicial:
  • La "agilidad de entrega y capacidad de la solución" lo que busca es entregar una solución de forma rapida y eficiente hacia el negocio para satisfacer sus requerimientos para empoderarlos en sus actividades.
  • La "gestión de riesgos y situaciones" lo que busca en poder controlar situaciones en donde la solución este inhabilitada de funcionar y afecte directamente al negocio, que riesgos hay de que ciertas situaciones pasen, como el tiempo de inactividad afecta al negocio y como poder controlar tales situaciones para reducir o eliminar los efectos.
  • La "costo eficiencia" es el impacto economico de tener tanto una solución entregada al negocio, el impacto de tener soluciones adicionales para gestionar una situacion que afecta a la solución y la perdida de dinero por no entregar una solución al negocio en un rango de tiempo como también inoperativa en rangos de tiempo.
El tema de la madurez y limites de capacidad de un data pipeline como solución se reflejan en todo lo comentado anteriormente; y esta crece alrededor del siguiente hecho:
Entrega una solución al negocio para operar porque hay un equipo detras de ellas que gestionará los incidentes alrededor de la solución.
En lo personal, pienso que la fiabilidad se adquiere al tener resiliencia automatica como tambien resiliencia manual para una solucion; por lo que se espera que un data pipeline tenga mucha resiliencia automatica como primera recurso, para despues hacer que el equipo detras de la solución aplique la resiliencia manual como ultimo recurso.
Los principios, prácticas, procesos y características son ejes principales que guían como abordar desde un punto técnico al resiliencia y definen el limite de la misma en el data pipeline, que madurez tiene y donde empezar a mejorarla.

Comprendiendo un data pipeline

Ya entendiendo lo que implica la resiliencia, hay que llevarlo a la perspectiva de data pipelines y el mundo de la analitica de datos. Para ello, la siguiente imagen referencial nos ayuda a entender cuales componentes se utilizan y que flujo de actividades hay dentro de una carga de trabajo en un data pipeline, independiente de si es batch o streaming.
Cada area dentro de la imagen tiene una funcionalidad especifica que se resumen en lo siguiente:
AreaFuncionalidad
Ingesta de datosCaptura los datos necesarios del negocio para transformarlos desde una fuente.
Transformacion de datosAplicacion de logica de negocios para obtener datos relevantes para el negocio en alguna forma.
Servicio/consumo de datosEntrega de los datos utiles en puntos de consumo hacia el usuario y negocio.
Almacenamiento de datosGuardar los datos temporales necesarios dentro del data pipeline.
Basado en la imagen, podemos ver que hay a nivel de infraestructura temas como bases de datos, sistema de almacenamiento, servidores, redes y credenciales de acceso mientras que cada area requiere diferentes servicios para construir soluciones para la ingesta, transformación y entrega de datos.
Con esto en mente, hay algunas hechos que tenemos alrededor de un data pipeline:
  • El almacenamiento para un data pipeline es staging layer y/o landing layer, porque son elementos universales para el flujo de transformación de datos por guardar resultados temporales para uso posterior dentro del flujo. en el data pipeline Los almacenamientos externos no son responsabilidad del data pipeline.
  • El flujo de transformación puede tener 1 o más unidades de trabajo; que pueden componerse de la combinación de ingestas, transformación y entrega de los datos. Puedes tener una o más unidades que solo sea ingesta y transformación de datos mientras que tienes otra unidad que sea entrega de datos; como tambien una sola unidad que contengas los 3.
  • Las unidades de trabajo siempre construyen el flujo de transformación que usara el data pipeline, ya que se encargara de orquestar las unidades de trabajo para generar los resultados deseados.
  • Un data pipeline debe ser idempotente en sus resultados, modular en sus componentes para diseñarlo y configurable tanto en la personalización de un componente como también en sus parametros.
  • Todo data pipeline debe generar metadatos operativos, de linaje, tecnicos y de calidad de datos. los logs son una forma de materializarlos.
Con todo lo comentado sobre un data pipeline; vemos que para lograr la resiliencia en un data pipeline se requiere de gestión de datos temporales para una carga de trabajo, replicación de sistemas de almacenamiento de datos, equivalencia funcional de sistemas en caso de sobrecarga, gestión de orquestamiento basado en politicas de reintentos en las cargas de trabajo, elección correcta de servicios y planes de recuperación ante el desastre entre otros más. Esto se debe a la diversidad de posibles incidentes que pueden ocurrir en varios puntos de un data pipeline.
La resiliencia en un data pipeline es el resultados de como un grupo de procesos predefinidos puede abordar una situación inesperada basado en el diseño y las prácticas aplicadas en los componentes junto también con la forma de interacción entre los componentes para perservar la funcionalidad lo mejor posible de forma imperceptible al usuario o equipo interno.
Dado que un data pipeline es un software con un sistema de almacenamiento de soporte estrategico, entonces todas las prácticas y procesos estaran alrededor de este contexto.

Principios, prácticas, caráceristicas y procesos alrededor de la resiliencia en un data pipeline

AWS en su pilar de fiabilidad da principios junto con prácticas en el diseño y construcción de soluciones más resilientes y de alta disponibilidad, Ahí tambien dan consejos sobre como utilizar sus servicios para ciertas situaciones como ejemplos y consejos para abordar el desarrollo. Este contenido es relevante de revisarlo y estudiarlo porque permite aplicarse al diseño, construcción y evolución de un data pipeline en su ciclo de vida.
Aquí hablaremos un breve resumen de cada uno, ya que actua como base principal sobre los servicios e infraestructura que se utilizaran para construir un data pipeline; para demostrar como estos principios se conectan con un data pipeline. Ten presente que las practicas de los principios del pilar tienen que se adaptadas en el contexto del data pipeline para encontrar el valor añadido, si es que se logra ello por lo que es una revisión previamente.

Fundamentos

Son principios base en los que cualquier solución de software; y por tanto el data pipeline; debe cubrir ya que estos es donde se fundamenta la resiliencia misma. Los principios de los fundamentos son los siguientes:
  • Conocer y gestionar las limitaciones del servicio.
  • Tener un topologia de la red en la solución.
Algunas prácticas asociadas a estos principios y que tiene un gran impacto son los siguientes:
PrácticaObjetivoPrincipio relacionado
Ser conciente de los limites y quotas de un servicioMonitorear con metricas clave el servicio cloud como AWS Glue para saber si estamos llegando a su limite baseConocer y gestionar las limitaciones del servicio
Asegura el estrecho entre el limite del servicio y su uso maximoPoder tener más replicas del servicio en caso de necesitarlo para gestionar cargas de trabajo adicionalConocer y gestionar las limitaciones del servicio
Usa una red altamente disponible para endpoints publicos para el usuarioGarantizar el acceso del resultado del data pipeline ante el usuario para que lo consumaTener un topologia de la red en la solución
Proporciona redundancia de conextion entre entornos on-premise y la nubeGarantizar que los componentes de un data pipeline pueden conectarse entre ellos sin problema independiente del tipo de entornoTener un topologia de la red en la solución

Arquitectura de carga de trabajo

Son principios enfocados en el diseño de la arquitectura basado en el software e infraestructura con el fin de dar un comportamiento que soporte la resiliencia el procesamiento de la carga de trabajo. Los principios de la arquitectura de carga de trabajo son los siguientes:
  • Diseño de la arquitectura de la carga de trabajo.
  • Diseño de la interacción en sistemas distribuidos para prevenir la falla.
  • Diseño de la interacción en sistemas distribuidos para mitigar o resistir la falla.
Algunas prácticas asociadas a estos principios son los siguientes:
PrácticaObjetivoPrincipio relacionado
Elige como segmentar la carga de trabajoSer más escalable, descoplado y soportable en los componentes para gestionar la carga de trabajoDiseño de la arquitectura de la carga de trabajo
Identifica el tipo de sistema distribuido que necesitasSaber cual tipo de interacción usara el sistema para saber como tolerar fallos en los componentes en un data pipelineDiseño de la interacción en sistemas distribuidos para prevenir la falla
Hacer operaciones mutables idempotentesHacer un componente confiables, escalables y transparentes en el data pipelineDiseño de la interacción en sistemas distribuidos para prevenir la falla
Limitar y controla las llamadas de reintentosDar mecanismos controlar como se consume un data pipeline o un componenteDiseño de la interacción en sistemas distribuidos para mitigar o resistir la falla

Gestión de cambios

Son principios enfocados en como gestionar un cambio dentro del data pipeline y su entorno para lograr la fiabilidad operativa; esto aplica tanto picos bajo demanda hasta despliegue de cambios y parches de seguridad. Los principios son los siguientes:
  • Monitorear los recursos de la carga de trabajo.
  • Diseñar para adaptarse a los cambios bajo demanda.
  • Implementar cambios.
Algunas prácticas asociadas a estos principios y que tiene un gran impacto son los siguientes:
PrácticaObjetivoPrincipio relacionado
Automatizar respuestasAl detectar un evento conocido, aplicar una respuesta correctiva de forma autonomaMonitorear los recursos de la carga de trabajo
Analizar logsConocer como es el comportamiento del data pipelineMonitorear los recursos de la carga de trabajo
Usar automatización para escalar o dar recursosSimplifica de forma segura y consistente como generar o cambiar un componente en un data pipelineDiseñar para adaptarse a los cambios bajo demanda
Dar recursos cuando se necesitaAjustar los componentes según los recursos para evitar la falla de un componente por capacidad en el data pipelineDiseñar para adaptarse a los cambios bajo demanda
Usar runbooks para actividades especificaEjecución de cambios segun el plan y el resultado propuesto en un data pipeline o alrededor de el.Implementar cambios
Integrar pruebas funcionales en el despliegueValida el componente funciona bien antes de integrarlo al data pipelineImplementar cambios

Gestión de fallos

Son principios enfocados en gestionar falla en el data pipeline de tal forma que se controle el impacto ante la carga de trabajo automaticamente y de forma manual despues. Los principios son los siguientes:
  • Backup de los datos.
  • Usar aislamiento de fallos para proteger la carga de trabajo.
  • Pruebe la resiliencia.
  • Diseñe para soportar fallo en los componentes.
  • Plan de recuperación ante el desastre.
Algunas prácticas asociadas a estos principios y que tiene un gran impacto son los siguientes:
PrácticaObjetivoPrincipio relacionado
Identificar y backup todos los datos necesariosRestaurar los datos requeridos estaticos para que el data pipeline reanude el trabaje de forma correctaBackup de los datos
Desplegar en multiples ubicacionesLograr mas disponibilidad y tolerancia a fallos para un servicio utilizado en el pipelineUsar aislamiento de fallos para proteger la carga de trabajo
Prueba los requerimientos escalabilidad y rendimientoVerificar los limites del pipeline e identificar puntos vulnerablesPruebe la resiliencia
Automatizar la recuperación en todos los nivelesReducir el tiempo de recuperación de un pipeline para garantizar su disponibilidadDiseñe para soportar fallo en los componentes
Recurrir a recursos saludables en caso de falloEs mas resiliente al tener un mecanismo de degradación gradual y recuperación rápida en infraestructura del data pipelineDiseñe para soportar fallo en los componentes
Define objetivos de recuperacion para inactividad o perdida de datosConocer cuanto debe durar una recuperación para un pipeline basado en las necesidades del negocioPlan de recuperación ante el desastre
Estos principios fundamentales permiten construir procesos alrededor del data pipeline para poder realizar actividades con relación a la resiliencia en el data pipeline. Algunos procesos se enfocan en la gestión de datos temporales para una carga de trabajo, replicación de sistemas de almacenamiento de datos, equivalencia funcional de sistemas en caso de sobrecarga, gestión de orquestamiento basado en politicas de reintentos en las cargas de trabajo, elección correcta de servicios y planes de recuperación ante el desastre entre otros.
Un ejemplo de como se construye un proceso es el siguiente: lás practicas "Prueba los requerimientos escalabilidad y rendimiento", "Hacer operaciones mutables idempotentes", "Asegura el estrecho entre el limite del servicio y su uso maximo" y "Dar recursos cuando se necesita" son bases para poder crear una estrategia de orquestamiento para casos de sobrecarga de datos.
Es apartir de estos procesos que podemos construir características estrategicas hacia del data pipeline. Las características estrategicos principales que debe de conocerlos con relación al data pipeline son los siguientes:
  1. Diseña para lo desconocido : No conocemos todos los casos que lleven a una falla; por lo que tienes que tomar estrategias basados en un marco de suposiciones para gestionar una situación inesperada para minimizar sus efectos.
  2. Extensibilidad gradual: Indica que el data pipeline deberia extender; o ser "doblado"; su capacidad definidas cuando este llegando a su limite ante un situación, en vez de romperse.
  3. El factor humano: La automatización puede agregar complejidad a la solución, por lo que tener un proceso de intervención humana siempre es necesario gestionar situaciones complejas.
Al tener procesos relacionados con la gestión de procesos por sobrecarga y gestión de orquestamiento basado en politicas de reintentos, entonces estamos haciendo que el data pipeline esta buscando ser diseñado para lo desconocido. Los procesos pueden ayudarse a definir las características según como un proceso se define y/o se readapte segun los parametros asociados a ellos.

Conclusión

La resiliencia al final trata de recudir la intervención del equipo lo maximo posible por parte de la solución porque busque siempre garantizar el funcionamiento continuo de forma autonoma. El negocio siempre estara de acuerdo en como un data pipeline tenga esta capacidad mientras no le duela en alguna forma, y cuando se vuelva un dolor buscaran mejorar su capacidad para evitarlo.
La evolución de la resiliencia en un data pipeline involucra muchas prácticas y estrategias alrededor del comportamiento de los componentes, la interacción entre ellos por medio del orquestados y como gestionar datos temporales involucrados en la carga de proceso.
Conoce las prácticas y sus principios, arma procesos y genera características para hacer que tu data pipeline sea tan resiliente hasta que el equipo intervenga.
En la siguiente lección hablaremos sobre resiliencia en almacenamiento de datos y como servicios de AWS ayudan en ello.

Documentación referentes

Aquí los documentos que se utilizarón para construir el artículo.

Series: Defensa Contra las Artes Oscuras de los data pipelines - resiliencia (3 articles)

  1. 2
    [ES] Defensa Contra las Artes Oscuras de los data pipelines #2: aprendiendo sobre la resiliencia para un data pipeline This article
Any opinions in this article are those of the individual author and may not reflect the opinions of AWS.
Enjoyed reading this content? Let the author know!

Your likes, comments, shares, and saves help creators reach more builders.

Loading recommendations

Loading article