Evolutivité
L'évolutivité est la capacité de votre charge de travail à répondre aux demandes de l'entreprise en temps quasi réel sans perturber la qualité du service. La capacité supplémentaire a traditionnellement été affectée à l'avance pour s'adapter aux pics prévisibles du trafic, tandis que les pics inattendus du trafic sont surveillés et des alertes sont publiées pour augmenter la capacité, dans une approche réactive.
L'augmentation et la réduction d'échelle nécessitent une intervention manuelle et sont soumises à 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é ascendante permanente pour la charge de travail, ce qui aide à s'adapter à la charge, mais entraîne des coûts plus élevés pour l'exécution des charges de travail à long terme. Contrairement aux solutions sur site où la capacité matérielle est achetée, quelle que soit l'utilisation, la gestion de ce type de capacité dans le cloud ne nécessite pas d'investissement permanent dans l'infrastructure et aucune actualisation du matériel n'est requise pour rester à jour.
La charge globale peut augmenter la capacité de demande dans la CPU, la mémoire, le stockage et les entrées/sorties (E/S), où la CPU et la mémoire sont des paramètres principaux qui fluctuent considérablement. La capacité peut être augmentée et réduite de deux manières :
- Redimensionnement horizontal : une capacité parallèle est ajoutée pour s'adapter à une charge supplémentaire.
- Redimensionnement vertical : augmentez et diminuez le nombre de CPU et de mémoire, sans modifier le nombre d'infrastructures.
Le redimensionnement horizontal est facile à réaliser en plaçant les équilibreurs de charge devant l'infrastructure back-end. Cela répartit la charge sans impact sur les transactions en cours existantes. La mise à l'échelle verticale nécessite une augmentation ou une réduction de l'infrastructure. La capacité souhaitée est provisionnée en parallèle et la charge globale est transférée vers une nouvelle capacité. La charge de travail transférée vers une nouvelle capacité peut avoir un impact minimal, voire nul, sur les transactions existantes si le système d'application est conçu pour gérer ces types de scénarios.
Lors de la mise à l'échelle d'une application, il est important de prendre en compte non seulement la charge de travail de l'application elle-même, mais également le mécanisme de communication qui la connecte à 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. Au fur et à 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 évoluer, il peut devenir un goulot d'étranglement, ce qui limite 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 à l'échelle élastique nécessite une prise en compte 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 traitent des scénarios courants de conception d'un système évolutif hautes performances. Déterminez votre approche en fonction des besoins de votre entreprise, des valeurs commerciales et des priorités d'exécution et de déploiement de votre charge de travail dans OCI.
Mise à l'échelle à la demande
La mise à l'échelle à la demande est une fonctionnalité du cloud computing qui vous permet d'ajuster automatiquement les ressources alloué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 globale. Par exemple, OCI Compute ajuste le nombre d'instances de calcul dans un pool d'instances en fonction des mesures et de la programmation afin de répondre à la capacité souhaitée en fonction de la configuration.
Augmentation
Le redimensionnement consiste à réduire le nombre de ressources allouées à une application ou à un service, tandis que le redimensionnement consiste à augmenter le nombre de ressources. Vous pouvez utiliser les deux types de mise à l'échelle pour gérer les pics de charge. Par exemple, les instances éclatables OCI sont conçues pour des scénarios où une instance est généralement inactive ou présente un faible taux d'utilisation de l'UC avec des pics occasionnels. Une fois l'éclatement terminé, l'instance est redimensionnée en fonction de la capacité de référence.
Limites de service et quotas
Concevez votre charge globale de sorte qu'elle soit équilibrée entre les différents modules d'une application pour évoluer respectivement. Tenez également compte des limites de service sur 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 Oracle (à compter d'aujourd'hui, ce qui peut changer à l'avenir). Certaines limites de service sont dynamiques et peuvent être augmentées dans le temps en fonction de l'utilisation. Reportez-vous à votre modèle de tarification OCI pour connaître les différentes limites et quotas.
Haute disponibilité
Éliminez les points de défaillance uniques et concevez votre charge de travail pour garantir un maximum de temps d'activité et d'accessibilité. OCI fournit des fonctionnalités de haute disponibilité en tant que domaines de pannes et domaines de disponibilité pour assurer la redondance dans votre charge globale.
Par exemple, la distribution de votre infrastructure d'application à plusieurs domaines de pannes fournit une anti-affinité qui empêche la charge de travail de se trouver 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, tolèrent les pannes et sont peu susceptibles d'échouer simultanément. Les centres de données d'une 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 de disposer d'un plan d'urgence pour la charge de travail à reproduire dans une autre région. Un processus de récupération est la seule option de 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é, de l'objectif de point de récupération et de l'objectif de point de récupération. OCI fournit plusieurs méthodes pour l'approche de récupération après sinistre en fonction de la durabilité des données, du RTO et du RPO.
Par exemple, vous pouvez reconstruire votre système dans une autre région à partir d'une sauvegarde de base de données et provisionner l'infrastructure avec Infrastructure-as-a-Service (IaaS) et DevOps pour une implémentation de récupération après sinistre à faible coût, mais avec une perte de données et une indisponibilité plus élevées. Un système actif/actif avec réplication en temps réel et partage de charge a un coût plus élevé, mais près de zéro perte de données et temps d'arrêt.
Planification de capacité
Déterminez les ressources nécessaires pour répondre aux exigences actuelles et futures de votre charge de travail en fonction des exigences de performances et des projections de croissance pour allouer la bonne quantité de ressources et le redimensionnement automatique. Vous pouvez utiliser des métriques surveillées historiques 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 performances
Mesurer, suivre et analyser les performances des statistiques des applications et des ressources cloud pour votre application afin de vous assurer qu'elles répondent aux exigences de performances et offrent des performances optimales aux utilisateurs. La surveillance des performances est importante pour que l'application puisse identifier les problèmes de performances et prendre des mesures correctives avant d'affecter les utilisateurs. OCI Application Performance Monitoring fournit un ensemble complet de fonctionnalités permettant de surveiller les applications et d'identifier les problèmes de performances.
Par exemple, Application Performance Monitoring offre une visibilité approfondie des performances et vous permet de diagnostiquer rapidement les problèmes, tout en vous concentrant sur la fourniture de processus métier de base. OCI se charge de la surveillance de plusieurs composants et de la répartition de la logique des applications entre les clients, les services tiers et les niveaux de calcul de back-end, sur site ou sur le cloud.
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 d'OCI pour évoluer avec un temps d'inactivité quasi nul.
Par exemple, si votre application est déjà divisée en microservices légers, elle peut être facilement déployée et redimensionnée pour des scénarios à hautes performances sur Oracle Kubernetes Engine (OKE) ou OCI Container Instances. Vous pouvez également envisager des approches d'implémentation, telles que les équilibreurs de charge, Scatter-Gather (pool et détachement), le cache de résultats, l'espace partagé (enrichissement des informations), le pipeline et le filtre, MapReduce (jointure par lots pour le goulet 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égrégation des responsabilités de requête de commande (CQRS), la lutte contre la corruption, le disjoncteur, la sélection d'événements, l'abonné éditeur, le sharding, Strangler, Saga, Throttling, etc., pour que votre application fonctionne de manière native.
Coût et capacité
La capacité dans le cloud peut être augmentée ou diminuée en ajoutant ou en supprimant une infrastructure. Il est important d'utiliser la capacité déjà provisionnée efficacement pour réduire le coût d'exécution total. Dans certains scénarios, les applications critiques présentent des exceptions pour provisionner la capacité à l'avance afin d'éviter les violations de contrat de niveau de service, ce qui est justifié. Prenez 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 performance sont proportionnels à l'augmentation des coûts.
Efficacité
Un aspect de la conception d'applications cloud à des fins d'évolutivité consiste à 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 des ressources et des coûts. Vous devez surveiller l'utilisation des ressources et automatiser autant que possible le redimensionnement automatique, tout en envisageant l'optimisation des coûts et l'amélioration des performances. OCI fournit une fonctionnalité de redimensionnement automatique dans la plupart de nos services, avec configuration. Certains services cloud peuvent être automatisés avec des systèmes tiers.
Congés
Les compromis sont une considération importante pour les applications cloud et l'évolutivité. 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 se développent et deviennent plus complexes, il devient de plus en plus difficile d'optimiser simultanément tous les aspects de l'application. Par conséquent, vous devez faire des compromis pour atteindre une évolutivité optimale.
Voici quelques compromis courants que vous devez prendre en compte :
- Performances et coûts
- Flexibilité et complexité
- Résilience par rapport aux coûts
- Evolutivité et sécurité
- Délai de mise sur le marché par rapport à l'évolutivité
Utilisation de conteneurs et sans serveur
L'utilisation de conteneurs et sans serveur peut améliorer considérablement l'évolutivité dans OCI. Cela permet aux applications d'être divisées en composants plus petits et plus efficaces qui peuvent être facilement mis à l'échelle selon les besoins. Dans OCI, vous pouvez choisir entre OCI Container Engine for Kubernetes (OKE) pour le déploiement de conteneurs afin de faire évoluer les microservices indépendamment. Envisagez également OCI Functions et OCI Container Instances pour tirer parti de l'architecture élastique de plate-forme sans serveur pour des services hautement évolutifs afin de déployer votre charge de travail.
Remarques concernant la base de données
Les données sont la partie la plus importante de toute application. L'ensemble de votre système repose sur l'intégrité et les informations. Il est important de considérer le type de base de données approprié pour répondre aux besoins de votre application et de votre entreprise.
Il était un temps où les informations étaient conservées dans des systèmes de gestion de base de données relationnelle (SGBDR). Désormais dans le cloud, vous pouvez choisir parmi différentes options et différents fournisseurs de base de données. Aujourd'hui, les bases de données répondent à des besoins commerciaux uniques et vont de la taille micro à une capacité incroyablement grande pour la gestion des données.
Par exemple, Oracle Autonomous Database est la meilleure solution pour les données transactionnelles, tandis que MySQL est plus adapté aux analyses et au machine learning. À son tour, la base de données Oracle NoSQL convient aux données simples, mais fournit des réponses prévisibles à une latence de quelques millisecondes aux requêtes simples. Vous pouvez envisager l'infrastructure Exadata pour des besoins plus sécurisés, de hautes performances et d'isolation.
Remarques concernant le stockage
Les données sont disponibles dans de nombreux formats, tailles et fréquences d'accès, mais elles nécessitent toujours de l'espace pour le stockage. Il existe des options de banque d'objets, de banque de blocs et de banque de fichiers pour stocker des données, mais chacune a un objectif spécifique. OCI Object Storage est conçu pour que tout type de contenu soit stocké en tant que stockage standard, peu fréquent et d'archivage. OCI File Storage est conçu pour fournir un système de fichiers traditionnel qui peut être monté en tant que stockage réseau ou NFS. OCI Block Volume est destiné à être attaché à une instance et peut être utilisé en tant que volume d'initialisation et volume de blocs.
Référence des performances
Cette approche est utilisée pour déterminer le niveau de référence des performances d'une application à exécuter dans le cloud 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 atteindre le niveau de performance souhaité.
Charge et test de charge
Les tests de charge simulent des charges utilisateur quasi réelles pour mesurer les performances de la réponse de l'application à l'augmentation du trafic. Cela permet de vérifier si un système peut gérer les charges utilisateur attendues sans détériorer les performances ou s'arrête brutalement. Il valide également l'évolutivité d'un système par rapport à la charge variable dans l'application. Cela permet d'identifier les goulets 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 pousse les limites du système à identifier les faiblesses de l'architecture ou de la capacité du système, ce qui aide à optimiser l'évolutivité et la résilience du système.
Identifier les embouts
Dans les applications cloud, il est essentiel de garantir l'évolutivité et les performances d'une application pour identifier les goulets d'étranglement et gérer la dégradation des performances en cascade. Identifiez les points dans le système où le flux de données ou le traitement est limité ou ralenti, ce qui réduit les performances et peut entraîner une défaillance du système par rapport à la capacité souhaitée. Les goulets d'étranglement peuvent se produire dans divers domaines, notamment le réseau, le stockage, le traitement et l'accès à la base de données.
Approche basée sur les données
Utilisez des outils de surveillance et des analyses de données pour collecter et analyser les données à des fins de performances du système, de modèles d'utilisation et de comportement des utilisateurs afin d'implémenter une approche logique, ainsi que des informations sur les données afin d'optimiser les performances, la capacité et l'évolutivité du système. Cela conduit à une meilleure expérience utilisateur et à une valeur commerciale accrue. Voici quelques étapes clés pour implémenter une approche basée sur les données :
- Collecter et analyser les données.
- Identifier des modèles et des tendances.
- Optimisez la capacité du système en fonction des informations.
- Contrôlez et ajustez en permanence les performances du système.
Surveillance de l'état
La surveillance de l'état des applications pour les applications cloud est cruciale pour garantir l'évolutivité et les performances souhaitées. Une application saine fonctionne efficacement et répond aux demandes des utilisateurs. Une application en mauvais état rencontre des problèmes, tels qu'un temps de réponse lent, un taux d'erreur élevé et des pannes. La surveillance et l'action sur l'état des applications peuvent entraîner une détection précoce des problèmes, optimiser les performances, améliorer l'expérience utilisateur et réduire les coûts. OCI Monitoring surveille activement et passivement les ressources cloud à l'aide de la fonctionnalité de mesures et d'alarme pour collecter et agir sur les configurations.
Résolution des problèmes de performance
Les problèmes de performances nécessitent différentes approches de dépannage dans les environnements cloud. Vos niveaux d'accès dans le cloud peuvent être différents de ceux de votre système local ou de votre infrastructure on-premise. Les étapes permettant de résoudre les problèmes de performances dans le cloud sont les suivantes :
- Définissez le problème.
- Collectez les données.
- Analysez les données.
- Identifier les causes du problème.
- Tester et isoler.
- Résolvez le problème.
- Surveiller et valider.
Envisagez de passer en revue les étapes de dépannage courantes fournies avec chaque service OCI.
Identifier les limites de service
Il est important de tenir compte des limites de service cloud individuelles afin de rendre votre système hautement évolutif et d'atteindre une capacité maximale. En connaissant les limites de performances, vous pouvez concevoir votre système pour qu'il fonctionne dans les limites et éviter les goulets d'étranglement ou les interruptions de service. Par exemple, une instance de calcul OCI avec une machine virtuelle ou Bare Metal a toujours des limites connues et des problèmes à prendre en compte. Vous pouvez utiliser l'équilibreur de charge OCI pour augmenter les performances en déployant une capacité supplémentaire derrière l'équilibreur de charge.
SLA de service indépendant
La conception d'un système hautes performances et évolutif nécessite un examen approfondi de chaque contrat de niveau de service de service cloud afin de réduire les temps d'arrêt, même en cas de sinistre. Chaque service dans le cloud a un contrat de niveau de service et des objectifs de niveau de service bien définis. Vous devrez peut-être envisager la redondance dans le système pour répondre à la disponibilité de services ou de services individuels avec le moins de temps de contrat de niveau de service. OCI a défini l'Objectif de Niveau de Service pour les Services PaaS et SaaS Public Cloud à prendre en compte dans votre conception et votre architecture.
Notes sur la version
OCI met constamment à jour ses services avec de nouvelles fonctionnalités, fonctionnalités et correctifs. Se tenir au courant des dernières modifications peut vous aider à améliorer vos applications et à implémenter de nouvelles fonctionnalités. Les mises à jour contiennent également des correctifs de bugs et des mises à jour de sécurité, des interruptions de service et des temps d'arrêt, des modifications de la tarification et des plans de service, des modifications de la conformité et des réglementations. Les notes sur la version OCI fournissent une vue consolidée pour que les services cloud restent à jour sur les annonces et les modifications.
Analyse des coûts par rapport à la capacité
Pour l'évolutivité, il est important de prendre en compte vos exigences en matière de taille et de forme, et d'ajouter un capuchon supplémentaire. Il est également important de considérer le service cloud adapté à vos besoins plutôt que de simplement choisir des services coûteux sans raisons justifiant le coût. Évitez d'utiliser des services inutiles et d'ajouter des couches à votre système pour réduire les coûts et la latence. Une analyse approfondie des coûts, des fonctionnalités et de la disponibilité des services cloud est essentielle pour concevoir un système hautement rentable.