Ce texte a été traduit en utilisant le système de traduction automatisé de Salesforce. Répondez à notre sondage pour nous faire part de vos commentaires sur ce contenu et nous dire ce que vous aimeriez voir ensuite.

Découvrez ici nos planifications de mise à jour.

Des solutions fiables fonctionnent efficacement et de façon fiable. Ils sont disponibles, performants et adaptables pour soutenir les entreprises en croissance.

Un système fiable n'est pas source d'erreurs, se comporte comme prévu et produit des résultats en temps opportun. Inversement, un système peu fiable est lent, ne se comporte pas comme prévu ou échoue à des moments critiques. Les systèmes peu fiables fournissent des informations imprécises, les parties prenantes ne peuvent donc pas leur Trust pour les décisions métiers.

La fiabilité du système n'est pas constante. Un système fiable aujourd'hui peut devenir peu fiable s'il n'est pas conçu pour la croissance. Un système non fiable peut nécessiter une maintenance, une refactorisation ou une remise en œuvre coûteuses, ce qui détourne des fonds de projets stratégiques.

Augmentez la fiabilité de vos solutions Salesforce en vous concentrant sur trois principes : la disponibilité, les performances et l'évolutivité. La suite de produits évolutive de Salesforce offre des capacités natives qui aident les architectes à mettre en œuvre des implémentations fiables.

La disponibilité est une mesure du pourcentage de temps pendant lequel votre système est opérationnel. Salesforce Platform gère la plupart des problèmes de disponibilité au niveau infrastructurel. Cependant, la disponibilité des solutions que vous élaborez sur la plate-forme, et qui sont expérimentées par vos clients, est une responsabilité partagée. Il est important de comprendre que même avec la haute disponibilité de Salesforce, le risque d'interruption du service n'est jamais nul.

Les architectes doivent se préparer aux interruptions du service Salesforce, par exemple une maintenance planifiée ou des circonstances imprévues. En plus des interruptions de service, déterminez comment maintenir des performances élevées et développer votre activité. Des choix architecturaux étroits peuvent entraîner des problèmes de disponibilité à long terme.

Pensez à la disponibilité pendant la phase de conception, avant l'élaboration de votre solution. Plus vous reportez l'architecture pour la disponibilité, plus le coût réel des problèmes de disponibilité sera élevé à long terme. Pour limiter les risques potentiels, utilisez Test de l'évolutivité Salesforce dans votre environnement de test. Dans cet environnement, vous pouvez tester à l'échelle de la production avant de déployer un code en production.

Les architectes utilisent le langage de l'entreprise, en encadrant les préoccupations techniques des parties prenantes de l'entreprise pour obtenir l'adhésion et prioriser le travail de disponibilité.Pour limiter les risques potentiels, utilisez Test de l'évolutivité Salesforce dans votre environnement de test. Dans cet environnement, vous pouvez tester à l'échelle de la production avant de déployer un code en production.

Vous pouvez concevoir une disponibilité accrue de vos solutions Salesforce grâce à la gestion des risques et à la réduction des pannes.

La gestion des risques dans le contexte de l'architecture Salesforce implique d'identifier les dangers potentiels pour le fonctionnement de votre système, ses utilisateurs, y compris les employés, les partenaires et les clients, et vos processus métiers. Souvent, le processus officiel d'analyse des risques relève des responsabilités des gestionnaires de projet. En tant qu'architecte, assurez-vous que l'analyse des risques représente adéquatement les préoccupations des parties prenantes techniques et commerciales. Il est également de votre responsabilité d'identifier les cas d'utilisation critiques pour l'entreprise que vous devez tester à l'échelle en fonction de vos points chauds de production.

Certains des plus grands écueils de la gestion des risques viennent du fait que l'on n'y consacre pas suffisamment de temps et de réflexion. Les équipes ignorent souvent l'évaluation des risques ou confondent la résolution pour la sauvegarde et la restauration, une partie importante de l'atténuation des risques pour l'intégrité des données, avec une évaluation et une atténuation complètes des risques.

Pour évaluer les risques pour vos solutions Salesforce, utilisez les méthodes suivantes :

  • Utiliser un cadre d'évaluation des risques. Certaines grandes entreprises ont peut-être déjà mis en place des matrices de risque pertinentes. Le cas échéant, utilisez-les pour déterminer comment classer les dangers, les types d'information à recueillir, les mesures à prendre pour y remédier, et davantage. Si vous n'avez pas encore de cadre d'évaluation des risques, recherchez-en un auprès d'une source fiable et utilisez-le.
  • Évaluez la gravité de l'impact et les catégories de risque du point de vue de vos clients. Proactive Monitoring et Scale Center fournissent des alertes et des tableaux de bord configurables. Ils évaluent en permanence les risques de performance et d'évolutivité, et réduisent votre dépendance aux listes de contrôle manuelles. Customer Trust et la perception sont essentiels à chaque entreprise. En termes d'impact commercial, les risques pour les problèmes qui touchent les clients l'emportent généralement sur les risques pour les problèmes qui ne touchent pas. Les clients peuvent ne pas penser ou percevoir les risques de la même façon que les équipes internes. Si un client ne peut pas se connecter à son compte, il ne se soucie probablement pas de l'origine du problème. Ils se soucient surtout de leur propre expérience immédiate.
  • Priorité à vos risques. Idéalement, chaque risque est lié à un solide plan d'atténuation et d'intervention. En réalité, vous aurez des écarts que vous devrez combler au fil du temps. Il est important d'adopter une approche « offrir la valeur tôt et itérer ». Vous et vos équipes de livraison et de maintenance ne pouvez prendre en charge qu'un volume de travail important à la fois. Chez Salesforce, une expression courante est « Si tout est important, rien n'est important ». Nous utilisons les V2MOM pour prioriser et aligner le travail dans toute l'entreprise, entre les équipes et jusqu'à chaque individu. (Vous pouvez en savoir plus sur les V2MOM sur Trailhead.) Utilisez vos évaluations des risques, qui permettent de travailler avec vos parties prenantes sur la définition des priorités et l'engagement à l'égard des tâches de gestion des risques les plus importantes. Utilisez Test de l'évolutivité - Création de plan de test pour identifier les risques à prioriser et les atténuer en utilisant des tests à l'échelle.

Utilisez Proactive Monitoring pour détecter les risques de disponibilité anticipée. Il expose des anomalies telles que des pics de limitation des requêtes d'API, des erreurs de verrouillage de ligne ou des échecs Apex simultanés, fournissant des connaissances actionnables avant que les problèmes ne dégénèrent en interruptions de service.

Les modèles et anti-modèles de disponibilité montrent une gestion des risques correcte et médiocre dans une solution Salesforce. Utilisez les modèles pour valider vos conceptions avant de les élaborer ou pour identifier des zones de refactorisation dans votre système.

Pour plus d'informations sur les outils Salesforce liés à la gestion des risques, consultez Outils Salesforce pour fiabilité.

Un point de défaillance est une vulnérabilité qui rend un système peu fiable. Une bonne atténuation des échecs ne consiste pas à identifier chaque point de défaillance potentiel. À la place, il s'agit de classer et de prioriser rapidement les points de défaillance afin de permettre aux équipes de maintenance et de support d'intervenir efficacement. Consultez Réaction à l'incident.

Pour développer de meilleures stratégies d'atténuation des échecs :

  • Classez les déclencheurs de points de défaillance en termes de personnes, de processus et de technologie. De la même façon que vous catégorisez les risques en termes de personnes, de processus et de technologie, appliquez la même réflexion au déclenchement des points de défaillance prioritaires. Cette approche vous aide à identifier les déclencheurs d'échec potentiels et à développer et organiser des réponses à ces derniers. Parfois, vous pouvez atténuer les déclencheurs de défaillance apparemment divergents avec des approches d'atténuation similaires, basées sur la classification des déclencheurs.
Classement/Type de déclencheur Mitigation
Personnes Police
Processus Playbooks, plans de continuité
Technologie Redondance
  • Identifiez à quoi ressemble l'atténuation de base, intermédiaire et mature. Il faudra du temps pour élaborer des stratégies d'atténuation. Définissez les niveaux d'atténuation pour vous aider, vous et votre équipe, à déterminer où vous pouvez mettre immédiatement en place des contrôles et comment concentrer vos efforts sur le temps. Recherchez toujours des opportunités d'utilisation de l'automatisation dans vos approches d'atténuation, dès que possible. Pour illustrer cette approche dans la pratique, cet exemple montre un déclencheur axé sur les personnes et à quoi ressemble l'atténuation basée sur les politiques aux niveaux de base, intermédiaire et mature.
Déclencheur Mitigation Base Intermédiaire Mature
Modification de l’accès utilisateur pour un nouvel employé ou un employé qui quitte Accord de niveau de service (SLA) et exigences relatives au provisionnement ou au déprovisionnement des utilisateurs Provisionnez et déprovisionnez manuellement les utilisateurs, conformément aux accords de niveau de service pour les modifications manuelles. Traitez les modifications des utilisateurs à travers les tâches planifiées, conformément aux accords de niveau de service pour les modifications planifiées. Automatisez le provisionnement et le déprovisionnement des utilisateurs via une solution SSO/IDM.

Outre l'utilisation de livres-jeux architecturaux et la planification de la continuité, utilisez Proactive Monitoring. Avec Proactive Monitoring, vous pouvez configurer des alertes en temps réel sur des déclencheurs d'échec, tels que des échecs de connexion, des exceptions d'expiration du processeur ou des erreurs de requête d'API concurrentes. Cette approche d'alerte augmente l'atténuation des défaillances en s'assurant que les parties prenantes techniques et commerciales sont informées à temps pour réduire l'impact des défaillances.

Les modèles et anti-modèles de disponibilité montrent à quoi ressemble une atténuation correcte et médiocre des défaillances dans une solution Salesforce. Utilisez-les pour valider vos conceptions avant de les élaborer ou pour identifier les emplacements de votre système à refactoriser.

Pour plus d'informations sur les outils Salesforce d'atténuation des défaillances, consultez Outils pertinents pour Fiable.

Le tableau ci-dessous présente une sélection de modèles à rechercher ou à élaborer dans votre organisation, ainsi que des anti-modèles à éviter ou à cibler.

✨ Découvrez d'autres modèles de disponibilité dans l'Explorateur de modèle et anti-modèle.

Modèles Anti-Patterns
Gestion des risques Dans votre entreprise :
- Un cadre d'évaluation des risques établi est utilisé.
- Les risques sont classés dans les domaines des personnes, des processus et de la technologie.
Dans votre entreprise :
- Le cadre d'évaluation des risques de Salesforce est ad hoc.
- Les risques ne sont pas clairement identifiés.
Dans votre documentation :
- La sévérité du risque est catégorisée et évaluée en fonction de l'impact client.
- Les plans d'atténuation des risques et d'intervention sont prioritaires.
Dans votre documentation :
- Le point de vue du client n'est pas pris en compte lors de l'évaluation de la sévérité ou de la catégorie de risque.
- Les plans d'atténuation des risques et d'intervention tentent de capturer tous les risques imaginables.
Atténuation des échecs Dans votre organisation :
- Les déclencheurs de point de défaillance et leurs plans d'atténuation correspondants sont classés par personnes, processus et technologie.
- Les contrôles d'atténuation sont mis en place immédiatement, matures au fil du temps et intègrent l'automatisation le plus tôt possible.
- Pour garantir une évolutivité optimale, des tests complets et une optimisation sont effectués avant la publication des modifications en production.
- Avant les événements critiques pour l'entreprise, des tests d'échelle et l'optimisation sont effectués, conformément aux accords de niveau de service.
Dans votre organisation :
- Les déclencheurs de point d'échec ne sont pas classés. Les approches d'atténuation n'existent pas ou ne sont utilisées que de façon ponctuelle.
- Les contrôles d'atténuation ne sont pas revisités ni améliorés.
- L'automatisation n'est pas utilisée dans l'atténuation.
Surveillance et observation Dans votre organisation :
- Pour les contrôles et la détection des anomalies, Proactive Monitoring est activé.
- Pour une visibilité permanente, les alertes Proactive Monitoring sont intégrées à Scale Center.
Dans votre organisation :
- Seuls des contrôles d'état de santé manuels sont effectués, et aucune surveillance continue n'est en place.

