Análisis de patrones de resiliencia en una arquitectura basada en microservicios - Suárez, Sergio Leonel (2023)
En lo que respecta a soluciones de software, los últimos años han sido testigos de un incremento en la implementación de arquitecturas de microservicios para dar respuesta a algunas de las limitaciones de los sistemas monolíticos tradicionales. En los sistemas basados en microservicios, el impacto de las fallas que ocurren y que se propagan por la cadena de dependencias tiene relación directa con el negocio de una empresa. Por lo tanto, la resiliencia es uno de los aspectos no funcionales más importantes, especialmente en grandes compañías. Debido a esto han surgido los patrones de diseño para resiliencia, los cuales permiten la implementación de estrategias para el manejo de las fallas y la mitigación de sus efectos negativos. Por este motivo, en esta tesina se propuso como objetivo analizar el comportamiento de una serie de patrones utilizados para proveer resiliencia frente a diversos fallos capaces de afectar el funcionamiento del ecosistema de microservicios de la empresa PedidosYa. A lo largo de este trabajo, se estudió parte de la arquitectura de microservicios de PedidosYa, comprendiendo diferentes escenarios típicos de fallos que afectan a estas arquitecturas. En particular, se analizó el microservicio Niles (que es el encargado de retornar el menú de un restaurante), detallando su operación y los servicios de los que depende para cumplir su funcionalidad. Se hizo foco en el tratamiento de errores vinculados con Niles, y se estudiaron los patrones que son frecuentemente utilizados para la resiliencia, abarcando su definición, conceptos asociados, su funcionamiento y su implementación dentro de PedidosYa. Posteriormente, se obtuvieron resultados experimentales que permitieron analizar y evaluar el impacto de la aplicación de los patrones en cuestión. En particular, se analizó el comportamiento de Niles en presencia de fallos tanto, con y sin la aplicación de los patrones estudiados, de manera de poder cuantificar su incidencia. Habiendo analizado el comportamiento de Niles y sus microservicios asociados ante un conjunto de escenarios típicos de fallas, tanto en ausencia como en presencia de distintos patrones de resiliencia, se considera que se ha cumplido con el objetivo planteado originalmente en esta tesina. La implementación de cada uno de estos patrones de resiliencia en el microservicio Niles se encuentran en producción en el ecosistema de PedidosYa, logrando ser uno de los componentes más utilizados y robustos dentro de la compañía.