Introduction
Les applications basées sur le cloud, telles que 3mins.news, un agrégateur de nouvelles basé sur l'IA, doivent gérer les limites de ressources imposées par les fournisseurs de services cloud comme Cloudflare. Le plan payant de Cloudflare Workers a des limites mensuelles strictes pour les requêtes, les écritures KV, les opérations de file d'attente, etc.
Contexte Technique
Le problème est que Cloudflare ne propose pas de mécanisme de pause automatique lorsque ces limites sont atteintes, ce qui peut entraîner des coûts supplémentaires importants. Pour résoudre ce problème, un circuit breaker a été conçu pour surveiller la consommation de ressources et dégrader graduellement l'application avant d'atteindre les limites.
Les décisions clés de conception incluent des seuils de ressources spécifiques, une hystérésis pour éviter les oscillations, une sécurité en cas de défaillance de la surveillance et une déduplication des alertes. L'implémentation consiste à interroger l'API GraphQL de Cloudflare et l'API de télémétrie d'observabilité tous les 5 minutes, à évaluer 8 dimensions de ressources et à mettre en cache l'état dans KV.
Analyse et Implications
Ce circuit breaker peut être appliqué à d'autres plateformes serveurless mesurées, comme Lambda, Vercel ou Supabase, ou à des API avec des plafonds de budget, comme OpenAI ou Twilio. L'idée principale est de traiter le budget de ressources comme un signal de santé, tout comme on le ferait pour le taux d'erreur d'un service en aval.
Les implications de cette approche incluent une meilleure gestion des coûts, une réduction des risques de dépenses imprévues et une amélioration de la fiabilité de l'application. Cependant, il est important de noter que cette solution nécessite une implémentation soigneuse et une surveillance régulière pour garantir son efficacité.
Perspective
À l'avenir, il sera important de surveiller les limites et les coûts associés aux ressources cloud, ainsi que de développer des stratégies pour optimiser la consommation de ressources et minimiser les coûts. La mise en œuvre de circuits breakers pour la consommation de ressources peut devenir une pratique courante pour les applications basées sur le cloud.
Il est également important de noter que les fournisseurs de services cloud pourraient proposer des fonctionnalités de gestion de ressources plus avancées, telles que des alertes proactives et des mécanismes de pause automatique, pour aider les développeurs à gérer leurs ressources de manière plus efficace.