Ir al contenido principal

Disponibilidad: Throttling pattern


Throttling pattern

Controle el consumo de recursos utilizados por una instancia de una aplicación, un inquilino individual o un servicio completo. Esto puede permitir que el sistema continĆŗe funcionando y cumpla con los acuerdos de nivel de servicio, incluso cuando un aumento en la demanda ejerza una carga extrema sobre los recursos.




Problema?
Un api o aplicación empieza a se consumida cada vez mÔs por diferentes usuarios, al incrementar el consumo y concurrencia, se empieza a presentar problemas de performance.


De repente uno de los usuarios, aumenta considerablemente el uso de nuestra Api.


Genera que se presenten Timeouts o indisponibilidad, en resumen perdida de confianza de la aplicación.


Solución 1

Implementar un Load Balancer, que va a recibir los request y distribuirlos y en caso que requiera levantar instancias.

Levantar otra instancia consume tiempo, depende de la tecnologĆ­a, una bd tomarĆ” mĆ”s tiempo que un contenedor, pero tomarĆ” tiempo, Eso quiere decir que mientras se levanta la nueva instancia se tendrĆ” indisponibilidad.


Solución



Delante de la Api, se implementa una capa intermedia de "estrangulación", funciona como un embudo de las aplicaciones. Si un cliente genera demasiadas peticiones, un servicio de estrangulamiento como Api Managment, Kong, Wso2.

Debemos definir limites de consumo, origen, frecuencia, tamaƱo de la respuesta, asi evitamos que se degraden los demƔs clientes. adicional generar alertas o crear nuevas instancias para soportar la demanda.

Consideraciones:
- La capa intermedia 'gateway' debe ser rƔpido y productivo.
- Monitoreo in Real Time 
- Monitorear el performance de las aplicaciones y del mismo gateway
- Retornar códigos de error especĆ­ficos y claros.


Cuando?
- Siempre, cuando nos damos cuenta que lo necesitamos ya es tarde.
- Si se presentan aumentos repentinos de trƔfico
- Garantizar Uptime 99.999%
- Aplicar reglas de restricción a usuarios especificos, (Generar token por usuario, monetizar suscripciones)




referencias:







Comentarios

Entradas mƔs populares de este blog

Antipatrones Microservicios

1. Migración de Manejo de Datos Antipatron. El antipatrón de migración basado en datos se produce principalmente cuando se migra de una aplicación monolĆ­tica a una arquitectura de microservicios. La razón por la que esto es un antipatrón es que al principio parece una buena idea migrar la funcionalidad del servicio y los datos correspondientes al crear microservicios, pero como aprenderĆ” en este capĆ­tulo, esto lo llevarĆ” por un mal camino que puede resultar en alto riesgo, exceso de costo y esfuerzo de migración adicional. Comprender los riesgos relacionados con la migración de datos y la importancia de "datos sobre funcionalidad" es el primer paso para evitar este antipatrón. La tĆ©cnica para evitar este antipraton consiste en realizar primero una migración de la funcionalidad, es decir, primero refactorizar el código fuente, pasando por primero modularizar el contexto o dominio y continuar con la definición y construcción de servicios, a medida que se conoce el código que se...

Microservice Architecture | Arquitectura de microservicios

QuĆ© es  Arquitectura de microservicios ?   El estilo arquitectónico de microservicios es un enfoque para desarrollar una sola aplicación como un conjunto de pequeƱos servicios, cada uno de los cuales se ejecuta en su propio proceso y se comunica con mecanismos ligeros, a menudo una API de recursos HTTP. El hecho de que los  servicios son implementables y escalables de manera independiente, cada servicio tambiĆ©n permite que se escriban diferentes servicios en diferentes lenguajes de programación. TambiĆ©n pueden ser gestionados por diferentes equipos. Las aplicaciones creadas a partir de microservicios pretenden ser lo mĆ”s desacopladas y cohesivas posible: poseen su propia lógica de dominio y actĆŗan mĆ”s como ltros en el sentido clĆ”sico de que reciben una solicitud, aplican la lógica segĆŗn corresponda y producen una respuesta. Un servicio es una funcionalidad que se expone para su uso por otros procesos .  Que otros protocolos puedo us...

Referencia | Material de Apoyo

Arquitectura .NET Architecture Guides Architectural Patterns: Uncover essential patterns in the most indispensable Domain Driven Design Quickly Microservicios Practical Microservices: By Umesh Ram Sharma Building Microservices: Designing Fine-Grained Systems By Sam Newman SOA Design Patterns By Thomas Erl