

# Bonnes pratiques
<a name="perf-bp"></a>

**Topics**
+ [

# Choix d’architecture
](perf-arch.md)
+ [

# Informatique et matériel
](perf-compute.md)
+ [

# Gestion des données
](perf-data.md)
+ [

# Réseau et diffusion de contenu
](perf-networking.md)
+ [

# Processus et culture
](perf-process.md)

# Choix d’architecture
<a name="perf-arch"></a>

 La solution optimale pour une charge de travail peut varier, et les solutions combinent souvent plusieurs approches. Les charges de travail Well-Architected utilisent plusieurs solutions et permettent d’exploiter différentes fonctionnalités pour améliorer les performances. 

 AWS les ressources sont disponibles dans de nombreux types et configurations, ce qui permet de trouver plus facilement une approche qui correspond le mieux à vos besoins. Vous pouvez également rechercher des options qui ne sont pas facilement accessibles avec une infrastructure sur site. Par exemple, un service géré tel qu'Amazon DynamoDB fournit une base de données SQL sans base de données entièrement gérée avec une latence d'un chiffre en millisecondes, quelle que soit l'échelle. 

 La question suivante est axée sur ces quelques considérations relatives à l’efficacité des performances. (Pour obtenir la liste des questions et bonnes pratiques en matière d’efficacité des performances, consultez l’[annexe](a-performance-efficiency.md).) 


| PERF1 : Comment sélectionnez-vous les ressources cloud et les modèles d'architecture adaptés à votre charge de travail ? | 
| --- | 
|  Plusieurs approches sont souvent nécessaires pour obtenir de meilleures performances sur une charge de travail. Les systèmes Well-Architected utilisent plusieurs solutions et fonctions pour améliorer les performances.  | 

# Informatique et matériel
<a name="perf-compute"></a>

 Le choix d’une solution de calcul optimale pour une charge de travail particulière peut varier selon la conception de l’application, les modèles d’utilisation et les paramètres de configuration. Les architectures peuvent utiliser différentes solutions de calcul pour divers composants et permettent différentes fonctionnalités pour améliorer les performances. Le choix d’une solution de calcul inadaptée à une architecture peut nuire à ses performances. 

 Dans AWS, le calcul est disponible sous trois formes : instances, conteneurs et fonctions : 
+  Les **instances** sont des serveurs virtualisés qui vous permettent de modifier leurs fonctionnalités à l'aide d'un bouton ou d'un API appel. Comme les décisions relatives aux ressources dans le cloud ne sont pas figées, vous pouvez expérimenter avec différents types de serveurs. Chez AWS, ces instances de serveur virtuel se déclinent en différentes familles et tailles, et elles offrent une grande variété de fonctionnalités, notamment des disques SSD (SSDs) et des unités de traitement graphique (GPUs). 
+  Les **conteneurs** sont une méthode de virtualisation du système d'exploitation qui vous permet d'exécuter une application et ses dépendances dans le cadre de processus isolés en termes de ressources. AWS Fargate est le calcul sans serveur pour les conteneurs ou Amazon EC2 peut être utilisé si vous avez besoin de contrôler l'installation, la configuration et la gestion de votre environnement informatique. Vous pouvez également choisir parmi plusieurs plateformes d'orchestration de conteneurs : Amazon Elastic Container Service (ECS) ou Amazon Elastic Kubernetes Service (). EKS 
+  Les **fonctions** extraient l’environnement d’exécution depuis le code à appliquer. Par exemple, vous AWS Lambda permet d'exécuter du code sans exécuter d'instance. 

 La question suivante est axée sur ces quelques considérations relatives à l’efficacité des performances. 


| PERF2 : Comment sélectionnez-vous et utilisez-vous les ressources informatiques dans votre charge de travail ? | 
| --- | 
| La solution de calcul la plus efficace pour une charge de travail varie en fonction de la conception de l’application, des modèles d’utilisation et des paramètres de configuration. Les architectures peuvent utiliser différentes solutions de calcul pour divers composants et activer différentes fonctions pour améliorer les performances. La sélection d’une solution de calcul inadaptée à une architecture peut nuire à ses performances. | 

# Gestion des données
<a name="perf-data"></a>

 La solution de gestion des données optimale pour un système donné varie en fonction du type de données (bloc, fichier ou objet), des modèles d'accès (aléatoires ou séquentiels), du débit requis, de la fréquence d'accès (en ligne, hors ligne, archivage), de la fréquence de mise à jour (WORMdynamique) et des contraintes de disponibilité et de durabilité. Les charges de travail Well-Architected utilisent des magasins de données sur mesure qui intègrent différentes fonctionnalités pour améliorer les performances. 

 Dans AWS, le stockage est disponible sous trois formes : objet, bloc et fichier : 
+  Le **stockage d’objets** fournit une plateforme avec capacité de mise à l’échelle et durable pour rendre les données accessibles depuis n’importe quel emplacement Internet pour le contenu généré par l’utilisateur, l’archivage actif, le calcul sans serveur, le stockage de données big data ou la sauvegarde et la restauration. Amazon Simple Storage Service (Amazon S3) est un service de stockage d’objets qui offre une capacité de mise à l’échelle, une disponibilité des données, une sécurité et des performances de pointe. Amazon S3 offre une durabilité de 99,999999999 % (11 « 9 ») et stocke des données pour des millions d’applications pour des entreprises du monde entier. 
+  Le **stockage par blocs fournit un stockage** par blocs à haute disponibilité, cohérent et à faible latence pour chaque hôte virtuel. Il est analogue au stockage en attachement direct (DAS) ou à un réseau de stockage (). SAN Amazon Elastic Block Store (AmazonEBS) est conçu pour les charges de travail qui nécessitent un stockage persistant accessible par des EC2 instances, ce qui vous permet d'ajuster les applications avec la capacité de stockage, les performances et les coûts appropriés. 
+  Le **stockage de fichiers** permet d’accéder à un système de fichiers partagés sur plusieurs systèmes. Les solutions de stockage de fichiers telles qu'Amazon Elastic File System (AmazonEFS) sont idéales pour les cas d'utilisation tels que les référentiels de contenu volumineux, les environnements de développement, les magasins de médias ou les répertoires personnels des utilisateurs. Amazon FSx permet de lancer et d'exécuter des systèmes de fichiers courants de manière efficace et rentable, afin que vous puissiez tirer parti des riches fonctionnalités et des performances rapides des systèmes de fichiers open source et sous licence commerciale largement utilisés. 

 La question suivante est axée sur ces quelques considérations relatives à l’efficacité des performances. 


| PERF3 : Comment stockez-vous, gérez-vous et accédez-vous aux données de votre charge de travail ? | 
| --- | 
|  La solution de stockage la plus efficace pour un système varie en fonction du type d'opération d'accès (bloc, fichier ou objet), des modèles d'accès (aléatoire ou séquentiel), du débit requis, de la fréquence d'accès (en ligne, hors ligne, archivage), de la fréquence de mise à jour (WORMdynamique) et des contraintes de disponibilité et de durabilité. Les systèmes Well-Architected utilisent plusieurs solutions de stockage et activent différentes fonctionnalités pour améliorer les performances et utiliser efficacement les ressources.  | 

# Réseau et diffusion de contenu
<a name="perf-networking"></a>

 La solution de mise en réseau optimale pour une charge de travail varie en fonction de la latence, des exigences de débit, de l’instabilité et de la bande passante. Le choix des options d’emplacement est tributaire des contraintes physiques telles que les ressources pour utilisateur ou sur site. Ces contraintes peuvent être compensées avec les emplacements périphériques ou le placement des ressources. 

 Activé AWS, le réseau est virtualisé et est disponible dans un certain nombre de types et de configurations différents. Il est ainsi plus facile de répondre à vos besoins en matière de mise en réseau. AWS propose des fonctionnalités de produit (par exemple, mise en réseau améliorée, instances optimisées pour le EC2 réseau Amazon, accélération des transferts Amazon S3 et Amazon dynamique CloudFront) pour optimiser le trafic réseau. AWS propose également des fonctionnalités réseau (par exemple, le routage de latence Amazon Route 53, les VPC points de terminaison Amazon AWS Direct Connect, etc. AWS Global Accelerator) pour réduire la distance ou l'instabilité du réseau. 

 La question suivante est axée sur ces quelques considérations relatives à l’efficacité des performances. 


| PERF4 : Comment sélectionnez-vous et configurez-vous les ressources réseau de votre charge de travail ? | 
| --- | 
|  Cette question inclut des conseils et des bonnes pratiques pour concevoir, configurer et exploiter des solutions de mise en réseau et de diffusion de contenu efficaces dans le cloud.  | 

# Processus et culture
<a name="perf-process"></a>

 Lors de la création de l’architecture des charges de travail, vous pouvez adopter certains principes et certaines pratiques pour optimiser l’exécution de charges de travail cloud efficaces et performantes. Pour adopter une culture qui favorise l’efficacité des performances des charges de travail dans le cloud, tenez compte des principes et pratiques clés suivants. 

 Tenez compte de ces principes clés pour développer cette culture : 
+  **Infrastructure en tant que code :** définissez votre infrastructure en tant que code à l'aide d'approches telles que AWS CloudFormation des modèles. L’utilisation de modèles vous permet de placer votre infrastructure en mode de contrôle de code source parallèlement au code et aux configurations de votre application. Vous pouvez ainsi appliquer les pratiques utilisées pour développer des logiciels à votre infrastructure et itérer rapidement. 
+  **Pipeline de déploiement :** utilisez un pipeline de déploiement d’intégration continue (CI) et de livraison continue (CD) (par exemple, référentiel de code source, systèmes de génération, déploiement et automatisation des tests) pour déployer votre infrastructure. Vous pouvez ainsi déployer de manière reproductible et cohérente, le tout à un faible coût, à mesure que vous itérez. 
+  **Mesures bien définies :** configurez et surveillez les mesures pour capturer les indicateurs de performance clés (KPIs). Nous vous recommandons d’utiliser des métriques techniques, mais aussi des métriques commerciales. Pour les sites Web ou les applications mobiles, les indicateurs clés sont la capture time-to-first-byte ou le rendu. D’autres mesures généralement applicables comprennent le nombre de threads, le taux de récupérateur de mémoire et les états d’attente. Les métriques commerciales, telles que les coûts cumulés agrégés par demande, peuvent vous permettre d’identifier des solutions pour réduire vos coûts. Réfléchissez bien à la façon dont vous prévoyez d’interpréter les métriques. Par exemple, vous pouvez choisir le maximum ou le 99e centile plutôt que la moyenne. 
+  **Tests de performance automatiques :** dans le cadre de votre processus de déploiement, des tests de performance peuvent se déclencher automatiquement une fois les tests en cours d’exécution bien effectués. L’automatisation doit créer un environnement, configurer des conditions initiales (comme des données de test), puis exécuter une série d’analyses comparatives et de tests de charge. Les résultats de ces tests doivent être rattachés à la version de génération afin que vous puissiez suivre l’évolution des performances dans le temps. Pour les tests de longue durée, vous pouvez rendre cette partie du pipeline asynchrone par rapport au reste de la compilation. Vous pouvez également exécuter des tests de performance pendant la nuit à l'aide d'Amazon EC2 Spot Instances. 
+  **Génération de charge :** vous devez créer une série de scripts qui reproduisent des parcours utilisateur synthétiques ou préenregistrés. Ces scripts doivent être idempotents et non couplés. Il se peut que vous deviez aussi inclure à cette série des scripts *de préparation* pour obtenir des résultats valides. Dans la mesure du possible, vos scripts de test doivent pouvoir répliquer le comportement d’utilisation en production. Vous pouvez utiliser des logiciels ou des solutions software-as-a-service (SaaS) pour générer la charge. Envisagez d’utiliser les solutions [AWS Marketplace](https://aws.amazon.com/marketplace/) et les [instances Spot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html) : elles peuvent être des moyens économiques de générer la charge. 
+  **Visibilité des performances :** les métriques clés doivent être visibles pour votre équipe, en particulier pour chaque version. Vous pouvez ainsi identifier les tendances positives ou négatives significatives au fil du temps. Vous devez également afficher les métriques sur le nombre d’erreurs ou d’exceptions pour vous assurer que vous testez un système fonctionnel. 
+ **Visualisation :** utilisez des techniques de visualisation qui permettent d’identifier clairement l’origine des problèmes de performances, les points chauds, les états d’attente ou les taux d’utilisation faibles. Superposez les métriques de performance sur les schémas d’architecture, des graphiques ou codes d’appel qui peuvent vous aider à identifier rapidement les problèmes. 
+  **Processus d’examen régulier :** les architectures qui présentent des performances médiocres sont généralement le résultat d’un processus d’évaluation des performances inexistant ou interrompu. Si votre architecture est peu performante, la mise en œuvre d’un processus d’évaluation des performances vous permet de procéder à des améliorations itératives. 
+  **Optimisation continuelle :** adoptez une culture permettant d’optimiser en permanence l’efficacité des performances de votre charge de travail dans le cloud. 

 La question suivante est axée sur ces quelques considérations relatives à l’efficacité des performances. 


| PERF5 : Quel processus utilisez-vous pour améliorer l'efficacité des performances de votre charge de travail ?  | 
| --- | 
|  Lors de la création de l’architecture des charges de travail, vous pouvez adopter certains principes et certaines pratiques pour optimiser l’exécution de charges de travail cloud efficaces et performantes. Pour adopter une culture qui favorise l’efficacité des performances des charges de travail dans le cloud, tenez compte des principes et pratiques clés suivants.  | 