Pilier d'excellence opérationnelle d'Amazon ElastiCache Well-Architected Lens - Amazon ElastiCache

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pilier d'excellence opérationnelle d'Amazon ElastiCache Well-Architected Lens

Le pilier d'excellence opérationnelle se concentre sur l'exécution et la surveillance des systèmes afin de générer de la valeur opérationnelle, ainsi que sur l'amélioration continue des processus et des procédures. Les sujets clés sont les suivants : automatisation des modifications, réponse aux événements et définition des normes pour gérer les opérations quotidiennes.

OE 1 : Comment comprenez-vous les alertes et les événements déclenchés par votre ElastiCache cluster et comment y répondez-vous ?

Introduction au niveau des questions : Lorsque vous gérez des ElastiCache clusters, vous pouvez éventuellement recevoir des notifications et des alertes lorsque des événements spécifiques se produisent. ElastiCache, par défaut, enregistre les événements liés à vos ressources, tels qu'un basculement, le remplacement d'un nœud, une opération de dimensionnement, une maintenance planifiée, etc. Chaque événement inclut la date et l'heure, le nom et le type de source, ainsi qu'une description.

Avantage au niveau de la question : la capacité à comprendre et à gérer les raisons sous-jacentes des événements qui déclenchent les alertes générées par votre cluster vous permet de fonctionner plus efficacement et de répondre aux événements de manière appropriée.

  • [Obligatoire] Passez en revue les événements générés ElastiCache sur la ElastiCache console (après avoir sélectionné votre région) ou à l'aide de la commande describe-events de l'interface de ligne de commande Amazon (AWS CLI) et du. ElastiCache API Configurez ElastiCache pour envoyer des notifications pour les événements importants du cluster à l'aide d'Amazon Simple Notification Service (AmazonSNS). L'utilisation d'Amazon SNS avec vos clusters vous permet de prendre des mesures programmatiques en fonction ElastiCache des événements.

    • Il existe deux grandes catégories d'événements : les événements en cours et les événements planifiés. La liste des événements actuels inclut : la création et la suppression de ressources, les opérations de dimensionnement, le basculement, le redémarrage du nœud, la création d'un snapshot, la modification des paramètres du cluster, le renouvellement du certificat CA, les événements d'échec (échec du provisionnement du cluster - VPC ou ENI -, échecs de dimensionnement - ENI - et échecs de snapshot). La liste des événements planifiés inclut : nœud dont le remplacement est planifié pendant la fenêtre de maintenance et nœud dont le remplacement a été replanifié.

    • Bien que vous n'ayez pas besoin de réagir immédiatement à certains de ces événements, il est essentiel de commencer par examiner tous les événements d’échec :

      • ElastiCache:AddCacheNodeFailed

      • ElastiCache:CacheClusterProvisioningFailed

      • ElastiCache:CacheClusterScalingFailed

      • ElastiCache:CacheNodesRebooted

      • ElastiCache: SnapshotFailed (Valkey ou Redis uniquementOSS)

    • [Ressources] :

  • [Idéal] Pour automatiser les réponses aux événements, tirez parti AWS des fonctionnalités des produits et services telles que SNS les fonctions Lambda. Suivez les meilleures pratiques en apportant des modifications mineures, fréquentes et réversibles, sous forme de code pour faire évoluer vos opérations au fil du temps. Vous devez utiliser CloudWatch les métriques Amazon pour surveiller vos clusters.

    [Ressources] : Monitor ElastiCache (RedisOSS) (mode cluster désactivé) lit les points de terminaison répliqués à l'aide de AWS Lambda, Amazon Route 53 et Amazon SNS pour un cas d'utilisation utilisant Lambda et. SNS

OE 2 : Quand et comment adaptez-vous vos ElastiCache clusters existants ?

Introduction au niveau des questions : Le dimensionnement correct de votre ElastiCache cluster est un exercice d'équilibre qui doit être évalué chaque fois que des modifications sont apportées aux types de charge de travail sous-jacents. Votre objectif est de fonctionner avec un environnement de taille adaptée à votre charge de travail.

Avantage au niveau de la question : une utilisation excessive de vos ressources peut entraîner une latence élevée et une diminution globale des performances. La sous-utilisation, en revanche, peut entraîner une sur-allocation des ressources avec une optimisation des coûts non optimale. En ajustant la taille de vos environnements, vous pouvez trouver un équilibre entre efficacité des performances et optimisation des coûts. Pour remédier à la surutilisation ou à la sous-utilisation de vos ressources, vous ElastiCache pouvez effectuer une mise à l'échelle en deux dimensions. Vous pouvez effectuer une mise à l'échelle verticale en augmentant ou en diminuant la capacité des nœuds. Vous pouvez également effectuer une mise à l'échelle horizontale en ajoutant et en supprimant des nœuds.

OE 3 : Comment gérez-vous les ressources de votre ElastiCache cluster et entretenez-vous votre cluster up-to-date ?

Introduction au niveau des questions : Lorsque vous opérez à grande échelle, il est essentiel que vous soyez en mesure d'identifier et d'identifier toutes vos ressources. ElastiCache Lorsque vous déployez de nouvelles fonctionnalités d'application, vous devez créer une symétrie entre les versions de cluster dans tous vos types d' ElastiCache environnement : développement, test et production. Les attributs de ressources vous permettent de séparer les environnements pour différents objectifs opérationnels, par exemple lors du déploiement de nouvelles fonctionnalités et de l'activation de nouveaux mécanismes de sécurité.

Avantage au niveau de la question : la meilleure pratique opérationnelle consiste à séparer vos environnements de développement, de test et de production. Il est également recommandé que les derniers correctifs logiciels soient appliqués à vos clusters et nœuds dans tous les environnements à l'aide de processus bien compris et documentés. Tirer parti des ElastiCache fonctionnalités natives permet à votre équipe d'ingénierie de se concentrer sur l'atteinte des objectifs commerciaux et non sur la ElastiCache maintenance.

  • [Mieux] Utilisez la dernière version du moteur disponible et appliquez les mises à jour en libre-service dès qu'elles sont disponibles. ElastiCache met automatiquement à jour son infrastructure sous-jacente pendant la période de maintenance que vous avez spécifiée pour le cluster. Toutefois, les nœuds qui s'exécutent dans vos clusters sont mis à jour via les mises à jour en libre-service. Ces mises à jour peuvent être de deux types : correctifs de sécurité ou mises à jour logicielles mineures. Assurez-vous de bien comprendre la différence entre les types de correctifs et le moment où ils sont appliqués.

    [Ressources] :

  • [Idéal] Organisez vos ElastiCache ressources à l'aide de balises. Utilisez des balises sur des groupes de réplication et non sur des nœuds individuels. Vous pouvez configurer les balises à afficher lorsque vous interrogez des ressources et vous pouvez utiliser des balises pour effectuer des recherches et appliquer des filtres. Vous devez utiliser les groupes de ressources pour créer et gérer facilement des collections de ressources qui partagent des ensembles de balises communs.

    [Ressources] :

OE 4 : Comment gérez-vous les connexions des clients à vos ElastiCache clusters ?

Introduction au niveau des questions : lorsque vous opérez à grande échelle, vous devez comprendre comment vos clients se connectent au ElastiCache cluster pour gérer les aspects opérationnels de votre application (tels que les temps de réponse).

Avantage au niveau de la question : le choix du mécanisme de connexion le plus approprié garantit que votre application ne se déconnecte pas en raison d'erreurs de connectivité, telles que des délais d'expiration.

  • [Obligatoire] Séparez les opérations de lecture des opérations d'écriture et connectez-vous aux nœuds de réplicas pour exécuter les opérations de lecture. Sachez toutefois que lorsque vous séparez les écritures des lectures, vous perdrez la capacité de lire une clé immédiatement après l'avoir écrite en raison de la nature asynchrone de la réplication Valkey et Redis. OSS La WAIT commande peut être utilisée pour améliorer la sécurité des données dans le monde réel et obliger les répliques à accuser réception des écritures avant de répondre aux clients, à un coût de performance global. L'utilisation de nœuds de réplication pour les opérations de lecture peut être configurée dans votre bibliothèque cliente ElastiCache (RedisOSS) à l'aide du point de terminaison du ElastiCache lecteur pour désactiver le mode cluster. Pour activer le mode cluster, utilisez la READONLY commande ElastiCache (RedisOSS). Pour de nombreuses bibliothèques clientes ElastiCache (RedisOSS), ElastiCache (RedisOSS) READONLY est implémentée par défaut ou via un paramètre de configuration.

    [Ressources] :

  • [Obligatoire] Utilisez le regroupement de connexions. L'établissement d'une TCP connexion coûte du CPU temps, tant du côté client que du côté serveur, et le regroupement vous permet de réutiliser la TCP connexion.

    Pour réduire la surcharge de connexion, vous devez utiliser le regroupement de connexions. Avec un pool de connexions, votre application peut réutiliser et libérer des connexions « à volonté », sans les coûts liés à l'établissement de la connexion. Vous pouvez implémenter le regroupement de connexions via votre bibliothèque cliente ElastiCache (RedisOSS) (si elle est prise en charge), avec un framework disponible pour votre environnement d'application, ou le créer à partir de zéro.

  • [Meilleure pratique] Assurez-vous que le délai d'expiration du socket du client est défini sur au moins une seconde (la valeur par défaut « aucun » est généralement définie dans certains clients).

    • Si la valeur du délai d'attente est trop faible, cela peut entraîner des délais d'expiration lorsque la charge du serveur est élevée. Si cette valeur est trop élevée, votre application peut mettre du temps à détecter les problèmes de connexion.

    • Contrôlez le volume des nouvelles connexions en implémentant le regroupement de connexions dans votre application client. Cela réduit la latence et CPU l'utilisation nécessaires pour ouvrir et fermer des connexions, et pour effectuer une TLS poignée de main si cette option TLS est activée sur le cluster.

    [Ressources] : Configurer ElastiCache (RedisOSS) pour une meilleure disponibilité

  • [Bonne pratique] La mise en pipeline (lorsque vos cas d'utilisation le permettent) peut améliorer les performances de manière significative.

    • Grâce au pipeline, vous réduisez le temps d'aller-retour (RTT) entre les clients de votre application et le cluster et les nouvelles demandes peuvent être traitées même si le client n'a pas encore lu les réponses précédentes.

    • Avec la mise en pipeline, vous pouvez envoyer plusieurs commandes au serveur sans attendre de réponse/accusé de réception. La mise en pipeline a toutefois un inconvénient : lorsque vous finissez par extraire toutes les réponses en bloc, il se peut qu'une erreur se soit produite et que vous ne la détectiez pas avant la fin.

    • Implémentez des méthodes pour renouveler les demandes lorsque l’erreur renvoyée omet la mauvaise demande.

    [Ressources] : Pipelining

OE 5 : Comment déployez-vous des ElastiCache composants pour une charge de travail ?

Introduction au niveau des questions : ElastiCache les environnements peuvent être déployés manuellement via la AWS console, ou par programmation via des boîtes à outils APIsCLI, etc. Les meilleures pratiques en matière d'excellence opérationnelle suggèrent d'automatiser les déploiements par le biais du code chaque fois que cela est possible. En outre, les ElastiCache clusters peuvent être isolés par charge de travail ou combinés à des fins d'optimisation des coûts.

Avantage au niveau des questions : le choix du mécanisme de déploiement le mieux adapté à vos ElastiCache environnements peut améliorer l'excellence opérationnelle au fil du temps. Il est recommandé d'effectuer les opérations sous forme de code dans la mesure du possible afin de minimiser les erreurs humaines et d'augmenter la reproductibilité, la flexibilité et le temps de réponse aux événements.

En comprenant les exigences d'isolation des charges de travail, vous pouvez choisir d'avoir ElastiCache des environnements dédiés par charge de travail ou de combiner plusieurs charges de travail en clusters uniques, ou des combinaisons des deux. Comprendre les compromis peut aider à trouver un équilibre entre excellence opérationnelle et optimisation des coûts.

  • [Obligatoire] Comprenez les options de déploiement disponibles et automatisez ces procédures dans la mesure du possible. ElastiCache Les pistes d'automatisation possibles incluent CloudFormation, AWS CLI/SDK, etAPIs.

    [Ressources] :

  • [Obligatoire] Pour toutes les charges de travail, déterminez le niveau d'isolation du cluster requis.

    • [Meilleure pratique] : Isolation élevée : mappage 1:1 de la charge de travail au cluster. Permet un contrôle précis de l'accès, du dimensionnement, de la mise à l'échelle et de la gestion des ElastiCache ressources par charge de travail.

    • [Pratique encore meilleure] : Isolation moyenne : M:1 isolé par objectif, mais peut-être partagé entre plusieurs charges de travail (par exemple, un cluster dédié à la mise en cache des charges de travail et un autre dédié à la messagerie).

    • [Bonne pratique] : Faible isolation : M:1 polyvalent, entièrement partagé. Recommandé pour les charges de travail où l'accès partagé est admis.

EO 6 : Comment planifiez-vous et atténuez-vous les défaillances ?

Introduction au niveau des questions : L'excellence opérationnelle consiste notamment à anticiper les défaillances en effectuant régulièrement des exercices « pré-mortem » afin d'identifier les sources potentielles de défaillance afin de les éliminer ou de les atténuer. ElastiCache propose un Failover API qui permet de simuler des événements de défaillance d'un nœud, à des fins de test.

Avantage au niveau de la question : en testant les scénarios de défaillance à l'avance, vous pouvez découvrir leur impact sur votre charge de travail. Cela permet de tester en toute sécurité les procédures de réponse et leur efficacité, tout en familiarisant votre équipe avec leur exécution.

[Obligatoire] Effectuez régulièrement des tests de basculement dans les comptes de développement/test. TestFailover

OE 7 : Comment résoudre les événements du moteur Valkey ou Redis OSS ?

Introduction au niveau des questions : l'excellence opérationnelle nécessite la capacité d'étudier à la fois les informations relatives au niveau du service et au niveau du moteur afin d'analyser l'état et l'état de vos clusters. ElastiCache peut émettre des journaux OSS du moteur Valkey ou Redis à Amazon CloudWatch et à Amazon Kinesis Data Firehose.

Avantage au niveau des questions : l'activation des journaux des OSS moteurs Valkey ou Redis sur les ElastiCache clusters permet de mieux comprendre les événements qui ont un impact sur l'état et les performances des clusters. Les journaux OSS du moteur Valkey ou Redis fournissent des données directement à partir du moteur qui ne sont pas disponibles via le mécanisme ElastiCache des événements. En observant attentivement les ElastiCache événements (voir OE-1 précédent) et les journaux du moteur, il est possible de déterminer l'ordre des événements lors du dépannage du point de vue du ElastiCache service et du point de vue du moteur.

  • [Obligatoire] Assurez-vous que la fonctionnalité de journalisation OSS du moteur Redis est activée, qui est disponible à partir de ElastiCache (RedisOSS) 6.2 et versions ultérieures. Vous pouvez le faire lors de la création du cluster ou en modifiant le cluster après sa création.

    • Déterminez si Amazon CloudWatch Logs ou Amazon Kinesis Data Firehose est la cible appropriée OSS pour les journaux du moteur Redis.

    • Sélectionnez un journal cible approprié dans Kinesis Data Firehose CloudWatch ou dans Kinesis Data Firehose pour conserver les journaux. Si vous possédez plusieurs clusters, envisagez d’utiliser un journal cible différent pour chaque cluster. Cela vous aidera à isoler les données lors de la résolution des problèmes.

    [Ressources] :

  • [Mieux] Si vous utilisez Amazon CloudWatch Logs, pensez à utiliser Amazon CloudWatch Logs Insights pour interroger le journal OSS du moteur Valkey ou Redis afin d'obtenir des informations importantes.

    Par exemple, créez une requête CloudWatch sur le groupe de journaux contenant les journaux du OSS moteur Valkey ou Redis qui renverront des événements marqués LogLevel d'un « WARNING », tels que :

    fields @timestamp, LogLevel, Message | sort @timestamp desc | filter LogLevel = "WARNING"

    [Ressources] : Analyse des données des CloudWatch journaux avec Logs Insights