Fermer

août 16, 2024

Momento migre le cache d’objets en tant que service vers Ampere Altra —

Momento migre le cache d’objets en tant que service vers Ampere Altra —


Instantané

Organisation

L’infrastructure de mise en cache Momento pour les applications cloud est complexe et prend du temps. Les solutions de mise en cache traditionnelles nécessitent des efforts importants en matière de réplication, de gestion du basculement, de sauvegarde, de restauration et de gestion du cycle de vie pour les mises à niveau et les déploiements. Cette charge opérationnelle détourne les ressources des activités commerciales principales et du développement de fonctionnalités.

Solution

Momento fournit une solution de cache sans serveur, utilisant des instances Google Tau T2A basées sur Ampere, qui automatise la gestion et l’optimisation des ressources, permettant aux développeurs d’intégrer un cache rapide et fiable sans se soucier de l’infrastructure sous-jacente. Basé sur le projet open source Apache Pelikan, le cache sans serveur de Momento élimine le besoin de tâches d’approvisionnement et d’exploitation manuelles, offrant une API fiable pour des résultats transparents.

Principales fonctionnalités

  • Architecture sans serveur : aucun serveur à gérer, configurer ou entretenir.
  • Zéro configuration : optimisation continue de l’infrastructure sans intervention manuelle.
  • Hautes performances : maintient un objectif de niveau de service de 2 ms de temps aller-retour pour les requêtes de cache à P99.9, garantissant ainsi de faibles latences de queue.
  • Évolutivité : utilise des nœuds de stockage multithread et l’épinglage de base pour gérer efficacement des charges élevées.
  • Services supplémentaires : la suite de produits étendue comprend des bus de messages pub-sub.

Innovations techniques

Optimisation du changement de contexte : réduction de la surcharge de performances en épinglant les threads sur des cœurs spécifiques et en dédiant des cœurs aux E/S réseau, réalisant ainsi plus d’un million d’opérations par seconde sur une instance à 16 cœurs.

Impact

Le service de mise en cache sans serveur de Momento, optimisé par Google Tau T2A basé sur Ampere, accélère l’expérience des développeurs, réduit les charges opérationnelles et crée un système rentable et hautes performances pour les applications cloud modernes.

Contexte : qui et qu’est-ce que Momento ?

Momento est le fruit de l’imagination des cofondateurs Khawaja Shams et Daniela Miao. Ils ont travaillé ensemble pendant plusieurs années chez AWS au sein de l’équipe DynamoDB, avant de lancer Momento fin 2021. Le principe directeur de l’entreprise est que l’infrastructure d’applications couramment utilisée devrait être plus simple qu’elle ne l’est aujourd’hui.

En raison de sa vaste expérience du cache d’objets chez AWS, l’équipe Momento a opté pour la mise en cache pour son produit initial. Depuis, ils ont élargi leur gamme de produits pour inclure des services tels que les bus de messages pub-sub. Le cache sans serveur Momento, basé sur le projet open source Apache Pelikan, permet à ses clients d’automatiser le travail de gestion et d’optimisation des ressources lié à l’exécution vous-même d’un cache clé-valeur.

Toutes les applications cloud utilisent la mise en cache sous une forme ou une autre. Un cache est un magasin à faible latence pour les objets fréquemment demandés, ce qui réduit le temps de service pour les services les plus fréquemment utilisés. Pour un site Web, par exemple, la page d’accueil, les images ou les fichiers CSS diffusés dans le cadre de pages Web populaires, ou les éléments les plus populaires d’une boutique en ligne, peuvent être stockés dans un cache pour garantir des temps de chargement plus rapides lorsque les gens les demandent.

L’opérationnalisation d’un cache impliquait la gestion d’éléments tels que la réplication, le basculement en cas de panne d’un nœud principal, les sauvegardes et la restauration après des pannes, ainsi que la gestion du cycle de vie des mises à niveau et des déploiements. Toutes ces choses demandent des efforts, des connaissances et de l’expérience, et prennent du temps par rapport à ce que vous voulez faire.

En tant qu’entreprise, Momento considère qu’il est de sa responsabilité de libérer ses clients de ce travail, en fournissant une API fiable et fiable que vous pouvez utiliser dans vos applications, afin que vous puissiez vous concentrer sur la fourniture de fonctionnalités qui génèrent de la valeur commerciale. Du point de vue de l’équipe Momento, « provisionnement » ne devrait pas être un mot dans le vocabulaire de ses utilisateurs de cache – l’objectif final est d’avoir un cache rapide et fiable disponible quand vous en avez besoin, avec toutes les préoccupations de gestion prises en charge. pour toi.

Le déploiement : facilité de portabilité vers le processeur Ampere

Initialement, la décision de Momento de déployer sa solution de cache sans serveur sur des instances Google T2A alimentées par Ampere était motivée par les avantages prix/performances et l’efficacité.

Conçues de A à Z, les machines virtuelles Tau T2A basées sur Ampere offrent des performances élevées prévisibles et une évolutivité linéaire qui permettent de déployer rapidement des applications évolutives et de surpasser de plus de 30 % les machines virtuelles x86 existantes.

Cependant, lors d’une récente interview, Daniela Miao, co-fondatrice et CTO de Momento, a également souligné la flexibilité offerte par l’adoption d’Ampère, car il ne s’agissait pas d’une proposition du tout ou rien : « ce n’est pas une porte à sens unique. […] vous pouvez exécuter en mode mixte, si vous voulez vous assurer que votre application est portable et flexible, vous pouvez exécuter certains de [your application] en Arm64 et certains en x86”

De plus, l’expérience de migration vers les processeurs Ampere s’est déroulée beaucoup plus facilement que ce que l’équipe avait initialement prévu.

