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
Publicar un comentario