Utilisation de Redis pour optimiser les déploiements de fonctionnalités et le tri des erreurs

Utilisation de Redis pour optimiser les déploiements de fonctionnalités et le tri des erreurs

Dans un effort pour courir, courir, courir… vous ne voulez pas commettre l’erreur de 460 millions de dollars que Knights Capital a commise en 2012. Cette défaillance du système informatique d’un jour d’un leader du marché financier offre plusieurs leçons pour le plus large Communauté informatique, y compris l’importance cruciale de la conception, de la mise en œuvre et des détails DevOps de vos composants système. Dans ce blog en deux parties, je partagerai quelques idées pour aider les équipes de développement à maintenir leurs processus d’intégration continue et de déploiement continu (CI/CD) à toute épreuve. En particulier, je montrerai comment vous pouvez gérer les mises à jour continues en utilisant les bascules de fonctionnalités et le contexte des fonctionnalités pour dicter le routage du code, stocker les données du journal pour un accès facile et créer une base de données d’erreurs avec des recherches rapides, le tout avec l’aide de Redis.

Imaginez, vous êtes un directeur de l’ingénierie gérant une équipe de plusieurs développeurs responsables du front-end d’une application Web avec des milliers d’utilisateurs simultanés. Votre application est déployée dans AWS et vous poussez les mises à jour hebdomadaires. L’entreprise ne peut pas se permettre d’interrompre l’application Web. Par conséquent, si une erreur se produit, votre équipe doit annuler instantanément sa dernière mise à jour.

Vous devez identifier rapidement le code coupable, demander au développeur approprié de le corriger et intégrer le changement dans une version ultérieure. De plus, l’équipe produit demande toujours que de nouvelles fonctionnalités soient rendues généralement disponibles dès que possible. Alors, comment pouvez-vous réagir rapidement aux erreurs et déployer les demandes de fonctionnalités en toute sécurité à la vitesse exigée par l’entreprise ?

Lors de la Game Developers Conference (GDC) 2019, j’ai assisté à une session qui décrivait un processus bien pensé pour effectuer des versions hebdomadaires de logiciels de manière fiable. La session s’intitulait “Débogage à grande échelle : stabilité multiplateforme chez plus de 70 millions d’utilisateurs actifs mensuels” et était co-présentée par Chris Swiedler de Roblox, un client Redis. Chris a partagé un aperçu intéressant de la façon dont son équipe modifie le comportement des applications chez Roblox sans modifier le code au cas où ils rencontreraient des problèmes de production. Ils utilisent des drapeaux de fonctionnalité, ce qui est très similaire à L’approche de “basculement de fonctionnalité” de Martin Fowler.

Exemple de processus CI/CD pour les nouvelles versions de fonctionnalités

Redis - Figure 2 : Développement et promotion de fonctionnalités
Figure 2 : Développement et promotion des fonctionnalités

Décomposons la figure 2, qui décrit une approche qui pourrait faire partie de votre CI/CD et de votre processus de triage.

  1. Un développeur commence à travailler sur une nouvelle fonctionnalité.
  2. Le développeur et l’équipe de gestion des produits décident des scénarios qui utiliseront les nouvelles fonctionnalités (peut-être pour un sous-ensemble d’utilisateurs).
  3. Le développeur propose ensuite une stratégie de basculement où le nouveau code et l’ancien code sont séparés par des blocs “if et else”.
  4. Une fois que le développeur a fini de travailler sur un nouveau code de fonctionnalité, il promeut une version Canary en production (avec l’aide de DevOps).
  5. Les gens utilisent l’application pendant un certain temps et, en fonction de leur personnalité et de leurs paramètres de basculement, ils utilisent soit le nouveau code, soit l’ancien code.
  6. Si des problèmes surviennent, la bascule peut être définie sur faux pour rediriger tous les utilisateurs vers l’ancien code.
  7. Après un certain temps, la fonctionnalité est promue en disponibilité générale (GA).

Cette stratégie peut être utile pour :

  1. Expédier les versions Canary à la production pour les tester avec un trafic en temps réel et de vrais utilisateurs au lieu de simulations ;
  2. Désactivation des fonctionnalités à la volée sans annuler aucun code ;
  3. Activer des fonctionnalités ou des combinaisons de fonctionnalités via des drapeaux à bascule ; et
  4. Code d’empreintes digitales pour identifier facilement le développeur responsable (pour les grandes équipes de développement) grâce à des métadonnées stockées dans des drapeaux à bascule.

Mais cette approche peut être poussée un peu plus loin pour aider les équipes de développement distribuées à publier de nouvelles fonctionnalités en toute sécurité et à les restaurer si nécessaire avec un impact minimal.

CI/CD avec Redis Enterprise

Redis - Figure 3 : Gestion des bascules, du contexte, des erreurs et des journaux avec Redis Enterprise
Figure 3 : Gestion des bascules, du contexte, des erreurs et des journaux avec Redis Enterprise

Entreprise Redis convient parfaitement lorsque vous avez besoin d’une base de données rapide et persistante. Ses capacités incluent :

  • Une base de données en tant que service Redis entièrement gérée avec un stockage réseau persistant qui protège contre le caractère éphémère du stockage d’instance.
  • CRDB, ou bases de données répliquées sans conflit, créées sur plusieurs clusters Redis Enterprise qui résident dans différents centres de données à travers la planète. Cela fournit la haute disponibilité sous la forme de déploiements actifs-actifs et actifs-passifs.
  • De puissantes capacités de recherche (via le module RediSearch) pour exécuter des requêtes de recherche sur des clusters de bases de données.
Redis - Figure 4 : Déploiement CRDB de Redis Enterprise
Figure 4 : Déploiement CRDB de Redis Enterprise

Dans mon prochain article pour cette série, j’offrirai plus de détails et des extraits de code pour montrer spécifiquement comment le basculement des fonctionnalités, le contexte des fonctionnalités, les bases de données d’erreurs et les bases de données de journaux construites avec Redis peuvent rendre votre processus de triage CI/CD plus efficace et efficient.

Development Source

Related Posts

RLEC 4.2.1 apporte des contrôles granulaires à la haute disponibilité et aux performances

RLEC 4.2.1 apporte des contrôles granulaires à la haute disponibilité et aux performances

Comment HolidayMe utilise Redis Enterprise comme base de données principale

Comment HolidayMe utilise Redis Enterprise comme base de données principale

Annonce de RedisGears 1.0 : un moteur sans serveur pour Redis

Annonce de RedisGears 1.0 : un moteur sans serveur pour Redis

Clés Redis dans la RAM |  Redis

Clés Redis dans la RAM | Redis

No Comment

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *