Esse texto foi traduzido usando o sistema de tradução automatizado do Salesforce. Pegue nossa enquisa para fornecer feedback sobre esse conteúdo e diga-nos o que você gostaria de ver em seguida.
Leia sobre nossas agendas de atualização aqui.
Soluções confiáveis operam de modo eficaz e confiável. Eles estão disponíveis, têm um desempenho consistente e são dimensionados para dar suporte a empresas em crescimento.
Um sistema confiável não é sujeito a erros, se comporta conforme o esperado e fornece resultados em tempo hábil. Por outro lado, um sistema não confiável é lento, não se comporta como o esperado ou falha em momentos críticos. Sistemas não confiáveis fornecem informações imprecisas, portanto, as partes interessadas não podem Trust-los para decisões de negócios.
A confiabilidade do sistema não é constante. Um sistema confiável hoje pode se tornar não confiável se não for projetado para crescimento. Um sistema não confiável pode exigir manutenção, refatoramento ou reimplementação dispendiosos, desviando fundos de projetos estratégicos.
Melhore a confiabilidade das suas soluções do Salesforce focando três princípios: disponibilidade, desempenho e escalabilidade. O pacote de produtos de escalabilidade da Salesforce fornece recursos nativos para ajudar os arquitetos a operacionalizar implementações confiáveis.
Disponibilidade é uma medida do percentual de tempo pelo qual seu sistema está operacional. A Salesforce Platform lida com a maioria dos problemas de disponibilidade em nível de infraestrutura. No entanto, a disponibilidade das soluções que você cria na plataforma e que seus clientes experimentam é uma responsabilidade compartilhada. É importante entender que, mesmo com a alta disponibilidade do Salesforce, o risco de interrupção de serviço nunca é zero.
Os arquitetos devem se preparar para interrupções de serviço do Salesforce, como manutenção planejada ou circunstâncias imprevistas. Além de interrupções de serviço, considere como manter o alto desempenho e expandir com os negócios. Limitar as opções de arquitetura pode levar a problemas de disponibilidade de longo prazo.
Pense na disponibilidade durante a fase de design, antes de sua solução ser construída. Quanto mais tempo você adiar a arquitetura para disponibilidade, maior será o custo real de problemas de disponibilidade no longo prazo. Para mitigar possíveis riscos, use o Teste de escala do Salesforce em seu ambiente de teste. Nesse ambiente, você pode testar na escala de produção antes de implementar o código em produção.
Os arquitetos usam a linguagem do negócio, elaborando preocupações técnicas para que as partes interessadas do negócio ganhem buy-in e priorizem o trabalho de disponibilidade.Para mitigar possíveis riscos, use o Teste de escala do Salesforce em seu ambiente de teste. Nesse ambiente, você pode testar na escala de produção antes de implementar o código em produção.
Você pode arquitetar para a maior disponibilidade de suas soluções do Salesforce por meio do gerenciamento de risco e da mitigação de falhas.
Gerenciar riscos no contexto da arquitetura do Salesforce envolve identificar possíveis riscos à operação do seu sistema; seus usuários, incluindo funcionários, parceiros e clientes); e seus processos de negócios. Geralmente, o processo formal de realizar a análise de risco fica sob as responsabilidades dos gerentes de projeto. Como arquiteto, garanta que a análise de risco represente adequadamente as preocupações das partes interessadas técnicas e de negócios. Também é sua responsabilidade identificar os casos de uso críticos para os negócios para os quais você precisa testar a escala com base em seus hotspots de produção.
Algumas das maiores armadilhas no gerenciamento de risco vêm de não dedicar tempo suficiente e pensar nisso. As equipes frequentemente ignoram a avaliação de risco ou misturam soluções para backup e restauração, uma parte importante da mitigação dos riscos para a integridade dos dados, com avaliação e mitigação de risco abrangentes.
Para avaliar o risco para suas soluções do Salesforce, use estes métodos:
- Usar uma estrutura de avaliação de risco. Algumas grandes empresas já podem ter matrizes de risco relevantes em vigor. Se o seu tiver, use-os para determinar como classificar riscos, que tipos de informações coletar, o que você precisa implementar para a remediação e muito mais. Se você ainda não tiver uma estrutura de avaliação de risco, encontre uma de uma origem confiável e use-a.
- Avalie a gravidade do impacto e as categorias de risco da perspectiva dos seus clientes. O Proactive Monitoring and Scale Center fornece alertas e painéis configuráveis. Eles avaliam continuamente os riscos de desempenho e escalabilidade e reduzem sua dependência de listas de verificação manuais. O Customer Trust e a percepção são fundamentais para qualquer negócio. Em termos de impacto comercial, os riscos para problemas que atingem os clientes geralmente sobrepõem os riscos para problemas que não atingem. Os clientes podem não pensar ou perceber riscos da mesma maneira que as equipes internas. Se um cliente não conseguir fazer login em sua conta, ele provavelmente não se importará com a causa-raiz do problema. Eles se preocupam mais com a própria experiência imediata.
- Priorize seus riscos. O ideal é que cada risco esteja vinculado a um plano de mitigação e resposta sólido. Na realidade, você terá lacunas que precisará solucionar ao longo do tempo. Adote uma abordagem "entregar valor antecipadamente e iterar" é importante. Você e suas equipes de entrega e manutenção podem assumir apenas tanto trabalho em um determinado momento. No Salesforce, uma expressão comum é "Se tudo é importante, nada é importante". Usamos V2MOMs para priorizar e alinhar o trabalho em toda a empresa, entre equipes e até a cada indivíduo. (Você pode aprender mais sobre V2MOMs no Trailhead.) Use suas avaliações de risco, que lhe dão a oportunidade de trabalhar com suas partes interessadas para priorizar e se comprometer com o trabalho de gerenciamento de risco mais importante. Use Teste de escala – Criação de plano de teste para identificar os riscos a priorizar e mitigar esses riscos usando testes de escala.
Use o Proactive Monitoring para detectar riscos de disponibilidade precoce. Ele detecta anomalias como picos de limite de solicitação de API, erros de bloqueio de linha ou falhas do Apex simultâneas, fornecendo percepções acionáveis antes que os problemas se tornem interrupções de serviço.
Os padrões de disponibilidade mostram um gerenciamento adequado e ruim de risco em uma solução do Salesforce. Use os padrões para validar seus designs antes de criar ou para identificar áreas de refatoramento em seu sistema.
Para aprender mais sobre ferramentas do Salesforce relacionadas ao gerenciamento de risco, consulte Salesforce Tools for Reliability.
Um ponto de falha é uma vulnerabilidade que torna um sistema não confiável. Uma boa mitigação de falhas não consiste em detectar todos os possíveis pontos de falha. Em vez disso, trata-se de classificar e priorizar rapidamente pontos de falha para que as equipes de manutenção e suporte possam responder de modo eficaz. Consulte resposta de incidente.
Para desenvolver melhores estratégias de mitigação de falhas:
- Classifique acionadores para pontos de falha em termos de pessoas, processos e tecnologia. Assim como você categoriza riscos em termos de pessoas, processos e tecnologia, aplique o mesmo pensamento a como os pontos de falha de alta prioridade são acionados. Essa abordagem ajuda você a identificar possíveis acionadores de falha e a desenvolver e organizar respostas a eles. Às vezes, você pode mitigar acionadores de falha aparentemente divergentes com abordagens de mitigação semelhantes, com base em como os acionadores são classificados.
| Classificação/Tipo do acionador | Mitigação |
|---|---|
| Pessoas | Política |
| Processo | Playbooks, planos de continuidade |
| Tecnologia | Redundância |
- Identifique qual é a mitigação básica, intermediária e madura. Vai levar tempo para criar estratégias de mitigação. Defina os níveis de mitigação para ajudá-lo e sua equipe a ver onde você pode colocar controles em vigor imediatamente e como focar seus esforços ao longo do tempo. Sempre procure oportunidades para usar automação em suas abordagens de mitigação assim que possível. Para ilustrar a aparência dessa abordagem na prática, este exemplo mostra um acionador orientado para pessoas e a aparência da mitigação baseada em política nos níveis básico, intermediário e maduro.
| Acionador | Mitigação | Básico | Intermediário | Maduro |
|---|---|---|---|---|
| Alteração de acesso do usuário para um funcionário novo ou que saiu | Contrato de nível de serviço (SLA) e requisitos para provisionamento ou desprovisionamento de usuários | Provisione e desprovisione usuários manualmente, de acordo com os SLAs para alterações manuais. | Processe as alterações do usuário por meio de trabalhos agendados, de acordo com os SLAs para alterações agendadas. | Automatize o provisionamento e o desprovisionamento de usuários por meio de uma solução de SSO/IDM. |
Além de usar manuais de arquitetura e planejamento de continuidade, use o Proactive Monitoring. Com o Proactive Monitoring, você pode configurar alertas em tempo real sobre acionadores de falha, como falhas de login, exceções de tempo limite de CPU ou erros de solicitação de API simultâneos. Essa abordagem de alerta aumenta a mitigação de falhas garantindo que as partes interessadas técnicas e de negócios sejam informadas a tempo para reduzir o impacto de falhas.
Os padrões e antipadrões para disponibilidade mostram como é a mitigação de falhas adequada e ruim em uma solução do Salesforce. Use-os para validar seus designs antes de criar ou para identificar locais no sistema para o refator.
Para saber mais sobre ferramentas do Salesforce para mitigação de falhas, consulte Ferramentas relevantes para confiabilidade.
Esta tabela mostra uma seleção de padrões para procurar ou criar em sua organização e antipadrões para evitar ou direcionar para remediação.
✨ Descubra mais padrões para disponibilidade no Padrão & Anti-Padrão Explorador.
| Padrões | Antipadrões | |
|---|---|---|
| Gerenciamento de riscos | No seu negócio:
- Uma estrutura de avaliação de risco estabelecida está em uso. - Os riscos são categorizados em áreas de pessoas, processos e tecnologia. |
No seu negócio:
- A estrutura de avaliação de risco para o Salesforce é ad hoc. - Os riscos não são claramente identificados. |
| Na sua documentação:
- A gravidade do risco é categorizada e avaliada com base no impacto do cliente. - A mitigação de risco e os planos de resposta são priorizados. |
Na sua documentação:
- A perspectiva do cliente não é considerada ao avaliar a gravidade do risco ou a categoria. - Os planos de mitigação e resposta de risco tentam capturar todos os riscos imagináveis. |
|
| Limitação de falhas | Em sua organização:
- Os acionadores de ponto de falha e seus planos de mitigação correspondentes são categorizados por pessoas, processos e tecnologia. - Os controles de mitigação são implementados imediatamente, amadurecem ao longo do tempo e incorporam automação assim que possível. - Para garantir a escalabilidade ideal, os testes e otimizações abrangentes são concluídos antes da liberação das alterações para produção. - Antes de eventos críticos para os negócios, o teste e a otimização de escala são realizados conforme os SLAs. |
Em sua organização:
- Os acionadores de ponto de falha não são classificados. Abordagens de mitigação não existem ou são usadas apenas ad hoc. - Os controles de mitigação não são revisitados nem aprimorados. - A automação não é usada na mitigação. |
| Monitoramento e observabilidade | Em sua organização:
- Para verificações e detecção de anomalias, o Proactive Monitoring está habilitado. - Para uma visibilidade contínua, os alertas Proactive Monitoring são integrados ao Centro de escala. |
Em sua organização:
- Somente verificações manuais de integridade são realizadas e nenhum monitoramento contínuo está em vigor. |
O desempenho da arquitetura do sistema é uma medida de quanto um sistema processa (transferência) e quão rápido ele responde (latência). Você geralmente entende o desempenho do seu sistema por meio de testes e monitoramento de produção.
Um sistema de alto desempenho conclui processos em tempo hábil em todos os níveis de demanda previstos.
O desempenho ruim vem em conjunto com maior latência e menor taxa de transferência, o que leva a menor produtividade e maior frustração do usuário. Corrigir problemas de desempenho é urgente porque eles podem levar a uma perda de Trust do cliente e perdas financeiras.
Você pode melhorar o desempenho de suas soluções otimizando a taxa de transferência e a latência.
Nota: A otimização de taxa de transferência e de latência são aspectos essenciais para melhorar o processamento e a responsividade do sistema. É importante lembrar, no entanto, que o desempenho geral do sistema também depende de quão bem você arquitetura para a escala. Você deve considerar ambas as dimensões em seus designs.
No contexto da arquitetura do Salesforce, a taxa de transferência é o número de solicitações simultâneas que um sistema pode concluir dentro de um determinado intervalo de tempo. As soluções do Salesforce dos clientes projetadas e otimizadas para taxa de transferência funcionam melhor dentro dos limites reguladores integrados da Salesforce Platform.
A otimização da taxa de transferência no Salesforce começa com o cálculo preciso das cargas de trabalho no seu sistema e o planejamento para seu crescimento. Sem previsões precisas para as demandas que serão feitas no sistema, não será possível detectar possíveis problemas com os recursos de taxa de transferência do seu sistema.
Ao pensar em cargas de trabalho, considere estas três dimensões.
- O número de transações que seu sistema deve processar em um determinado período de tempo
- O número de usuários que devem acessar seu sistema simultaneamente
- A complexidade geral da lógica de transação no sistema
Ao pensar no desempenho, as equipes às vezes se concentram muito na computação e nas restrições ao tempo máximo de CPU, que estão entre os limites do controlador da plataforma. Equipes com foco limitado no tempo de CPU ignoram outros métodos para otimizar a taxa de transferência. Expandir seu foco e aplicar esses métodos melhora a taxa de transferência geral e a eficiência da sua arquitetura do Salesforce. Essas melhorias, por sua vez, ajudarão a reduzir a latência e aumentar o desempenho geral do sistema. O ApexGuru detecta proativamente antipadrões que limitam a taxa de transferência, como SOQL em loops, DML em loops, chamadas GGD ineficientes e métodos caros. Essas percepções ajudam as equipes a eliminar riscos de limite do controlador que limitam a taxa de transferência.
Para otimizar a taxa de transferência no seu sistema:
- Favorecer processamento assíncrono. A Salesforce Platform usa contextos de transação para controlar a integridade dos dados e limitar a fuga de código. Veja transacções em Fundamentos de arquitetura em Fundamentos de arquitetura. Por isso, usar processamento assíncrono (assíncrono) sempre que possível pode ajudar a minimizar possíveis gargalos em contextos de execução síncrona. Consulte Tratamento de dados. O uso de computação assíncrona não é uma solução para todos os tipos de problemas de desempenho, e você precisará considerar a latência ao incorporar processos assíncronos. Alguns recursos de plataforma, como o Apex enfileirável, podem aumentar a latência durante picos de tráfego porque fazem as mensagens esperar mais tempo em uma fila. Dependendo do seu caso de uso, você pode decidir tolerar uma possível redução na responsividade para manter ou melhorar a taxa de transferência. Em outros casos, você pode decidir que o aumento da latência não é aceitável. Com Teste de escala, você pode validar essas compensações simulando picos de tráfego em um Sandbox completo. Lá, você pode medir como os trabalhos afetam a taxa de transferência e a latência.
- Sempre use massificação. Em um nível alto, massificação significa realizar operações com relação a coleções. Geralmente, as equipes que discutem a massificação para suas soluções do Salesforce se concentram em simplificar as operações de dados em relação às coleções. Consulte Lógica operacional. No entanto, a massificação em um nível do sistema envolve mais do que apenas operações de dados. Considere também determinadas tarefas, como chamadas ou cálculos complexos, como candidatos para massificação. Massificação adequada reduz a sobrecarga. Ele executa várias operações com uma solicitação, em vez de uma solicitação por operação. O ApexGuru apresenta padrões anti-bulkification como DML ou SOQL dentro de loops, que você pode corrigir antes de escalar para produção. Consulte Operações em massa.
- Use SOSL para pesquisas e trate SOQL como uma operação de dados. Pode parecer óbvio que usar instruções SOQL excessivamente complexas aumentará o tempo que o sistema leva para recuperar registros. O SOQL adiciona sobrecarga ao base de dados relacional subjacente, desacelerando o processamento. Ao usar critérios de texto ou curinga, o SOSL tem um melhor desempenho. O SOSL usa o mecanismo de pesquisa da plataforma, que é otimizado para indexação de texto completo e pesquisas universais. Para otimizar os padrões de recuperação de registro, certifique-se de que seus padrões de design especifiquem quando usar o SOSL para localizar dados no seu sistema. Certifique-se também de que eles especifiquem como usar SOQL para operações de dados eficientes. Consulte Lógica operacional).
- Use o Cache da plataforma e o ApexGuru. A camada Cache da Plataforma do Lightning proporciona um desempenho mais rápido e uma maior confiabilidade ao armazenar em cache dados da sessão do Salesforce e da organização. O Cache da plataforma melhora o desempenho distribuindo espaço em cache para que alguns aplicativos ou operações não roubem capacidade de outros. O ApexGuru detecta oportunidades perdidas para armazenar em cache consultas repetidas (por exemplo, Cache da plataforma para resultados de SOQL), o que melhora a taxa de transferência em ambientes de grande escala.
Os padrões e antipadrões para desempenho mostram a aparência de taxa de transferência adequada e baixa em uma organização do Salesforce. Use-os para validar seus designs antes de criar ou para identificar oportunidades para otimização adicional.
Para aprender mais sobre ferramentas do Salesforce para otimização de rendimento, consulte Salesforce Tools for Reliability.
A latência é uma medida da velocidade com que um sistema conclui um caminho de execução. Otimizar a taxa de transferência do seu sistema contribuirá para melhorar a latência. Outra dimensão da latência é o desempenho percebido ou o grau de responsividade do sistema para os usuários.
As pessoas não querem esperar o carregamento das páginas ou o fim dos processos. Os usuários do seu sistema ficarão frustrados se tiverem frequência com longos tempos de carregamento ao tentar navegar em exibições de lista, páginas de registro, relatórios etc. Quando isso acontece, os clientes ou parceiros podem optar por levar seus negócios para outro lugar em vez de lidar com sistemas com baixo desempenho. Interna, os funcionários podem criar soluções alternativas para evitar o uso do sistema conforme projetado, o que pode causar problemas a jusante na segurança e na integridade dos dados.
O desempenho percebido pode ser difícil de diagnosticar. Quando um usuário relata desempenho lento, as equipes de suporte talvez não consigam reproduzir o problema. O aumento da latência geralmente é resultado de uma combinação de problemas menores que se baseiam uns nos outros, o que pode dificultar o diagnóstico da causa exata dos problemas de desempenho percebidos.
Para reduzir a latência e melhorar a responsividade em seu sistema do Salesforce:
- Otimize relatórios. Certifique-se de que cada relatório atenda a uma única finalidade específica. Identifique claramente o público e a finalidade de cada relatório em seu sistema. Em relatórios, inclua apenas a quantidade mínima de dados de que os membros do público precisam para tomar decisões. Remover colunas que não estejam alinhadas à finalidade de um relatório irá melhorar o desempenho do relatório reduzindo a quantidade de dados que precisa ser recuperada e exibida.
- Otimize os filtros. Filtros eficientes aceleram o desempenho do relatório e do modo de exibição de lista definindo com precisão o escopo do número de linhas recuperadas do banco de dados. Como regra geral, quanto mais específica for a lógica de filtro, mais eficiente será a consulta subjacente para dados. As maneiras de otimizar os filtros incluem:
- Usar "igual a" e "não igual a" em vez de "contém" e "não contém"
- Evitando a filtragem por campos de fórmula
- Simplifique seu modelo de compartilhamento. Um modelo de compartilhamento excessivamente complexo pode desacelerar vários processos porque o sistema deve verificar o modelo de compartilhamento e visibilidade para determinar se um usuário tem acesso aos dados a serem exibidos ou processados. Cálculos de compartilhamento complexos podem aumentar a latência em relatórios, modos de exibição de lista e automação em execução no contexto do usuário. Consulte Compartilhamento e visibilidade.
- Otimize componentes de IU personalizados. Componentes da interface de usuário (UI) personalizados podem aumentar a latência. Para otimizar o desempenho em componentes de IU personalizados, considere fazer o seguinte.
- Use Componentes da Web Lightning (LWC). A estrutura do LWC está estreitamente alinhada aos padrões da Web modernos. Componentes personalizados escritos no LWC são renderizados com mais eficiência em navegadores da Web e permitem que os desenvolvedores usem métodos JavaScript com mais desempenho. Sempre tente usar o LWC em vez de tecnologias de interface do usuário mais antigas, como o Aura ou Visualforce.
- Use o Lightning Data Service. O Lightning Data Service lida com a criação e manutenção de cache seguro, eficiente e compartilhado entre componentes. Use-o para evitar viagens de ida e volta desnecessárias para o servidor para obter dados e para aumentar a responsividade geral do aplicativo.
- Use classificação e filtragem no lado do cliente para dados de lista. Para componentes do LWC (preferencial) e do Aura (caso contrário), os desenvolvedores podem usar a funcionalidade de matriz JavaScript padrão para classificar, filtrar e selecionar valores no lado do cliente, reduzindo o número de viagens necessárias ao servidor.
Os padrões e antipadrões mostram como é a latência adequada e a baixa em uma organização do Salesforce. Use-os para validar seus designs antes de criar ou para identificar oportunidades para otimização adicional.
Para aprender mais sobre ferramentas do Salesforce para otimização de latência, consulte Salesforce Tools for Reliability.
Esta tabela mostra uma seleção de padrões para procurar ou criar em sua organização e antipadrões para evitar ou direcionar para remediação.
✨ Descubra mais padrões para desempenho no Padrão & Anti-Padrão Explorador.
| Padrões | Antipadrões | |
|---|---|---|
| Transferência | Em seus padrões de design:
- Orientação sobre como usar o Cache da plataforma adere às Práticas recomendadas de cache da plataforma |
Em seus padrões de design:
- Se houver orientação para o uso do Cache da plataforma, ela não estará clara ou não está alinhada às práticas recomendadas. |
| Em sua organização:
- A massificação é usada para operações de dados e do sistema. - Métodos de DML ou banco de dados sempre operam em relação a coleções no Apex. - Os campos usados durante DML para elapsedTime mais curto no banco de dados são limitados. - Todos os critérios curingas são usados em SOSL. - As instruções SOQL são seletivas.: -- Eles não usam comparações LIKE nem comparações de texto parcial. -- Operadores de comparação usam lógica positiva (em outras palavras, INCLUDES ou IN) como lógica principal ou única. -- = NULL e != NULL são usados apenas raramente sempre segue um operador de comparação positivo. – Para minimizar a carga de dados e maximizar o desempenho, somente os campos necessários em consultas SOQL são recuperados. -- Nenhuma instrução LIMIT 1 é usada. -- A palavra-chave TODAS as linhas não é usada. - O processamento assíncrono é favorecido quando possível. - As partições de Cache da plataforma são configuradas. |
Em sua organização:
- As instruções DML não são massificadas. - Métodos de DML ou banco de dados operam em registros únicos no Apex. - SOSL raramente é usado ou não é usado de modo consistente para critérios de seleção de curinga. - As instruções SOQL não são seletivas: -- Eles incluem critérios de filtro curinga e LIKE. -- Comparações usando critérios !=, NOT ou NOT IN são usadas como o operador de comparação principal ou único. -- Usos = critérios NULL e != NULL como os operadores de comparação primários ou únicos. As instruções -- LIMIT 1 são usadas. -- A palavra-chave TODAS as linhas é usada. - SOQL aparece dentro de loops. - Processos síncronos são favorecidos. |
|
| Latency | Em sua organização:
- Os relatórios atendem a uma única finalidade específica e contêm o número mínimo de linhas e colunas necessárias para tomar decisões. - Os filtros usam "igual a" e "não igual a". - Os filtros não contêm campos de fórmula. - Os modelos de compartilhamento são simplificados ao máximo possível. - Os componentes personalizados da IU usam Componentes da Web Lightning (LWC). - O LWC usa o Lightning Data Service para operações de dados. - A classificação e filtragem de dados de lista são tratadas no lado do cliente em JavaScript. - O Salesforce Edge está habilitado. |
Em sua organização:
- Os relatórios atendem a vários fins ou contêm linhas e colunas extras que não são necessárias para tomar decisões. - Os filtros usam "contém" e "não contém". - Os filtros contêm campos de fórmula. - Os modelos de compartilhamento são complexos. - Os componentes personalizados da IU usam estruturas que podem resultar em renderização menos eficiente do que o LWC (por exemplo, Aura ou Visualforce). - O LWC usa Apex para operações de dados. - A classificação e filtragem de dados de lista é tratada no lado do servidor usando o Apex. - O Salesforce Edge não está habilitado. |
A escalabilidade é a capacidade de um sistema de realizar um desempenho consistente conforme ele evolui e cresce. Um sistema dimensionável lida com grandes aumentos nos volumes de transações ou acesso simultâneo sem alterações fundamentais. Os serviços de plataforma do Salesforce são projetados para dar suporte à escalabilidade do aplicativo. Consulte Processamento interno da plataforma. Com isso dito, à medida que sua organização cresce e a demanda por seus produtos e serviços aumenta, você é responsável por criar um sistema que possa funcionar de modo eficaz e conforme o esperado. O arquiteto para escalabilidade desde o início resulta em entrega mais rápida de novos recursos e menos interrupções de serviço conforme o tráfego do usuário aumenta. No início da fase de design, antes de implementar novos recursos na produção, use o Teste de escala para simular cargas de trabalho projetadas e validar se a arquitetura pode ser dimensionada para suportá-las.
Sistemas não projetados para escalabilidade exigem solução de problemas constante e dispendiosa, reprojeto e refatoramento. Os problemas de escalabilidade se complicam ao longo do tempo, reduzindo o desempenho em todo o sistema. Em alguns casos, as empresas se encontram gastando a maioria dos recursos de desenvolvimento e manutenção para lidar com problemas de escalabilidade em vez de novos recursos que criam valor.
Às vezes, uma empresa atinge um ponto crítico. O design original do sistema não pode dar suporte ao crescimento dos negócios, e eventos inesperados tornam o sistema instável. Use percepções do Scale Center para identificar pontos de escalabilidade precocemente. O Centro de escala detecta hotspots de exceção, transações de execução longa e gargalos de fila que pioram ao longo do tempo.
Você pode arquitetar melhor para escala focando a otimização do modelo de dados e o gerenciamento de volume de dados.
Nota: Embora não seja discutido aqui, o teste de escalabilidade é uma parte crítica da validação de suas arquiteturas de aplicativo. Para orientação, consulte estratégia de teste.
A modelagem de dados envolve estruturar os objetos em sua organização e relacioná-los entre si de maneira que permita que seus usuários e processos automatizados recuperem os dados de que precisam o mais rapidamente possível. Tomar medidas para melhorar a taxa de transferência resolve muitos problemas de desempenho, mas seus esforços não serão tão eficazes sem um modelo de dados otimizado.
Os impactos negativos de um modelo de dados mal projetado não são imediatamente perceptíveis; suas fraquezas são expostas à medida que o sistema cresce em termos de volume de dados, processos, usuários e integrações. Um modelo de dados bem projetado facilita o refator contínuo do seu aplicativo conforme os requisitos são adicionados e estendidos. O ApexGuru detecta antipadrões de acesso a dados, como SOQL não seletivo, campos não utilizados e ineficiências de esquema que afetam diretamente a escalabilidade do modelo de dados.
Para otimizar seu modelo de dados:
- Use os modelos de dados predefinidos do Salesforce. O Salesforce fornece modelos de dados predefinidos para Vendas, Serviços e uma variedade de verticais do setor. Usar os modelos de dados fornecidos pelo Salesforce garante que os recursos em seu sistema sejam definidos apenas uma vez, eliminando redundância e silos e estabelecendo uma única fonte da verdade em todo o sistema. Como você usou modelos de dados pré-criados do Salesforce para essa única origem, ficou mais fácil entender os dados do aplicativo com análise e usar os serviços de inteligência artificial pré-criados do Salesforce. Além disso, reduzir as personalizações que você deve suportar reduz os custos de manutenção e reduz o débito técnico.
- Escolha os tipos de dados certos. Entenda os diferentes tipos de campos compatíveis com o Salesforce e suas limitações. Considere os requisitos de relatórios e criptografia para evitar a necessidade de converter dados entre tipos no futuro.
- Escolha as relações certas. O Salesforce oferece suporte a dois tipos de relacionamentos entre objetos: mestre-detalhes e pesquisa. Os relacionamentos entre mestre e detalhes oferecem dois benefícios principais. Um deles é os recursos de resumo de totalização integrados, que contam e agregam detalhes de registros filho. A outra é uma funcionalidade de exclusão em cascata integrada, por meio da qual a exclusão de um registro pai também exclui seus registros filhos. No entanto, certifique-se de que entende as implicações de compartilhamento e distorção de dados de relacionamentos entre mestre e detalhes antes de decidir usá-los.
- Denormalize para escala. A normalização é o processo de estruturar seu modelo de dados para reduzir a redundância de dados e melhorar a integridade dos dados. Infelizmente, a normalização às vezes causa problemas de escala. Tabelas não normalizadas podem ter um desempenho melhor em escala, mas lembre-se de considerar a integridade e a redundância dos dados.
Os padrões e antipadrões mostram como é a otimização de modelo de dados adequada e ruim em uma organização do Salesforce. Use-os para validar seus designs antes de criar ou para identificar oportunidades para otimização adicional.
Para aprender mais sobre ferramentas do Salesforce para otimização de modelo de dados, consulte Salesforce Tools for Reliability.
O volume de dados é uma medida da quantidade de dados armazenados em seu sistema com base em contagens e tamanhos de registro. Se sua organização tiver dezenas de milhares de usuários, dezenas de milhões de registros ou centenas de gigabytes de armazenamento total de registros, você terá um grande volume de dados. O volume de dados e os relacionamentos entre objetos em sua organização afetam a escalabilidade e provavelmente terão um impacto maior sobre a escalabilidade do que apenas o número de registros.
Para melhorar a escalabilidade de organizações com grandes volumes de dados:
- Distribuir registros filhos. Evite distorção de dados de pai e filho garantindo que nenhum pai tenha um grande número de registros filhos. A recomendação geral é que nenhum pai deve ter mais de 10 mil registros filhos. Por exemplo, em uma implantação que tem muitos contatos, mas não usa contas, considere configurar vários registros de conta e distribuir registros de contato relacionados entre eles.
- Distribuir propriedade dos registros. Evite distorção de propriedade garantindo que nenhum único usuário ou fila seja proprietário, nem que todos os membros de um único papel ou grupo público sejam proprietários de mais de 10.000 registros do mesmo objeto. "Estacionar" dados com um "usuário simulado" é uma prática que geralmente leva a um desvio de propriedade. Se você encontrar esse problema, lembre-se do impacto que ele terá sobre os cálculos de compartilhamento. Se você não puder redistribuir registros para aliviar o desvio de propriedade, evite atribuir o usuário proprietário dos dados a um papel. Se o modelo de compartilhamento da sua organização exigir uma atribuição de papel, coloque o usuário proprietário dos dados em um papel distinto no topo da hierarquia de compartilhamento. Não permita alterações frequentes ou não planejadas no papel desse usuário, pois qualquer alteração terá impactos significativos sobre o desempenho devido a recálculos de compartilhamento. Mantenha esse usuário fora de grupos públicos que possam ser referenciados em qualquer regra de compartilhamento.
- Reduza a quantidade de dados de registro no Salesforce. O Salesforce é projetado para fornecer às empresas uma única visualização dos clientes. Pode parecer contraintuitivo que a limitação de dados no Salesforce seja uma prática recomendada. No entanto, o poder da visualização única reside no quão bem ela permite que os usuários de negócios entendam e realizem ações em relação aos dados do cliente. Conforme o volume de dados aumenta, dados que não são atuais ou relevantes para processos ou análises cotidianas levam a vários problemas. Esses problemas incluem desempenho reduzido do aplicativo, maior risco de segurança de dados e impactos negativos sobre pesquisa, relatórios e análise. Para evitar esses problemas, defina um ciclo de vida de dados para cada objeto em seu modelo de dados, com linhas do tempo e classificações para os dados conforme ele envelhece e perde valor comercial imediato. De acordo com o ciclo de vida dos dados, implemente estes procedimentos para gerenciar dados ao longo do tempo.
- Arquivamento e limpeza de dados – Para manter os volumes de dados o mais baixos possível, remova os registros que não são necessários pela empresa para ajudar a manter os volumes de dados o mais baixos possível. Use a função de exclusão permanente da API em massa 2.0 para excluir grandes volumes de dados.
- Agrupamento de dados – Crie objetos personalizados de agregação que resumem as principais tendências históricas ou dados resumidos em um formato compatível com relatórios. Preencha os objetos personalizados usando o Apex lote. Os usuários então podem executar relatórios com base nos registros de objeto agregado.
- Nível de dados. Mantenha conjuntos de dados grandes em um aplicativo diferente se não forem necessários para relatórios do Salesforce ou trabalho diário. Disponibilize os dados no Salesforce conforme necessário por meio de mashups, chamadas ou objetos externos.
Na prática, nem sempre é possível lidar imediatamente com a causa-raiz de um problema de escalabilidade quando ocorrem problemas. Por isso, o Salesforce oferece opções para ajudar a aliviar problemas imediatos. É importante saber que habilitar esses recursos em sua organização não é uma estratégia de arquitetura de longo prazo viável para lidar com grandes volumes de dados. Essas soluções alternativas de curto prazo podem ajudar a reduzir a latência em sistemas com arquitetura de dados ruim, mas também podem adicionar débito técnico à sua organização.
As soluções alternativas de curto prazo para problemas de escala incluem:
- Índices personalizados Os índices são armazenados em uma tabela interna especial que o otimizador de consulta da plataforma usa para acelerar operações de acesso a dados. Consulte Multitenant Indexes). A plataforma indexa automaticamente determinados tipos de campos por padrão. Para acelerar consultas com baixo desempenho, você pode solicitar índices personalizados adicionais entrando em contato com o Suporte ao cliente da Salesforce. Use a ferramenta Plano de consulta para determinar se os índices personalizados melhorarão o desempenho de suas consultas.
- Tabelas sujas. Se você precisar otimizar ainda mais as consultas para conjuntos comuns de campos em objetos com mais de um milhão de registros, as tabelas mínimas podem ajudar. As tabelas mínimas eliminam a junção de fundo que ocorre ao usar campos personalizados e padrão do mesmo objeto em um relatório ou automação. Para que você possa usar tabelas mínimas, o Suporte ao cliente da Salesforce deve habilitá-las para sua organização.
Os padrões e antipadrões para escalabilidade mostram como é o gerenciamento de volume de dados adequado e ruim em uma organização do Salesforce. Use-os para validar seus designs antes de criar ou para identificar oportunidades para otimização adicional.
Para aprender mais sobre ferramentas do Salesforce para gerenciar volumes de dados, consulte Salesforce Tools for Reliability.
Isso mostra uma seleção de padrões para procurar ou criar em sua organização e antipadrões para evitar ou direcionar para remediação.
✨ Descubra mais padrões para escalabilidade no Pattern & Anti-Pattern Explorer.
| Padrões | Antipadrões | |
|---|---|---|
| Modelagem de dados | Em seus padrões de design:
- Padrões e diretrizes para as quais justificativas de negócios justificam a existência de um objeto personalizado. |
Em seus padrões de design:
- Não há padrões para criar objetos personalizados. |
| No modelo de dados:
- Objetos padrão são usados quando possível. - As verificações do ApexGuru para antipadrões confirmam que as consultas SOQL são seletivas e evitam o uso de esquema ineficiente. - As tabelas são não normalizadas para escala. |
No modelo de dados:
- Você tem objetos padrão replicados. - As tabelas são normalizadas para evitar redundância. |
|
| Dentro do seu negócio:
- Os criadores de código baixo entendem os diferentes tipos de campo compatíveis com o Salesforce e avaliam os requisitos de relatórios e criptografia antes de selecionar os tipos de dados de campo. - Antes de decidir estabelecer um relacionamento entre mestre e detalhes entre objetos, você avalia as implicações de compartilhamento e desvio de dados desse relacionamento. |
Dentro do seu negócio:
- Os criadores de código baixo selecionam tipos de dados sem avaliar os requisitos de relatórios e criptografia a jusante. - Antes de decidir estabelecer relacionamentos entre mestre e detalhes entre objetos, você não avalia as implicações de compartilhamento e desvio de dados desse relacionamento. |
|
| Data Volume | Em seus dados:
- Nenhum registro pai tem mais de 10 mil registros filhos. - Nenhum usuário é atribuído a mais de 10 mil registros do mesmo tipo de objeto. - Nenhuma instância inclui mais de 10 mil registros que têm campos de pesquisa apontando para o mesmo registro. - Os carregamentos de dados em massa são classificados em lotes de acordo com os valores do campo ParentId. - Para garantir que as estratégias de lote não quebrem em simultâneo, o Teste de escala é usado para validar padrões de carga em massa em escala de produção. - Os carregamentos de dados em massa na produção não ocorrem durante o horário comercial de pico. - As cargas de dados em massa incluem apenas os dados mínimos necessários para decisões de negócios. |
Em seus dados:
- Existem registros com mais de 10 mil registros filho. - Os usuários são atribuídos a mais de 10 mil registros do mesmo tipo. - Existem instâncias em que mais de 10 mil registros têm campos de pesquisa que apontam para o mesmo registro. - Os carregamentos de dados em massa não são classificados em lotes de acordo com os valores de campo ParentId. - Carregamentos de dados em massa em produção ocorrem durante o horário comercial de pico. - As cargas de dados em massa não estão limitadas ao mínimo de dados necessários para decisões de negócios. |
| No Fluxo e no Apex:
- Há lógica para distribuir o número de registros filho entre vários registros pai em cenários em que o desvio de dados é uma preocupação. - Ao importar ou replicar registros por meio de integração, a lógica os atribui aos usuários humanos adequados. - Para coleções do Apex, como listas e conjuntos, existe lógica para processar vários registros para minimizar consultas e otimizar o tratamento de dados. - Código eficiente do Apex que segue os padrões e as melhores práticas para código escalável é escrito e implementado. |
No Fluxo e no Apex:
- Os registros filho são atribuídos arbitrariamente aos registros pai, independentemente do número de registros filho já atribuídos. - Os registros criados por meio de carregamentos de dados ou integrações são atribuídos a um "usuário de integração" genérico. - Várias consultas SOQL recursivas do mesmo objeto estão em transações síncronas, levando a alto uso de heap. - Quando os desenvolvedores escrevem Apex code, eles introduzem ineficiências e antipadrões de desempenho. |
|
| Dentro do seu negócio:
- Você documentou e implementou uma estratégia de depuração e arquivamento de dados |
Dentro do seu negócio:
- Você não tem uma estratégia de depuração e arquivamento de dados ou sua estratégia foi documentada, mas não implementada |
| Ferramenta | Descrição | Disponibilidade | Desempenho | Escalabilidade |
|---|---|---|---|---|
| Objetos grandes | Armazene e gerencie grandes volumes de dados na plataforma. | X | ||
| Scanner de código | Verifique o Apex code quanto a problemas de desempenho. | X | ||
| Índices personalizados | Melhore o desempenho da consulta com índices personalizados. | X | ||
| Exclusão de dados | Remova dados desnecessários para melhorar o desempenho. | X | X | |
| Divisões | Particione dados para limitar contagens de registros em consultas e relatórios. | X | ||
| Teste de escala | Teste o desempenho do sistema e interprete os resultados. Antes de implantar na produção, para validar a escalabilidade e o desempenho, simule as cargas de trabalho de API e UI em grande escala usando scripts do Playwright ou do JMeter. | X | X | |
| Centro de escala | Obtenha percepções em tempo real e por autoatendimento sobre o desempenho do sistema. Encontre transações de execução longa, hotspots de exceção e gargalos de taxa de transferência. Diagnosticar problemas de escala anteriormente em seu ciclo de desenvolvimento. | X | X | |
| ApexGuru | Use esse recurso baseado em GenAI no Centro de escala para detectar antipadrões do Apex, SOQL e classe de teste em tempo de execução. Por meio da integração do ApexGuru com o Salesforce Code Analyzer, obtenha recomendações habilitadas por IA e correções em linha no fluxo de trabalho de desenvolvimento. Use essas recomendações e correções para resolver hotspots e melhorar a seletividade da consulta, a massificação, o uso de cache e a qualidade de testes. | X | X | |
| Analisador de código do Salesforce | Verifique o código com IDE, CLI ou CI/CD para garantir que ele cumpra as práticas recomendadas. Por meio da integração do Salesforce Code Analyzer com o ApexGuru, obtenha percepções sobre antipadrões de desempenho diretamente no fluxo de trabalho do desenvolvedor. | X | ||
| Salesforce Edge Network | Melhore os tempos de download e a experiência do usuário roteando seu Meu domínio pela Salesforce Edge Network. | X | ||
| Tabelas Skinny | Evite junções em tabelas que tenham campos usados com frequência. | X | ||
| Monitoramento proativo | Monitore continuamente anomalias em crescimento de registro, distorção de propriedade e regressões de desempenho. Alerte sobre problemas de escala antes que eles se tornem críticos. | X | X |
| Recurso | Descrição | Disponibilidade | Desempenho | Escalabilidade |
|---|---|---|---|---|
| Os desafios de escala custam milhões — Veja como promover seu negócio no futuro | Descubra como a implementação da escalabilidade leva ao crescimento sustentável e ao sucesso de longo prazo. | X | X | |
| Criar e implementar aplicativos dimensionáveis usando o Centro de escala | Entenda como avaliar e resolver de modo proativo problemas de desempenho em suas implementações do Salesforce. | |||
| Analisar hotspots de desempenho e escala em aplicativos Salesforce complexos | Lide com problemas de desempenho e escalabilidade na sua organização. | X | X | |
| Seu aplicativo não deve entrar em pânico no tráfego de horário rápido - Aqui está como se preparar | Aprenda quatro etapas importantes para testes de escala bem-sucedidos. | |||
| O mecanismo de IA do ApexGuru explicado | Saiba como o ApexGuru usa modelos treinados personalizados, telemetria da organização do mundo real e filtragem inteligente para fornecer percepções precisas, contextuais e acionáveis. | X | X | |
| Otimize seu Apex para aplicativos e Agentforce com o ApexGuru | Saiba como o ApexGuru ajuda os desenvolvedores a detectar e corrigir antipadrões de desempenho, incluindo SOQL, DML, depuração e ineficiências de teste. Use o ApexGuru como um instrutor baseado em IA para o desenvolvimento escalonável de seus aplicativos e sua implementação do Agentforce. | X | X | |
| ApexGuru Antipatterns | Aprenda na biblioteca oficial de antipadrões detectados pelo ApexGuru, que é atualizada para cada versão principal do Salesforce. | X | X | |
| Práticas recomendadas para implantações com grandes volumes de dados | Entenda os impactos do processo de grandes volumes de dados. | X | ||
| Considerações sobre a Salesforce Edge Network | Descubra como preparar sua organização para usar a Salesforce Edge Network. | X | ||
| Modelo de padrões de design | Crie padrões de design para sua organização. | X | X | X |
| Considerações sobre o projeto de modelo de dados | Otimize modelos de dados para escala e manutenção. | X | X | |
| Construindo o acesso ao registro em escala corporativa | Otimize o desempenho do controle de acesso por meio da configuração. | X | ||
| Infraestrutura para sistemas com grandes volumes de dados | Aprenda sobre os recursos que dão suporte ao desempenho do sistema para implantações com grandes volumes de dados. | X | ||
| Recursos de aprendizado para gerenciamento em lote | Aprenda mais sobre o Gerenciamento em lote. | X | X | |
| Otimização de desempenho do Lightning Experience | Melhore o Lightning Experience em sua organização para ajudar seus usuários a trabalhar mais rapidamente. | X | ||
| Gerenciar o seletor de pesquisa no Salesforce para evitar exceções de bloqueio de registro | Entenda como minimizar os efeitos de discrepâncias de pesquisa. | X | X | |
| Práticas recomendadas de SOQL e SOSL | Siga as práticas recomendadas de SOQL e SOSL para implantações com grandes volumes de dados. | X | X | |
| Ferramentas para realinhamentos em grande escala | Planeje e execute realinhamentos de modo eficaz. | X | ||
| Usando Mashups | Mantenha conjuntos de dados grandes em um aplicativo diferente. | X | X |
Ajude-nos a manter o Salesforce Well-Architected relevante para você; faça nossa pesquisa para fornecer feedback sobre esse conteúdo e diga-nos o que você gostaria de ver em seguida.