Réduire drastiquement l’usage de Redis
(engineering.ab180.co)Récit d’un travail d’ingénierie visant à réduire les coûts causés par le stockage dans Redis d’un grand volume de données au format JSON sans compression, ainsi que par l’absence de partage de modèles entre services Redis
- En modifiant la méthode de stockage des mêmes données sources, l’utilisation mémoire d’ElastiCache a été réduite de 52 % et les coûts de 66 %
- En utilisant Protobuf au lieu de JSON, les spécifications des données ont été explicitées tout en unifiant la méthode de lecture/écriture des données entre services
- Comparé à d’autres options, brotli a montré le meilleur taux de compression. En comparant le temps nécessaire et le taux de compression selon la taille de fenêtre et le niveau de compression, une valeur optimale a été trouvée puis appliquée
- Lors de l’utilisation d’un UUID comme clé Redis, l’usage d’ascii85 a permis d’économiser un peu de mémoire
- Il a été constaté que la dette technique liée au domaine pouvait devenir un obstacle aux travaux de réduction des coûts d’infrastructure, et celle-ci a été résorbée grâce à un schéma explicite
4 commentaires
Avec l’augmentation constante des capacités des serveurs, on a davantage tendance à se concentrer sur la rapidité de mise sur le marché que sur l’optimisation, mais cela faisait longtemps que je n’avais pas lu un aussi bon contenu qui donne envie de se repencher sur l’optimisation !!
C’est vrai : en pratique, le JSON est surtout utilisé pour ses avantages en matière de lisibilité et de structuration souple, mais du point de vue de la taille, il est plus pratique d’utiliser un protocole binaire comme protobuf. Et si on pousse la logique à l’extrême, des protocoles binaires extrêmement optimisés comme la structure PE traditionnelle ou le protocole TCP sont encore préférables.
Je trouve que l’expression « dette technique liée au domaine » décrit parfaitement la situation.
C'est chouette.
Patron ! Augmentez très généreusement le salaire de cette personne !!