Alguna vez has visto tu aplicacion serverless colapsar por trafico inesperado Last month nuestra herramienta generadora de imagenes con inteligencia artificial se volvio viral en redes y en pocas horas nos vimos desbordados por peticiones Nuestro sistema tradicional de rate limiting con Redis no pudo manejar la carga distribuida a traves de la red edge de Cloudflare
Este incidente nos demostro que el rate limiting en entornos serverless exige un enfoque diferente Redis es rapido y tiene buenas librerias pero presenta varios problemas en arquitecturas distribuidas Latencia Cada comprobacion de limite requiere un viaje de ida y vuelta a Redis añadiendo 50 a 200 ms segun la distancia geografica Punto unico de fallo Si Redis falla todo el sistema de limitacion queda comprometido Cold starts Las funciones serverless deben establecer conexiones con Redis en arranques en frio aumentando el tiempo de respuesta Complejidad geografica Mantener replicas de Redis en varias regiones para baja latencia resulta costoso y complica la consistencia de datos
Cloudflare Durable Objects resuelve estos problemas proporcionando primitivas de calculo con estado que se ejecutan directamente en el edge Cada instancia mantiene su propio estado persistente maneja peticiones concurrentes y garantiza consistencia fuerte Imagina pequeñas maquinas persistentes en ubicaciones edge que despiertan cuando se necesitan mantienen estado entre solicitudes y se migran automaticamente para seguir los patrones de trafico
Como construimos el limitador de peticiones Usamos Durable Objects para mantener por usuario o por identificador de cliente un registro compacto del ciclo de limite tiempo de fin del ciclo contador de ejecuciones y numero de ciclo Al recibir una solicitud el Worker instancia el Durable Object correspondiente con id desde el nombre del usuario y llama a un metodo tryApply que hace estas operaciones de forma atomica Comprueba si la cuenta de ejecuciones en el ciclo actual es menor que el maximo permitido si es asi incrementa el contador y concede la ejecucion si no incrementa un contador de rechazos y devuelve informacion util para la respuesta como Retry After y estados del ciclo Cuando empieza un nuevo ciclo se resetean los contadores y se almacena el estado en el storage del Durable Object Todo esto ocurre en el edge reduciendo la latencia y evitando viajes remotos a una base de datos centralizada
Integracion en el Worker Es muy sencillo crear la instancia de Durable Object usando idFromName por un identificador de usuario y llamar a tryApply con parametros como limitCycleExecutionTimes y limitCycleTimeMs El Worker recibe la respuesta y si no se concede la ejecucion responde con codigo 429 y encabezado Retry After si se concede procesa la peticion normalmente Este patron permite aplicar politicas de uso justas por usuario aplicacion o recurso sin depender de infraestructura externa
Resultados en produccion Lo hemos ejecutado en produccion durante varios meses con resultados destacables Latencia Las comprobaciones de limite completan en menos de 5 ms en promedio frente a 80 150 ms con Redis Confiabilidad Cero caidas relacionadas con limitacion de peticiones desde el despliegue Durable Objects manejan failover y migracion de estado Coste Eficiencia Aproximadamente 30 por ciento del coste previo en Redis mientras servimos 10 veces mas peticiones Rendimiento geografico Usuarios en Asia Pacifico obtienen la misma baja latencia que en Norteamerica gracias a la red global de Cloudflare En picos de trafico el limitador escala sin problemas para atender mas de 500 peticiones concurrentes por segundo manteniendo politicas de uso equitativas
Por que elegir Durable Objects Ideal cuando se necesita logica con estado en el edge garantias de consistencia fuerte escalado automatico y distribucion geografica latencia reducida para aplicaciones globales Limitaciones No es la mejor opcion si se necesita compatibilidad multiplataforma fuera de Cloudflare consultas complejas estilo base de datos tradicional o estado compartido entre multiples aplicaciones
Sobre Q2BSTUDIO En Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida especializada en inteligencia artificial ciberseguridad y servicios cloud aws y azure Ofrecemos software a medida aplicaciones a medida soluciones de servicios inteligencia de negocio e implementaciones de power bi Ademas desarrollamos soluciones de ia para empresas y agentes IA a medida para automatizar procesos y mejorar la toma de decisiones Nuestra experiencia en ciberseguridad garantiza despliegues seguros mientras nuestros servicios cloud aws y azure proporcionan escalabilidad y resiliencia combinando lo mejor de la nube con integraciones personalizadas
Como partner tecnologico ayudamos a empresas a adoptar inteligencia artificial de forma responsable integrando analitica avanzada servicios inteligencia de negocio y power bi para visualizacion y gobernanza de datos Si buscas software a medida aplicaciones a medida o agentes IA para tu negocio Q2BSTUDIO diseña soluciones integrales que incluyen ciberseguridad despliegue en servicios cloud aws y azure y estrategias de inteligencia de negocio
Quieres compartir tu experiencia Has implementado limitacion de peticiones en entornos serverless Te interesa explorar como Durable Objects puede mejorar la latencia fiabilidad y costes de tus aplicaciones Cuentanos tu caso y en Q2BSTUDIO podemos ayudarte a diseñar una arquitectura edge eficiente con inteligencia artificial ciberseguridad servicios cloud aws y azure y soluciones de business intelligence con power bi