Extensibilité
L'extensibilité est la capacité de votre charge de travail à répondre aux demandes de votre entreprise en temps quasi réel sans perturber la qualité du service. Traditionnellement, une capacité supplémentaire a été affectée à l'avance pour tenir compte des pics prévisibles du trafic, tandis que les pics inattendus du trafic sont surveillés et que des alertes sont publiées pour augmenter la capacité, dans une approche réactive.
Les mises à l'échelle et les mises à l'échelle nécessitent une intervention manuelle et sont sujettes à des calculs variables pour la quantité de changement de capacité et la durée à maintenir. Il devient plus fastidieux de gérer les exigences lorsque les pics sont fréquents et imprévisibles.
Ces types de scénarios ont généralement été gérés avec une capacité de mise à l'échelle permanente pour la charge de travail, ce qui contribue à tenir compte de la charge, mais entraîne des coûts plus élevés pour l'exécution des charges de travail à long terme. Contrairement aux installations sur place où la capacité matérielle est acquise, peu importe l'utilisation, la gestion de ce type de capacité dans le nuage ne nécessite pas d'investissement permanent dans l'infrastructure, et aucune actualisation matérielle n'est requise pour rester à jour.
La charge de travail peut augmenter la capacité de demande dans l'UC, la mémoire, le stockage et les entrées/sorties (E/S), où l'UC et la mémoire sont des paramètres principaux qui fluctuent considérablement. La capacité peut être mise à l'échelle et réduite de deux façons :
- Ajustement horizontal : Une capacité parallèle est en cours d'ajout pour prendre en charge un chargement supplémentaire.
- Ajustement vertical : Augmenter et diminuer l'UC et la mémoire, sans modifier le nombre d'infrastructures.
La mise à l'échelle horizontale est facile à réaliser en plaçant les équilibreurs de charge devant l'infrastructure dorsale. Cela répartit la charge sans incidence sur les transactions courantes existantes. La mise à l'échelle verticale nécessite une mise à l'échelle de l'infrastructure. La capacité souhaitée est provisionnée en parallèle et la charge de travail est transférée vers une nouvelle capacité. La charge de travail transférée à une nouvelle capacité peut avoir une incidence minimale ou nulle sur les transactions existantes si le système d'application est conçu pour gérer ces types de scénarios.
Lors de l'ajustement d'une application, il est important de tenir compte non seulement de la charge de travail de l'application elle-même, mais également du mécanisme de communication qui la relie à d'autres applications. Un mécanisme de communication est un élément essentiel de toute application distribuée, permettant à différentes parties du système d'échanger des informations et de travailler ensemble pour atteindre des objectifs communs. À mesure que la charge de travail d'une application augmente, la demande sur son mécanisme de communication augmente également. Si le mécanisme de communication n'est pas conçu pour s'adapter, il peut devenir un goulot d'étranglement, limitant les performances globales de l'application. Cela peut entraîner une dégradation de l'expérience utilisateur, une latence accrue et même des pannes système.
La conception d'une application d'architecture pour une mise à l'échelle élastique nécessite une considération approfondie de tous les aspects des limites de calcul, de mémoire, de stockage, de réseau, de débit et de limitation. Les informations suivantes décrivent des scénarios courants pour la conception d'un système évolutif haute performance. Déterminez votre approche en fonction de vos besoins organisationnels, de vos valeurs commerciales et de vos priorités d'exécution et de déploiement de votre charge de travail dans OCI.
Redimensionnement sur demande
La mise à l'échelle sur demande est une fonction de l'informatique en nuage qui vous permet d'ajuster automatiquement les ressources affectées à votre application ou service en fonction de la demande actuelle. Vous pouvez augmenter ou réduire le nombre de serveurs, de stockage et d'autres ressources que vous utilisez en temps réel, en fonction de la charge de travail. Par exemple, le service de calcul pour OCI ajuste le nombre d'instances de calcul dans un groupe d'instances en fonction des mesures et du programme pour répondre à la capacité souhaitée en fonction de la configuration.
Augmentation et augmentation
L'augmentation fait référence à la réduction du nombre de ressources affectées à une application ou à un service, tandis que l'augmentation fait référence à l'augmentation du nombre de ressources. Vous pouvez utiliser les deux types d'ajustement pour gérer les pics de charge. Par exemple, les instances extensibles OCI sont conçues pour les scénarios où une instance est généralement inactive ou a une faible utilisation d'UC, avec des pics occasionnels. Une fois la séparation terminée, l'instance est ajustée à la capacité de référence.
Limites de service et quotas
Concevez votre charge de travail de sorte qu'elle soit équilibrée entre les différents modules d'une application pour une mise à l'échelle respectivement. Tenez également compte des limites de service pour la location et des quotas de compartiment. Par exemple, vous pouvez créer 50 équilibreurs de charge et 5000 MBps pour un modèle d'abonnement avec crédits universels d'Oracle (à compter d'aujourd'hui, ce qui peut changer dans le futur). Certaines limites de service sont dynamiques et peuvent être augmentées au fil du temps en fonction de l'utilisation. Consultez votre modèle de tarification OCI pour connaître les limites et les quotas différents.
Haute disponibilité
Éliminez les points de défaillance uniques et concevez votre charge de travail pour assurer un maximum de temps de disponibilité et d'accessibilité. OCI fournit des capacités de haute disponibilité en tant que domaines d'erreur et domaines de disponibilité pour assurer la redondance de votre charge de travail.
Par exemple, la répartition de votre infrastructure d'application dans plusieurs domaines d'erreur assure une anti-affinité afin que votre charge de travail ne soit pas sur le même matériel physique au sein du centre de données. Un domaine de disponibilité ajoute une couche de fiabilité supplémentaire, car les différents centres de données de la même région sont isolés les uns des autres, sont tolérants aux pannes et prémunis contre les pannes simultanées. Les centres de données d'une même région sont connectés les uns aux autres avec une faible latence et une bande passante élevée, ce qui réduit les problèmes de latence.
Récupération après sinistre
En cas de défaillance catastrophique due à des catastrophes naturelles ou d'origine humaine, il est essentiel d'avoir un plan d'urgence dans la charge de travail pour se reproduire dans une autre région. Un processus de récupération est la seule option dans ce type de scénario, et le niveau de récupération doit être conçu en fonction de la criticité de l'application, de l'objectif de temps de récupération associé (ODR) et de l'objectif de point de récupération (OPR). OCI fournit plusieurs méthodes pour l'approche de récupération après sinistre en fonction de la durabilité des données, de l'ODR et de l'OPR.
Par exemple, vous pouvez reconstruire votre système dans une autre région à partir d'une infrastructure de sauvegarde et de provisionnement de base de données avec l'infrastructure-service (IaaS) et DevOps pour une mise en oeuvre de récupération après sinistre à faible coût, mais avec une perte et une indisponibilité de données plus élevées. Un système actif/actif avec réplication et partage de charge en temps réel a un coût plus élevé, mais presque zéro perte de données et temps d'arrêt.
Planification de la capacité
Déterminez les ressources nécessaires pour répondre aux demandes actuelles et futures de votre charge de travail en fonction des exigences de rendement et des projections de croissance afin d'affecter la bonne quantité de ressources et l'ajustement automatique. Vous pouvez utiliser des mesures historiques surveillées pour les projections.
Par exemple, vous devez provisionner à l'avance la forme et la taille du stockage de base de données en fonction de la capacité linéaire, plutôt que sur demande. L'utilisation de statistiques historiques peut vous aider à définir la capacité afin d'éviter une mise à l'échelle ad hoc.
Surveillance des rendements
Mesurer, suivre et analyser la performance des statistiques sur les ressources et les applications en nuage pour votre application afin de s'assurer qu'elles répondent aux exigences de performance et offrent un rendement optimal aux utilisateurs. Il est important que l'application puisse détecter les problèmes de performance et prendre des mesures correctives avant d'avoir une incidence sur les utilisateurs. OCI Application Performance Monitoring fournit un jeu complet de fonctions pour surveiller les applications et diagnostiquer les problèmes de performance.
Par exemple, Application Performance Monitoring fournit une visibilité complète du rendement et permet de diagnostiquer rapidement les problèmes tout en mettant l'accent sur les processus d'affaires de base. OCI prend en charge la surveillance de plusieurs composants et de la logique d'application répartis entre les clients, les services tiers et les niveaux de calcul dorsaux, sur place ou dans le nuage.
Principes de performance
Les applications doivent être conçues pour s'adapter à différents modules et composants. Pour ce faire, il est essentiel que votre application soit conçue pour tirer parti des meilleures pratiques OCI afin d'évoluer avec un temps d'arrêt quasi nul.
Par exemple, si votre application est déjà divisée en microservices légers, elle peut être facilement déployée et ajustée pour des scénarios haute performance sur Oracle Kubernetes Engine (OKE) ou les instances de conteneur OCI. Vous devez également envisager des approches de mise en oeuvre, telles que les équilibreurs de charge, la collecte en nuage de points (groupement et détachement), la mémoire cache de résultats, l'espace partagé (enrichissement des informations), le canal et le filtre, MapReduce (jointure par lots pour le goulot d'étranglement d'E/S), le parallèle synchrone en masse, l'orchestrateur d'exécution, etc. Il existe des modèles de conception bien connus tels que la mise en cache, la séparation des responsabilités d'interrogation de commande (CQRS), la lutte contre la corruption, le disjoncteur, l'approvisionnement d'événements, l'abonné de l'éditeur, la fragmentation, l'étrangleur, la saga, la limitation, etc., pour que votre application fonctionne de manière native.
Coût par rapport à la capacité
Il est possible d'augmenter ou de réduire la capacité dans le nuage en ajoutant ou en supprimant l'infrastructure. Il est important d'utiliser une capacité qui a déjà été provisionnée efficacement pour réduire le coût total de fonctionnement. Dans certains scénarios, les applications critiques comportent des exceptions pour provisionner la capacité à l'avance afin d'éviter les violations de CNS, ce qui est justifié. Prendre des décisions en fonction des besoins et des priorités de l'entreprise avant de décider de la capacité, car les besoins en matière de rendement sont proportionnels à l'augmentation des coûts.
Efficience
Un aspect de la conception des applications en nuage pour l'évolutivité est de gérer l'augmentation de la charge ou du trafic de manière rentable. Les applications doivent être conçues et mises en œuvre pour maximiser l'efficacité de l'utilisation et du coût des ressources. Vous devez surveiller l'utilisation des ressources et automatiser autant que possible l'ajustement automatique, tout en tenant compte de l'optimisation des coûts et de l'amélioration de la performance. OCI offre une capacité d'ajustement automatique dans la plupart de nos services, avec configuration. Certains services en nuage peuvent être automatisés avec des systèmes de tiers.
Radiations
Les compromis sont une considération importante pour les applications en nuage et l'extensibilité. Ils impliquent de prendre des décisions sur les aspects d'une application à prioriser pour atteindre l'évolutivité. Au fur et à mesure que les applications grandissent et deviennent plus complexes, il devient de plus en plus difficile d'optimiser tous les aspects de l'application simultanément. Par conséquent, vous devez faire des compromis pour obtenir une évolutivité optimale.
Les compromis que vous devez considérer sont les suivants :
- Rendement par rapport au coût
- Flexibilité et complexité
- Résilience par rapport au coût
- Évolutivité par rapport à la sécurité
- Mise sur le marché et évolutivité
Utilisation des conteneurs et des systèmes sans serveur
L'utilisation de conteneurs et de serveurs sans serveur peut améliorer considérablement l'évolutivité dans OCI. Cela permet de décomposer les applications en composants plus petits et plus efficaces qui peuvent être facilement mis à l'échelle au besoin. Dans OCI, vous pouvez choisir parmi OCI Container Engine pour Kubernetes (OKE) pour le déploiement de conteneurs afin d'adapter les microservices de manière indépendante. Envisagez également les services Fonctions OCI et OCI Container Instances d'exploiter l'architecture élastique de la plate-forme sans serveur pour des services hautement évolutifs afin de déployer votre charge de travail.
Considération de la base de données
Les données sont la partie la plus critique de toute application. L'ensemble de votre système repose sur l'intégrité et l'information. Il est important de choisir le bon type de base de données en fonction de vos applications et de vos besoins d'affaires.
Il fut un temps où les informations étaient conservées dans les systèmes de gestion de bases de données relationnelles (SGBDR). Maintenant que vous êtes dans le nuage, vous pouvez choisir parmi plusieurs options et fournisseurs de base de données. Aujourd'hui, les bases de données répondent à des besoins d'affaires uniques et vont de la taille micro à la capacité incroyablement grande pour le traitement des données.
Par exemple, Oracle Autonomous Database est la meilleure solution pour les données transactionnelles, alors que MySQL est plus adaptée à l'analyse et à l'apprentissage automatique. À son tour, la base de données Oracle NoSQL convient aux données simples, mais fournit des réponses prévisibles à la milliseconde près pour les interrogations simples. Vous pouvez envisager l'infrastructure Exadata pour des besoins plus sécurisés, de haute performance et d'isolement.
Considération en matière de stockage
Les données sont disponibles dans de nombreux formats, tailles et fréquences d'accès, mais nécessitent toujours de l'espace pour le stockage. Il existe des options du magasin d'objets, du magasin de blocs et du magasin de fichiers pour stocker des données, mais chacune a un objectif spécifique. Le service Stockage d'objets pour OCI est conçu pour tout type de contenu à stocker en tant que stockage standard, peu fréquent et d'archives. Le service Stockage de fichiers OCI est conçu pour fournir un système de fichiers traditionnel qui peut être monté en tant que stockage réseau ou NFS. Le service Volumes par blocs pour OCI est conçu pour l'attachement à une instance et peut être utilisé en tant que volume de démarrage et volume par blocs.
Performance de référence
Cette approche est utilisée pour déterminer le niveau de performance de base d'une application à exécuter dans le nuage afin de la maintenir par rapport à la charge prévue. Il établit un point de performance de référence. Ce point est utilisé pour les points de référence futurs dans les modifications requises lors de la mise à l'échelle pour répondre au niveau de performance souhaité.
Test de charge et de stress
Les tests de charge simulent des charges quasi réelles pour mesurer les performances de la réponse de l'application à l'augmentation du trafic. Cela vérifie si un système peut gérer les charges utilisateur attendues sans détériorer les performances ou les pannes. Il valide également l'évolutivité d'un système par rapport à la charge variable sur l'application. Cela permet au comportement de réponse d'identifier les goulots d'étranglement et d'optimiser la configuration du système et la planification de la capacité.
Le test de stress va au-delà de la charge utilisateur attendue et valide la capacité d'une application à gérer des pics soudains de trafic ou une charge inhabituelle. Il vérifie également si un système peut gérer une charge inhabituelle et inattendue sans décomposer le système ou dégrader considérablement les performances. Cela repousse les limites du système pour identifier les faiblesses de l'architecture ou de la capacité du système, ce qui contribue à optimiser l'évolutivité et la résilience du système.
Identifier les cols de bouteille
Dans les applications en nuage, il est essentiel de s'assurer de l'extensibilité et de la performance d'une application pour identifier les goulots d'étranglement et gérer la dégradation des performances en cascade. Identifier les points dans le système où le flux de données ou de traitement est restreint ou ralenti, ce qui diminue les performances et peut entraîner l'échec du système par rapport à la capacité souhaitée. Des goulots d'étranglement peuvent survenir dans divers domaines, y compris le réseau, le stockage, le traitement et l'accès à la base de données.
Approche fondée sur les données
Utilisez les outils de surveillance et l'analyse de données pour recueillir et analyser des données pour la performance du système, les modèles d'utilisation et le comportement des utilisateurs afin de mettre en œuvre une approche logique, et les renseignements de données pour optimiser la performance, la capacité et l'extensibilité du système. Cela mène à une meilleure expérience utilisateur et à une valeur commerciale accrue. Voici quelques étapes clés pour mettre en œuvre une approche axée sur les données :
- recueillir et analyser des données;
- Identifier les modèles et les tendances.
- Optimiser la capacité du système à partir d'informations.
- Surveillez et ajustez continuellement les performances du système.
Surveillance de l'état
Il est essentiel de surveiller l'état des applications en nuage pour assurer l'extensibilité et la performance souhaitées. Une application saine fonctionne efficacement et répond aux demandes des utilisateurs. Une application malsaine rencontre des problèmes tels que le temps de réponse lent, le taux d'erreur élevé et les pannes. Surveiller l'état des applications et agir en conséquence peut entraîner une détection précoce des problèmes, optimiser la performance, améliorer l'expérience utilisateur et réduire les coûts. Le service Surveillance pour OCI surveille, de manière active et passive, les ressources en nuage à l'aide des mesures et de la fonction d'alarme pour collecter les configurations et agir en conséquence.
Dépannage des problèmes de performance
Les problèmes de performance nécessitent différentes approches pour le dépannage dans les environnements en nuage. Vos niveaux d'accès dans le nuage peuvent être différents de votre système local ou de votre infrastructure sur place. Voici les étapes qui peuvent vous aider à résoudre les problèmes de performance dans le nuage :
- Définissez le problème.
- Collectez les données.
- Analyser les données.
- Identifier les causes du problème.
- Tester et isoler.
- Corrigez le problème.
- Surveiller et valider.
Envisagez de consulter les étapes de dépannage courantes fournies avec chaque service OCI.
Identifier les limites de service
Il est important de tenir compte des limites individuelles des services en nuage pour rendre votre système hautement évolutif et atteindre une capacité maximale. En connaissant les limites de performance, vous pouvez concevoir votre système pour qu'il fonctionne dans ces limites et éviter les goulots d'étranglement de performance ou les interruptions de service. Par exemple, une instance de calcul OCI avec une machine virtuelle ou sans système d'exploitation comporte toujours des limites connues et des problèmes à prendre en compte. Vous pouvez utiliser l'équilibreur de charge OCI pour augmenter la performance en déployant une capacité supplémentaire derrière l'équilibreur de charge.
CNS de service indépendant
La conception d'un système haute performance et évolutif nécessite une réflexion approfondie de chaque contrat de niveau de service en nuage pour réduire les temps d'arrêt, même en cas de sinistre. Chaque service dans le nuage comporte un CNS et des objectifs de niveau de service bien définis. Vous devrez peut-être envisager une redondance dans le système pour satisfaire ou dépasser la disponibilité de services ou de services individuels avec le moins de temps de CNS. OCI a défini un objectif de niveau de service pour les services PaaS et SaaS Public Cloud à prendre en compte dans votre conception et votre architecture.
Notes de version
OCI met constamment à jour les services avec de nouvelles fonctionnalités et de nouveaux correctifs. Le fait de rester au courant des dernières modifications peut aider à améliorer vos applications et à mettre en œuvre de nouvelles fonctionnalités. Les mises à jour contiennent également des correctifs de bogues et des mises à jour de sécurité, des interruptions de service et des temps d'arrêt, des modifications des prix et des plans de service, de la conformité et des modifications réglementaires. Les notes de version pour OCI fournissent une vue consolidée permettant aux services en nuage de rester au fait des annonces et des modifications.
Analyse des coûts par rapport à la capacité
Pour l'évolutivité, il est important de tenir compte de vos exigences en matière de taille et de forme et d'ajouter un bouchon supplémentaire. Il est également important de considérer le service en nuage adapté à vos besoins plutôt que de simplement choisir des services coûteux sans raisons qui justifient le coût. Évitez d'utiliser des services inutiles et d'ajouter des couches à votre système afin de réduire les coûts et la latence. Une analyse approfondie du coût, des fonctionnalités et de la disponibilité des services en nuage est cruciale pour concevoir un système hautement rentable.