Les performances de l'architecture système sont une mesure du volume traité par un système (débit) et de la vitesse à laquelle il répond (latence). Généralement, vous comprenez les performances de votre système à travers des tests et une surveillance en production.

Un système performant termine les processus en temps opportun à chaque niveau de demande prévu.

Les performances médiocres vont de pair avec une latence plus élevée et un débit plus faible, ce qui entraîne une baisse de productivité et une augmentation de la frustration des utilisateurs. Corriger les problèmes de performance est urgent, car ils peuvent entraîner une perte de Trust client et des pertes financières.

Vous pouvez améliorer les performances de vos solutions en optimisant le débit et la latence.

Remarque : L'optimisation du débit et de la latence sont des aspects essentiels de l'amélioration du traitement et de la réactivité du système. Il est toutefois important de se rappeler que les performances globales du système dépendent également de la qualité de votre conception à l'échelle. Vous devez tenir compte des deux dimensions dans vos conceptions.

Dans le contexte de l'architecture Salesforce, le débit correspond au nombre de requêtes simultanées qu'un système peut effectuer pendant une période donnée. Les solutions Salesforce des clients, conçues et optimisées pour le débit, fonctionnent mieux dans les limites du gouverneur intégré de Salesforce Platform.

L'optimisation du débit dans Salesforce commence par calculer avec précision les charges de travail dans votre système et planifier leur croissance. Sans projections précises des exigences qui seront imposées au système, vous ne pouvez pas identifier les problèmes potentiels avec les capacités de débit de votre système.

Lors de la réflexion sur les charges de travail, tenez compte des trois dimensions ci-dessous.

  • Le nombre de transactions que votre système doit traiter pendant une période donnée
  • Le nombre d'utilisateurs qui doivent accéder simultanément à votre système
  • La complexité générale de la logique transactionnelle dans le système

Lorsqu'on pense aux performances, les équipes se concentrent parfois trop étroitement sur le calcul et les contraintes de temps processeur maximal, qui font partie des limites du gouverneur de la plate-forme. Les équipes qui se concentrent sur le temps processeur négligent les autres méthodes d'optimisation du débit. En élargissant votre attention et en appliquant ces méthodes, vous augmentez le débit global et l'efficacité de votre architecture Salesforce. Ces améliorations contribueront à réduire la latence et à améliorer les performances globales du système. ApexGuru détecte proactivement les anti-modèles qui limitent le débit, tels que SOQL dans les boucles, DML dans les boucles, les appels GGD inefficaces et les méthodes coûteuses. Ces connaissances aident les équipes à éliminer les risques de limitation du gouverneur qui limitent le débit.

Pour optimiser le débit dans votre système :

  • Favorisez le traitement asynchrone. Salesforce Platform utilise des contextes de transaction pour contrôler l'intégrité des données et limiter l'emballement du code. Consultez Transactions dans Bases de l'architecture dans Bases de l'architecture. Pour cette raison, l'utilisation du traitement asynchrone (asynchrone) dans la mesure du possible peut aider à réduire les goulets d'étranglement potentiels dans les contextes d'exécution synchrone. Consultez traitement des données. L'utilisation du calcul asynchrone n'est pas un remède à tous les problèmes de performance, et vous devez prendre en compte la latence lors de l'incorporation de processus asynchrones. Certaines capacités de la plate-forme, comme Apex pouvant être mis en file d'attente, peuvent augmenter la latence lors des pics de trafic, car elles entraînent une attente plus longue des messages dans une file d'attente. Selon votre cas d'utilisation, vous pouvez tolérer une diminution potentielle de la réactivité pour maintenir ou améliorer le débit. Dans d'autres cas, vous pouvez décider que l'augmentation de la latence n'est pas acceptable. Avec le Test de l'évolutivité, vous pouvez valider ces compromis en simulant des pics de trafic dans une organisation Sandbox Full Vous pouvez mesurer l'impact des tâches sur le débit et la latence.
  • Toujours utiliser le vrac. À un niveau élevé, le traitement en masse consiste à effectuer des opérations de collecte. Souvent, les équipes qui discutent de la rationalisation en masse de leurs solutions Salesforce se concentrent sur la rationalisation des opérations de collecte de données. Consultez Logique opérationnelle. Cependant, le traitement en masse au niveau du système implique plus que de simples opérations de données. Considérez également certaines tâches, telles que les appels externes ou les calculs complexes, comme des candidats pour la tâche de traitement en masse. Un bon traitement en masse réduit les frais généraux. Il exécute plusieurs opérations avec une seule requête au lieu d'une requête par opération. ApexGuru expose des modèles anti-bulkification tels que DML ou SOQL à l'intérieur de boucles, que vous pouvez corriger avant l'échelle en production. Consultez Opérations en masse.
  • Utilisez SOSL pour les recherches et traitez SOQL comme une opération de données. Il peut sembler évident que l'utilisation d'instructions SOQL trop complexes augmentera le temps nécessaire au système pour récupérer les enregistrements. SOQL ajoute des frais généraux à la base de données relationnelle sous-jacente, ce qui ralentit le traitement. Lors de l'utilisation de critères de texte ou génériques, SOSL est plus performant. SOSL utilise le moteur de recherche de la plate-forme, qui est optimisé pour l'indexation en texte intégral et les recherches universelles. Pour optimiser les modèles de récupération d'enregistrements, assurez-vous que vos normes de conception spécifient quand utiliser SOSL pour rechercher des données dans votre système. Assurez-vous également de spécifier comment utiliser SOQL pour des opérations de données efficaces. Consultez Logique opérationnelle).
  • Utilisez Cache de la plate-forme et ApexGuru. La couche Lightning Platform Cache accélère les performances et augmente la fiabilité lors de la mise en cache des données de session et d'organisation Salesforce. Le cache de la plate-forme améliore les performances en distribuant l'espace cache afin d'éviter que certaines applications ou opérations ne volent la capacité d'autres. ApexGuru détecte les opportunités manquées pour mettre en cache les requêtes répétées (par exemple, Cache de plate-forme pour les résultats SOQL), ce qui améliore le débit dans les environnements à grande échelle.

Les modèles et anti-modèles de performance montrent à quoi ressemblent un débit correct et faible dans une organisation Salesforce. Utilisez-les pour valider vos conceptions avant de les élaborer ou pour identifier des opportunités d'optimisation.

Pour plus d'informations sur les outils Salesforce d'optimisation du débit, consultez Salesforce Tools For Reliability (Outils Salesforce pour la fiabilité).

La latence est une mesure de la vitesse à laquelle un système termine un parcours d'exécution. L'optimisation du débit de votre système contribuera à améliorer la latence. Une autre dimension de la latence est la performance perçue, ou la réactivité du système pour les utilisateurs.

Les gens ne veulent pas attendre le chargement des pages ou la fin des processus. Les utilisateurs de votre système seront frustrés s'ils rencontrent souvent de longs temps de chargement en essayant de parcourir des vues de liste, des pages d'enregistrement, des rapports, etc. Dans ce cas, les clients ou partenaires peuvent décider de transférer leur activité ailleurs plutôt que de traiter avec des systèmes peu performants. À l’interne, les employés peuvent créer des contournements afin d’éviter d’utiliser le système tel que conçu, ce qui peut entraîner des problèmes en aval pour la sécurité et l’intégrité des données.

Les performances perçues peuvent être difficiles à diagnostiquer. Lorsqu'un utilisateur signale des performances lentes, les équipes de support risquent de ne pas pouvoir reproduire le problème. L'augmentation de la latence est souvent le résultat d'une combinaison de petits problèmes qui s'accumulent mutuellement, ce qui peut rendre difficile le diagnostic de la cause exacte des problèmes de performance perçus.

Pour réduire la latence et améliorer la réactivité dans votre système Salesforce :

  • Optimisez les rapports. Assurez-vous que chaque rapport sert un seul objectif spécifique. Identifiez clairement l'audience et l'objet de chaque rapport dans votre système. Dans les rapports, incluez uniquement le volume minimal de données dont les membres de l'audience ont besoin pour prendre des décisions. Le retrait des colonnes qui ne correspondent pas à l'objet d'un rapport améliore les performances du rapport en réduisant la quantité de données à récupérer et à afficher.
  • Optimisez les filtres. Des filtres efficaces accélèrent les performances des rapports et des vues de liste en limitant avec précision le nombre de lignes récupérées dans la base de données. En règle générale, plus votre logique de filtrage est spécifique, plus la requête de données sous-jacente est efficace. Les méthodes d'optimisation des filtres comprennent :
    • Utiliser « égal à » et « différent de » au lieu de « contient » et « ne contient pas »
    • Éviter le filtrage par champs de formule
  • Simplifiez votre modèle de partage. Un modèle de partage trop complexe peut ralentir divers processus, car le système doit vérifier le modèle de partage et de visibilité afin de déterminer si un utilisateur a accès aux données à afficher ou à traiter. Les calculs de partage complexes peuvent augmenter la latence dans les rapports, les vues de liste et l'automatisation exécutée dans le contexte de l'utilisateur. Consultez Partage et visibilité.
  • Optimisez les composants personnalisés de l'interface utilisateur. Les composants Interface utilisateur (UI) personnalisés peuvent augmenter la latence. Pour optimiser les performances des composants d'interface utilisateur personnalisés, procédez comme suit.
    • Utiliser des composants Web Lightning (LWC). L'infrastructure LWC est étroitement alignée sur les normes Web modernes. Les composants personnalisés écrits en LWC sont restitués plus efficacement dans les navigateurs Web et permettent aux développeurs d'utiliser des méthodes JavaScript plus performantes. Visez toujours à utiliser LWC au lieu des anciennes technologies d'interface utilisateur, telles que Aura ou Visualforce.
    • Utilisez Lightning Data Service. Lightning Data Service gère la création et la maintenance d'une mise en cache sécurisée, performante et partagée entre les composants. Utilisez-le pour éviter les allers-retours inutiles vers le serveur pour les données, et pour augmenter la réactivité générale des applications.
    • Utilisez le tri et le filtrage côté client pour les données de liste. Pour les composants LWC (préféré) et Aura (autrement), les développeurs peuvent utiliser la fonctionnalité de tableau JavaScript standard pour trier, filtrer et sélectionner des valeurs côté client, ce qui réduit le nombre de déplacements requis vers le serveur.

Les modèles et anti-modèles montrent la latence correcte et médiocre dans une organisation Salesforce. Utilisez-les pour valider vos conceptions avant de les élaborer ou pour identifier des opportunités d'optimisation.

Pour plus d'informations sur les outils Salesforce pour l'optimisation de la latence, consultez Salesforce Tools For Reliability.

Le tableau ci-dessous présente une sélection de modèles à rechercher ou à élaborer dans votre organisation, ainsi que des anti-modèles à éviter ou à cibler.

✨ Découvrez d'autres modèles de performance dans l'Explorateur de modèle et anti-modèle.

Modèles Anti-Patterns
Débit Dans vos normes de conception :
- Le guide d'utilisation du cache de la plate-forme respecte les meilleures pratiques
Dans vos normes de conception :
- S'il existe un guide pour l'utilisation du cache de la plate-forme, il n'est pas clair ou n'est pas conforme aux meilleures pratiques.
Dans votre organisation :
- Le traitement en masse est utilisé pour les opérations sur les données et le système.
- Les méthodes DML ou de base de données fonctionnent toujours contre les collections dans Apex .
- Les champs utilisés pendant le DML pour un elapsedTime plus court dans la base de données sont limités.
- Tous les critères génériques sont utilisés en SOSL.
- Les instructions SOQL sont sélectives. :
-- Ils n'utilisent pas de comparaisons LIKE ou de comparaisons de texte partiel.
-- Les opérateurs de comparaison utilisent une logique positive (en d'autres termes, INCLUDES ou IN) comme logique principale ou uniquement logique.
-- = NULL et != NULL ne sont utilisés que rarement suit toujours un opérateur de comparaison positif.
– Pour minimiser le chargement des données et optimiser les performances, seuls les champs nécessaires dans les requêtes SOQL sont récupérés.
-- Aucune instruction LIMIT 1 n'est utilisée.
-- Le mot-clé ALL ROWS n'est pas utilisé.
- Le traitement asynchrone est privilégié dans la mesure du possible.
- Les partitions Cache de la plate-forme sont configurées.
Dans votre organisation :
- Les instructions DML ne sont pas traitées en masse.
- Les méthodes DML ou de base de données fonctionnent dans Apex contre des enregistrements uniques.
- SOSL est rarement ou pas systématiquement utilisé pour les critères de sélection de caractères génériques.
- Les instructions SOQL ne sont pas sélectives :
-- Ils incluent des critères de filtrage LIKE et générique.
-- Les comparaisons utilisant des critères !=, NOT ou NOT IN sont utilisées en tant qu'opérateur de comparaison principal ou unique.
-- Utilise = NULL et != critères NULL comme opérateurs principaux ou seulement de comparaison.
-- Les instructions LIMIT 1 sont utilisées.
-- Le mot-clé ALL ROWS est utilisé.
- SOQL est affiché dans les boucles.
- Les processus synchrones sont favorisés.
Latence Dans votre organisation :
- Les rapports servent un seul objectif spécifique et contiennent le nombre minimal de lignes et de colonnes nécessaires pour prendre des décisions.
- Les filtres utilisent « égal à » et « différent de ».
- Les filtres ne contiennent pas de champs de formule.
- Les modèles de partage sont simplifiés au maximum.
- Les composants d'interface utilisateur personnalisés utilisent des Composants Web Lightning (LWC).
- LWC utilise Lightning Data Service pour les opérations sur les données.
- Le tri et le filtrage des données de liste sont gérés côté client en JavaScript.
- Salesforce Edge est activé.
Dans votre organisation :
- Les rapports servent à plusieurs fins ou contiennent des lignes et des colonnes supplémentaires qui ne sont pas nécessaires pour prendre des décisions.
- Les filtres utilisent « contient » et « ne contient pas ».
- Les filtres contiennent des champs de formule.
- Les modèles de partage sont complexes.
- Les composants d'interface utilisateur personnalisés utilisent des frameworks qui peuvent entraîner un rendu moins efficace que LWC (par exemple Aura ou Visualforce).
- LWC utilise Apex pour les opérations de données.
- Les données des listes de tri et de filtrage sont gérées côté serveur en utilisant Apex.
- Salesforce Edge n'est pas activé.

L'évolutivité est la capacité d'un système à fonctionner de façon cohérente à mesure qu'il évolue et se développe. Un système évolutif gère les augmentations importantes des volumes de transactions ou l'accès simultané sans modification fondamentale. Les services de plate-forme de Salesforce sont conçus pour prendre en charge l'évolutivité des applications. Consultez Traitement interne de la plate-forme. Cela dit, à mesure que votre organisation se développe et que la demande pour vos produits et services augmente, vous êtes responsable de la création d'un système efficace et conforme aux attentes. L'architecture évolutive dès le départ accélère la livraison de nouvelles fonctionnalités et réduit les interruptions de service à mesure que le trafic utilisateur augmente. Au début de la phase de conception, avant de déployer de nouvelles fonctionnalités en production, utilisez Test de l'évolutivité pour simuler les charges de travail projetées et vérifier que l'architecture peut les adapter.

Les systèmes non conçus pour l'évolutivité nécessitent un dépannage, une refonte et une refactorisation constants et coûteux. Les problèmes d'évolutivité s'aggravent au fil du temps et dégradent les performances dans l'ensemble du système. Dans certains cas, les entreprises dépensent la majorité des ressources de développement et de maintenance pour résoudre les problèmes d'évolutivité plutôt que pour de nouvelles fonctionnalités qui créent de la valeur.

Parfois, une entreprise atteint un point de bascule critique. La conception originale de son système ne peut pas soutenir la croissance de l'entreprise, et des événements inattendus rendent le système instable. Utilisez les connaissances du Scale Center pour identifier rapidement les points de basculement de l'évolutivité. Le Centre d'échelle expose les points chauds d'exception, les transactions de longue durée et les goulets d'étranglement dans les files d'attente qui s'aggravent au fil du temps.

Vous pouvez améliorer l'architecture d'échelle en vous concentrant sur l'optimisation du modèle de données et la gestion du volume de données.

Note : Bien que cela ne soit pas abordé ici, le test de l'évolutivité est une partie essentielle de la validation de vos architectures d'application. Pour plus d'informations, consultez Stratégie de test.

La modélisation des données consiste à structurer les objets de votre organisation et à les associer les uns aux autres afin de permettre à vos utilisateurs et à vos processus automatisés de récupérer les données dont ils ont besoin le plus rapidement possible. Prendre des mesures pour améliorer le débit résout de nombreux problèmes de performance, mais vos efforts ne seront pas aussi efficaces sans un modèle de données optimisé.

Les impacts négatifs d'un modèle de données mal conçu ne sont pas immédiatement visibles. Ses faiblesses sont exposées à mesure que le système se développe en termes de volume de données, de processus, d'utilisateurs et d'intégrations. Un modèle de données bien conçu facilite la refactorisation continue de votre application à mesure que les exigences sont ajoutées et étendues. ApexGuru expose des anti-modèles d'accès aux données tels que SOQL non sélectif, champs inutilisés et inefficacités de schéma qui impactent directement l'évolutivité du modèle de données.

Pour optimiser votre modèle de données :

  • Utilisez les modèles de données prédéfinis de Salesforce. Salesforce fournit des modèles de données prédéfinis pour Sales, Service et divers secteurs d'activité. L'utilisation des modèles de données fournis par Salesforce garantit que les capacités de votre système sont définies une seule fois, éliminant ainsi la redondance et les silos, et établissant une source de vérité unique dans l'ensemble du système. Comme vous avez utilisé des modèles de données prédéfinis Salesforce pour cette source unique, il est plus facile de comprendre les données d'application avec des analytiques et d'utiliser les services d'intelligence artificielle prédéfinis de Salesforce. De plus, la réduction des personnalisations que vous devez prendre en charge réduit les coûts de maintenance et réduit la dette technique.
  • Choisissez les types de données appropriés. Comprenez les différents types de champ pris en charge par Salesforce et leurs limitations. Tenez compte des exigences de génération de rapports et de cryptage afin d'éviter d'avoir à convertir des données entre les types à l'avenir.
  • Choisissez les bonnes relations. Salesforce prend en charge deux types de relation entre les objets : principal-détails et référence. Les relations principal-détails offrent deux avantages principaux. L'un d'eux est les capacités récapitulatives de cumul intégrées, qui comptent et agrègent les détails des enregistrements enfants. L'autre est une capacité de suppression en cascade intégrée, par laquelle la suppression d'un enregistrement parent supprime également ses enregistrements enfants. Assurez-vous toutefois de bien comprendre les conséquences de partage et d'asymétrie des données des relations principal-détails avant de décider de les utiliser.
  • Dénormalisez pour l'échelle. La normalisation est le processus de structuration de votre modèle de données pour réduire la redondance des données et améliorer l'intégrité des données. Malheureusement, la normalisation entraîne parfois des problèmes d'échelle. Les tableaux dénormalisés peuvent être plus performants à l'échelle, mais pensez à prendre en compte l'intégrité et la redondance des données.

Les modèles et anti-modèles montrent à quoi ressemble l'optimisation correcte et médiocre du modèle de données dans une organisation Salesforce. Utilisez-les pour valider vos conceptions avant de les élaborer ou pour identifier des opportunités d'optimisation.

Pour plus d'informations sur les outils Salesforce d'optimisation du modèle de données, consultez Salesforce Tools For Reliability (Outils Salesforce pour la fiabilité).

Le volume de données est une mesure de la quantité de données stockées dans votre système, basée sur le nombre et la taille des enregistrements. Si votre organisation compte des dizaines de milliers d'utilisateurs, des dizaines de millions d'enregistrements ou des centaines de gigaoctets de stockage total d'enregistrements, vous avez un volume de données important. Le volume de données et les relations entre les objets de votre organisation affectent l'évolutivité et auront probablement un impact plus important sur l'évolutivité que le nombre d'enregistrements seul.

Pour améliorer l'évolutivité des organisations qui ont des volumes de données importants :

  • Distribuez des enregistrements enfants. Évitez l'asymétrie des données parent-enfant en vous assurant qu'aucun parent n'a un grand nombre d'enregistrements enfants. La recommandation générale est qu'aucun parent ne devrait avoir plus de 10 000 enregistrements enfants. Par exemple, dans un déploiement qui contient de nombreux contacts, mais qui n'utilise pas de compte, vous pouvez configurer plusieurs enregistrements de compte et distribuer entre eux les enregistrements de contact associés.
  • Distribuez la propriété des enregistrements. Évitez l'asymétrie de propriété en vous assurant qu'aucun utilisateur ou file d'attente ne possède, ni que tous les membres d'un rôle ou d'un groupe public unique possèdent, plus de 10 000 enregistrements du même objet. Les données de « stationnement » avec un « utilisateur fictif » sont une pratique qui entraîne souvent un biais de propriété. Si vous rencontrez ce problème, tenez compte de son impact sur les calculs de partage. Si vous ne pouvez pas redistribuer les enregistrements pour éviter l'asymétrie de propriété, évitez d'attribuer l'utilisateur propriétaire des données à un rôle. Si le modèle de partage de votre organisation nécessite une attribution de rôle, placez l'utilisateur propriétaire des données dans un rôle distinct en haut de la hiérarchie de partage. N'autorisez pas les changements fréquents ou imprévus dans le rôle de cet utilisateur, car toute modification aura des impacts importants sur les performances en raison des recalculs de partage. Éloignez cet utilisateur des groupes publics qui pourraient être référencés dans des règles de partage.
  • Réduisez la quantité de données d'enregistrement dans Salesforce. Salesforce est conçu pour offrir aux entreprises une vue unique de leurs clients. Il peut sembler contre-intuitif que la limitation des données dans Salesforce soit une meilleure pratique. Cependant, la puissance de la vue unique réside dans la mesure où elle permet aux utilisateurs professionnels de comprendre et d'agir sur les données des clients. À mesure que le volume de données augmente, les données qui ne sont pas à jour ou pertinentes pour les processus quotidiens ou les analytiques entraînent plusieurs problèmes. Ces problèmes comprennent une dégradation des performances de l'application, un risque accru pour la sécurité des données et des impacts négatifs sur la recherche, les rapports et les analytiques. Pour éviter de tels problèmes, définissez un cycle de vie des données pour chaque objet de votre modèle de données, avec des chronologies et des classifications pour les données vieillissantes et perdant immédiatement de leur valeur métier. Conformément au cycle de vie des données, implémentez ces procédures pour gérer les données au fil du temps.
    • Archivage et purge des données : pour limiter au maximum les volumes de données, retirez les enregistrements dont l'entreprise n'a pas besoin pour limiter au maximum les volumes de données. Utilisez la fonction de suppression définitive de l'API de transfert en masse 2.0 pour supprimer des volumes de données importants.
    • Agrégation de données : créez des objets personnalisés d'agrégation qui résument les tendances historiques clés ou les données récapitulatives sous un format compatible avec les rapports. Remplissez les objets personnalisés en utilisant Apex par lot. Les utilisateurs peuvent ensuite exécuter des rapports basés sur les enregistrements d'objet agrégés.
    • Nivelage des données. Conservez les jeux de données volumineux dans une autre application s'ils ne sont pas nécessaires pour les rapports Salesforce ou le travail quotidien. Rendez les données disponibles dans Salesforce si nécessaire via des mashups, des renvois ou des objets externes.

En pratique, vous ne pouvez pas toujours résoudre immédiatement la cause profonde d'un problème d'évolutivité en cas de problème. Pour cette raison, Salesforce fournit des options qui aident à soulager les points douloureux immédiats. Il est important de savoir que l'activation de ces fonctionnalités dans votre organisation n'est pas une stratégie architecturale viable à long terme pour gérer des volumes de données importants. Ces solutions de contournement à court terme peuvent aider à réduire la latence dans les systèmes souffrant d'une architecture de données médiocre, mais elles peuvent également ajouter une dette technique à votre organisation.

Les contournements à court terme des problèmes d'échelle comprennent :

  • Les index personnalisés sont stockés dans un tableau interne spécial que l'optimiseur de requête de la plate-forme utilise pour accélérer les opérations d'accès aux données. Consultez Index multiples). La plate-forme indexe automatiquement certains types de champ par défaut. Pour accélérer les requêtes peu performantes, vous pouvez demander des index personnalisés supplémentaires en contactant le Support client de Salesforce. Utilisez l'outil Plan de requête pour déterminer si les index personnalisés améliorent les performances de vos requêtes.
  • Tables maigres. Si vous devez optimiser davantage les requêtes pour des ensembles de champs communs dans des objets contenant plus d'un million d'enregistrements, des tableaux fins peuvent vous aider. Les tableaux fins éliminent la jointure en arrière-plan qui se produit lors de l'utilisation de champs personnalisés et standard du même objet dans un rapport ou une automatisation. Pour pouvoir utiliser des tableaux fins, le Support client de Salesforce doit les activer pour votre organisation.

Les modèles et anti-modèles d'évolutivité montrent à quoi ressemble une gestion correcte et médiocre du volume de données dans une organisation Salesforce. Utilisez-les pour valider vos conceptions avant de les élaborer ou pour identifier des opportunités d'optimisation.

Pour plus d'informations sur les outils Salesforce de gestion des volumes de données, consultez Outils Salesforce pour fiabilité.

Il montre une sélection de modèles à rechercher ou à élaborer dans votre organisation, et des anti-modèles à éviter ou à cibler pour la correction.

✨ Découvrez d'autres modèles d'évolutivité dans l'explorateur Pattern & Anti-Pattern.

Modèles Anti-Patterns
Modélisation des données Dans vos normes de conception :
- Il existe des normes et des directives pour lesquelles des justifications métiers justifient un objet personnalisé.
Dans vos normes de conception :
- Aucune norme de création d'objets personnalisés n'existe.
Dans votre modèle de données :
- Les objets standard sont utilisés dans la mesure du possible.
- Les contrôles ApexGuru des anti-modèles confirment que les requêtes SOQL sont sélectives et évitent l'utilisation inefficace du schéma.
- Les tableaux sont dénormalisés pour l'échelle.
Dans votre modèle de données :
- Vous avez répliqué des objets standard.
- Les tableaux sont normalisés pour éviter la redondance.
Au sein de votre entreprise :
- Les générateurs de code faible comprennent les différents types de champ pris en charge par Salesforce, et évaluent les exigences de génération de rapports et de cryptage avant de sélectionner des types de données de champ.
- Avant de décider d'établir une relation principal-détails entre des objets, vous évaluez les implications de partage et d'asymétrie des données de cette relation.
Au sein de votre entreprise :
- Les générateurs à faible code sélectionnent des types de données sans évaluer les exigences de génération de rapports et de cryptage en aval.
- Avant de décider d'établir des relations principal-détails entre des objets, vous n'évaluez pas les implications de partage et d'asymétrie des données de cette relation.
Volume de données Dans vos données :
- Aucun enregistrement parent ne contient plus de 10 000 enregistrements enfants.
- Aucun utilisateur n'est attribué à plus de 10 000 enregistrements de même type d'objet.
- Aucune instance ne contient plus de 10 000 enregistrements qui ont des champs de référence pointant vers le même enregistrement.
- Les chargements de données en masse sont triés par lots en fonction des valeurs de champ ParentId.
- Pour s'assurer que les stratégies par lot ne se brisent pas en cas de concurrence, le Test de l'évolutivité est utilisé pour valider les modèles de chargement en masse à l'échelle de production.
- Les chargements de données en masse en production ne sont pas effectués pendant les heures de pointe.
- Les chargements de données en masse incluent uniquement les données minimales nécessaires pour les décisions métiers.
Dans vos données :
- Des enregistrements contenant plus de 10 000 enregistrements enfants existent.
- Les utilisateurs sont attribués à plus de 10 000 enregistrements de même type.
- Il existe des instances dans lesquelles plus de 10 000 enregistrements ont des champs de référence qui pointent vers le même enregistrement.
-Les chargements de données en masse ne sont pas triés par lots en fonction des valeurs de champ ParentId.
- Les chargements de données en masse en production ont lieu pendant les heures ouvrables de pointe.
- Les chargements de données en masse ne sont pas limités aux données minimales requises pour les décisions métiers.
Dans Flow et Apex :
- Une logique existe pour distribuer le nombre d'enregistrements enfants entre plusieurs enregistrements parents dans les scénarios où l'asymétrie des données est préoccupante.
- Lors de l'importation ou de la réplication d'enregistrements via l'intégration, la logique les attribue aux utilisateurs humains appropriés.
- Pour les collections Apex, telles que les listes et les ensembles, une logique existe pour traiter plusieurs enregistrements afin de minimiser les requêtes et d'optimiser le traitement des données.
- Un code Apex efficace qui suit les normes et les meilleures pratiques pour un code évolutif est écrit et déployé.
Dans Flow et Apex :
- Les enregistrements enfants sont attribués arbitrairement à des enregistrements parents, quel que soit le nombre d'enregistrements enfants déjà attribués.
- Les enregistrements créés via des chargements de données ou des intégrations sont attribués à un « utilisateur de l'intégration » générique.
- Plusieurs requêtes SOQL récursives à partir du même objet sont dans des transactions synchrones, ce qui entraîne une utilisation élevée de la pile.
- Lorsque les développeurs écrivent un code Apex, ils introduisent des inefficacités et des anti-modèles de performance.
Au sein de votre entreprise :
- Vous avez documenté et mis en place une stratégie d'archivage et de purge des données
Au sein de votre entreprise :
- Vous n'avez pas de stratégie d'archivage et de purge des données ou votre stratégie a été documentée, mais pas implémentée
OutilDescriptionDisponibilitéPerformancesÉvolutivité
Gros objets Stockez et gérez des volumes de données importants sur la plate-forme. X
Scanner de code Scannez le code Apex pour détecter les problèmes de performance. X
Index personnalisés Améliorez les performances des requêtes avec des index personnalisés. X
Suppression de données Supprimez les données inutiles pour améliorer les performances. X X
Divisions Partitionnez les données pour limiter le nombre d'enregistrements dans les requêtes et les rapports. X
Test à l'échelle Testez les performances du système et interprétez les résultats. Avant le déploiement en production, pour valider l'évolutivité et les performances, imitez les charges de travail d'interface utilisateur et d'API à grande échelle en utilisant des scripts Playwright ou JMeter. X X
Centre d'échelle Recueillez des connaissances en libre-service et en temps réel sur les performances du système. Recherchez les transactions à long terme, les points chauds d'exception et les blocages de débit. Diagnostiquez les problèmes d'échelle plus tôt dans votre cycle de développement. X X
ApexGuru Utilisez cette fonctionnalité basée sur GenAI dans le Centre d'échelle pour détecter Apex, SOQL et les anti-modèles de classe de test à l'exécution. Avec l'intégration d'ApexGuru à Salesforce Code Analyzer, recevez des recommandations pilotées par l'IA et des correctifs en ligne dans le workflow de développement. Utilisez ces recommandations et correctifs pour résoudre les points chauds et améliorer la sélectivité des requêtes, le traitement en masse, l'utilisation de la mémoire cache et la qualité des tests. X X
Salesforce Code Analyzer Scannez le code avec IDE, CLI ou CI/CD pour vous assurer qu'il respecte les meilleures pratiques. Avec l'intégration de Salesforce Code Analyzer à ApexGuru, recueillez des connaissances sur les anti-modèles de performance directement dans le workflow du développeur. X
Salesforce Edge Network Améliorez les temps de téléchargement et l'expérience utilisateur en acheminant votre Mon domaine via le Réseau Edge Salesforce. X
Tableaux fins Évitez les jointures dans les tableaux qui contiennent des champs fréquemment utilisés. X
Proactive Monitoring Surveillez en permanence les anomalies de croissance record, d'asymétrie de propriété et de régression des performances. Alertez sur les problèmes d'échelle avant qu'ils ne deviennent critiques. X X
RessourceDescriptionDisponibilitéPerformancesÉvolutivité
Les défis d'échelle coûtent des millions — Voici comment pérenniser votre activité Découvrez comment la mise en œuvre de l'évolutivité conduit à une croissance durable et à la réussite à long terme. X X
Élaboration et déploiement d'applications évolutives en utilisant le Centre d'échelle Comprenez comment évaluer et résoudre proactivement les problèmes de performance dans vos implémentations Salesforce.
Analyse des performances et des points chauds d'échelle dans les applications Salesforce complexes Corrigez les problèmes de performance et d'évolutivité dans votre organisation. X X
Votre application ne devrait pas paniquer dans le trafic aux heures de pointe - Voici comment vous préparer Découvrez quatre étapes clés pour réussir les tests d'échelle.
Le moteur IA ApexGuru expliqué Découvrez comment ApexGuru utilise des modèles entraînés sur mesure, la télémétrie d'organisation réelle et le filtrage intelligent pour fournir des connaissances précises, contextuelles et actionnables. X X
Optimisation de votre Apex pour les applications et Agentforce avec ApexGuru Apprenez comment ApexGuru aide les développeurs à détecter et corriger les anti-modèles de performance, notamment SOQL, DML, le débogage, et tester les inefficacités., Utilisez ApexGuru en tant que coach piloté par l'IA pour le développement évolutif de vos applications et votre implémentation d'Agentforce. X X
ApexGuru Antipatterns Découvrez la bibliothèque officielle des anti-modèles détectés par ApexGuru, qui est mise à jour pour chaque version majeure de Salesforce. X X
Meilleures pratiques pour les déploiements avec des volumes de données importants Comprenez les impacts des processus des volumes de données importants. X
Considérations relatives au Réseau Edge Salesforce Découvrez comment préparer votre organisation à utiliser le Réseau Edge Salesforce. X
Modèle Design Standards Créez des normes de conception pour votre organisation. X X X
Considérations relatives à la conception de modèles de données Optimisez les modèles de données pour l'échelle et la maintenance. X X
Conception de l'accès aux enregistrements pour Enterprise Scale Optimisez les performances du contrôle d'accès par la configuration. X
Infrastructure pour les systèmes avec des volumes de données importants Découvrez les capacités qui prennent en charge les performances système pour les déploiements avec des volumes de données importants. X
Ressources d'apprentissage pour la gestion par lot Découvrez la Gestion par lot. X X
Optimisation des performances Lightning Experience Améliorez Lightning Experience dans votre organisation pour aider vos utilisateurs à travailler plus vite. X
Gestion de l'asymétrie des références dans Salesforce pour éviter les exceptions de verrouillage d'enregistrement Comprenez comment minimiser les effets des biais de référence. X X
Meilleures pratiques SOQL et SOSL Suivez les meilleures pratiques SOQL et SOSL pour les déploiements avec des volumes de données importants. X X
Outils pour les réalignements à grande échelle Planifiez et exécutez efficacement les réalignements. X
Utilisation de Mashups Gérez des jeux de données volumineux dans une autre application. X X

Aidez-nous à garder Salesforce Well-Architected pertinent pour vous ; répondez à notre sondage pour nous faire part de vos commentaires sur ce contenu et nous dire ce que vous souhaitez voir ensuite.