« La portabilité vers les instances Tau T2A basées sur Ampere était vraiment incroyable : nous n’avions pas grand-chose à faire et cela a simplement fonctionné »

Regardez l’interview vidéo complète pour en savoir plus sur Daniela qui explique ce que fait Momento, ce qui intéresse ses clients, comment travailler avec Ampere les a aidés à offrir une réelle valeur aux clients, ainsi que certaines des optimisations et modifications de configuration qu’ils ont apportées. performances maximales de leurs instances Ampere.

Les résultats : comment Ampere aide Momento à fournir un meilleur produit

Momento surveille de près les latences de queue – leur mesure clé est le temps de réponse P99,9 – ce qui signifie que 99,9 % de tous les appels de cache reviennent au client pendant cette période. Leur objectif est de maintenir un objectif de niveau de service de 2 ms de temps aller-retour pour les requêtes de cache à P99.9.

Pourquoi se soucier autant des latences de queue ? Pour quelque chose comme un cache, le chargement d’une page Web peut générer des centaines de requêtes API en arrière-plan, qui à leur tour peuvent générer des centaines de requêtes de cache – et si vous constatez une dégradation du temps de réponse P99, cela peut finir par affecter presque tous vos utilisateurs. . En conséquence, P99.9 peut être une mesure plus précise de la façon dont votre utilisateur moyen expérimente le service.

« Marc Brooker, que nous suivons religieusement ici chez Momento, a un excellent article de blog qui visualise l’effet de vos latences de queue sur vos utilisateurs », déclare Daniela Miao, CTO. « Pour un grand nombre d’applications et d’entreprises très performantes, probablement 1 % de vos demandes affecteront presque chacun de vos utilisateurs. […] Nous nous concentrons vraiment sur les latences pour P trois neuf (P99,9) pour nos clients.

Optimisation du changement de contexte

Dans le cadre du processus d’optimisation, Momento a identifié une surcharge de performances due au changement de contexte sur certains cœurs. Le changement de contexte se produit lorsqu’un processeur arrête d’exécuter une tâche pour en exécuter une autre, et cela peut être dû à :

  • Interruptions système : le noyau interrompt les applications utilisateur pour gérer des tâches telles que le traitement du trafic réseau.
  • Conflit de processeur : sous une charge élevée, les processus sont en concurrence pour un temps de calcul limité, ce qui entraîne un « échange » occasionnel de tâches.

Dans l’analyse approfondie de Momento sur ce sujet, ils expliquent que les changements de contexte sont coûteux car le processeur perd en productivité tout en sauvegardant l’état d’une tâche et en chargeant une autre. C’est comme la façon dont les humains subissent une perte de productivité lorsqu’ils sont interrompus par un appel téléphonique ou une réunion alors qu’ils travaillent sur un projet. Il faut du temps pour changer de tâche, puis du temps supplémentaire pour se concentrer et redevenir productif.

En minimisant le changement de contexte, Momento a amélioré l’efficacité du processeur et les performances globales du système.

Premiers pas avec Momento

Momento se concentre sur les performances, en particulier les latences finales, et organise manuellement tous les SDK côté client sur GitHub pour éviter les problèmes de non-concordance de versions.

  1. Inscrivez-vous : Visitez Le site de Momento pour vous inscrire.
  2. Choisissez un SDK : sélectionnez un SDK sélectionné à la main pour votre langage de programmation préféré.
  3. Créer un cache : utilisez l’interface simple de la console pour créer un nouveau cache.
  4. Stocker/récupérer des données : utilisez les fonctions set et get du SDK pour stocker et récupérer des objets du cache.

L’architecture de Momento

L’architecture de Momento sépare la fonctionnalité de passerelle API des threads de données sur les nœuds de stockage. La passerelle API achemine les requêtes vers le nœud de stockage optimal, tandis que chaque nœud de stockage dispose de plusieurs threads de travail pour gérer les opérations de cache.

  • Évolutivité: Sur une VM T2A-standard-16 à 16 cœurs, deux instances de Pelikan s’exécutent avec 6 threads chacune.
  • Épinglage de base: Les threads sont épinglés sur des cœurs spécifiques pour éviter les interruptions d’autres applications à mesure que la charge augmente.
  • Optimisation des E/S réseau: Quatre files d’attente RX/TX (réception/transmission) sont épinglées sur des cœurs dédiés pour éviter les changements de contexte provoqués par les interruptions du noyau. Bien qu’il soit possible d’avoir plus de cœurs pour traiter les E/S réseau, ils ont constaté qu’avec quatre paires de files d’attente, ils étaient capables de piloter leur cache Momento à 95 % de charge, sans que le débit du réseau ne devienne un goulot d’étranglement.

Ressources supplémentaires

Pour en savoir plus sur l’expérience de Momento avec les instances Tau T2A
alimenté par des processeurs Ampere, consultez « Turbocharger le cache Pelikan activé
Dernières VM T2A basées sur Arm de Google Cloud
».

Pour trouver plus d’informations sur l’optimisation de votre code sur les processeurs Ampere,
consultez notre guides de réglage dans le Centre de développement Ampère. Tu peux
obtenez également des mises à jour et des liens vers d’autres contenus intéressants comme celui-ci en vous inscrivant
à notre mensuel newsletter des développeurs.

Enfin, si vous avez des questions ou des commentaires sur cette étude de cas,
c’est toute une communauté d’utilisateurs et de fans d’Ampère prêts à répondre à
Communauté de développeurs Ampère. Et n’oubliez pas de vous abonner notre
Chaîne YouTube
pour un contenu davantage axé sur les développeurs à l’avenir.

Références :




Source link