O que é Salesforce
A Salesforce foi a primeira empresa a levar o CRM pra nuvem e possui uma plataforma que visa colocar o cliente no centro de tudo, oferecendo diversos produtos pra ajudar as empresas a vender, prestar serviços, anunciar, analisar e se conectar com seus clientes.
Mesmo sendo líder do mercado de CRM não se limita apenas a ele, oferecendo em seu catálogo de produtosdiversas soluções, sempre focando em inovação e segurança. As atualizações da plataforma são feitas trêsvezes ao ano,uma cultura que nos permite ter as mais recentes tecnologiasdisponíveis, bastando acessar via API,muitas vezes diretamente no código. Com o Salesforce CRM é possível gerenciar a colaboração entre equipes internas e externas e armazenar o resultado de todas as interações geradas no processo, entre diversas outras funcionalidades.
A Salesforce domina o mercado mundial de CRM com 19,5% de Market Share, enquantoseu rival mais próximo com apenas 8,3%. Além disso, pesquisas apontam o CRM como o maior e mais rápidosistema em crescimento na categoria de sistemas empresariais, segundo o Gartner(2019).
Pra entender como a Salesforce funciona, primeiro precisamos entender o que significa alguns termos comuns, como por exemplo ORG, Ambiente e Aplicativo.
Orgs são instâncias da Salesforce. Quando uma empresa adquire licenças daSalesforce, automaticamente essa empresa possui uma Org, ou seja, uma instância onde serão salvas quaisquer personalizações que forem feitas.
Ambientes são usados para auxiliar no controle de versões, gerenciando mudanças em telas, códigos, metadados etc. Toda empresa possui no mínimo um ambiente de Sandbox (Org Sandbox) e um ambiente de produção (Org de Produção). É indicado que todas as mudanças sejam primeiramentefeitas em Sandbox e,depois,transferidas para produção, obtendo assim um controle de versão bemsimples, mas fácil de usar. Outras formas de controle de versão podem ser inseridas nesse contexto, utilizando várias Orgs/Ambientes de Sandbox e transferindo seus metadados para os sistemas de controlede versão escolhidos, como GitHub, TFS etc.
Os Aplicativos naSalesforce são conjuntos de objetos, telas e componentes agrupados, tendo em mente uma categoria de funcionalidades ou setor da empresa. Mas isso é livre para a escolha de cada empresa. Ex.: Aplicativo de Vendas possuem objetos relativos ao funilde vendas, como Leads, Contas, Oportunidades etc.
A Salesforce deu o nome da sua plataforma de “Customer 360”, criada tendo a segurança como prioridade máxima. Os dados das empresas e clientes podem ser ou não exibidos ao se configurar o acesso e as permissões do usuário, assim comooutros recursos de segurança, para que apenas as pessoas certas tenham acesso a determinada informação.
Developer Org
Developer Org é, como o nome já sugere, uma instância daSalesforce destinada ao desenvolvedor. Ela, além da sua conta no Trailhead, constitui uma importante ferramenta para se aprender a trabalhar na plataforma. Você,como aluno, precisa e deve criar uma Developer Org para começar a implementar as coisas que for aprendendo no decorrer deste curso.
Multi-tenant Kernel
A Lightning Platform é uma plataforma Salesforce como serviço (PaaS) que é feita para a computação em nuvem. Tradicionalmente, no núcleo de uma aplicação convencional vive um sistema de banco de dados relacional com seus diversos componentes (como o catálogo de índices, mecanismos de cache, otimizadores de pesquisas etc.). Nesta situação a aplicação convencional é construída para servir um único cliente, sendo executada em uma plataforma que tem seus recursos não somente à disposição do cliente, como também ajustadas para ele.
Com muito esforço, a disponibilização de uma aplicação com um banco de dados padrão desses só é possível com a virtualização. Infelizmente isso significa que há um overheadmuito grande, e a performance é prejudicada.
Em contraste com isso, a plataforma da Salesforce combina diversas tecnologias de persistência de dados, incluindo um schema de banco de dados totalmente personalizado para a nuvem, com vários clientes simultâneos, e sem virtualização. Assim, possuindo uma performance muito superior, porém não sem seus pontos negativos, um banco de dados totalmente personalizado traz algumas limitações para os clientes que desejam customizar o comportamento da aplicação. Num banco de dados comum seria relativamente fácil, por exemplo, criar uma tabela que armazena números grandes e usá-la para armazenar a data e hora com uma precisão de milissegundos. No Salesforce existe um tipo de coluna (mais tarde vamos nos referir a elas como “tipo de campo”) de data/hora, mas que não armazena os milissegundos. O que fazer nessa situação então? Criar um campo do tipo numérico e armazenar o número inteiro, mas perder as funcionalidades como a conversão automática do valor em data e hora para o usuário atual, baseado em seu fuso horário? Quase toda modificação traz um ganho e uma perda, seja o ganho na usabilidade e a perda no aumento de complexidade do negócio ou da manutenção da nuvem.
O Salesforce é um CRM construído no topo de uma plataforma chamada hoje de Lightning Platform. Esta plataforma é a aplicação multi-tenant, que roda na infraestrutura dos servidores daSalesforce e também é a plataforma que suporta os seus dois principais produtos, construídos em cima dela: o Sales Cloud e o Service Cloud.
Recursos compartilhados
Ser uma plataforma Salesforce multi-tenantsignifica que um mesmo conjunto de recursos computacionais é oferecido para mais de um cliente ao mesmo tempo. Isso significa que não há um servidor dedicado para um cliente da Salesforce em sua nuvem, e que os recursos computacionais são compartilhados entre todos os clientes.
Ter recursos compartilhados deve gerar uma preocupação para qualquer tipo de alteração na nuvem padrão e até mesmo a configuração de alguns componentes que vêm configurados por padrão na plataforma. Isso porque quanto mais difícil computar algo, maior é o risco de a plataforma bloquear a computação. No contexto da Salesforce, as alterações realizadas no banco de dados são chamadas de transações. Logo: uma transação demorada pode ser bloqueada pelo framework interno da Salesforce.
Transação “demorada” é um tanto quanto vago, mas a Salesforce é bem transparente com relação aos limites de sua plataforma. Não é difícil encontrar dezenas de artigos e documentações ao procurar por “Salesforce transactions limitations”. Na verdade, o primeiro resultado no Google é uma das tabelas de limite de execução de código na plataforma.
Limites mais comuns
Os limites transacionais Salesforce mais conhecidos e que acabam ficando na cabeça de quem trabalha por um tempo com a plataforma são os de memória e de tempo de execução. Qualquer código que seja executado de forma síncrona na plataforma tem dez segundos para concluir sua execução (incluindo aí o commitdo banco de dados).Veja bem: de forma síncrona. A plataforma nos permite executar operações mais complexas em transações assíncronas com alguns limites aumentados.
Por exemplo, numa mesma transação só é possível fazer cem consultas ao banco de dados da nuvem. Isso significaque todo o código que é executado nesses dez segundos da transação pode invocar, no total, cem consultas ao banco de dados. É bem fácil chegar a esse limite numa única transação ao ignorar os limites da plataforma, para atender aos requisitos de negócio. Lembrando: não é só o código de um método, uma trigger de banco de dados, uma chamada externa, que vai consumir desse limite. Tudo que for executado nos dez segundos vai consumir deste limite, sem exceções.
Kernel movido a metadados
Uma plataforma Salesforce que suporta múltiplos inquilinos simultaneamente, projetada especificamente para servir uma nuvem, é difícil de ser construída e ter sua manutenção garantida. Isso porque ela deve ser confiável, escalável, customizável, atualizável, segura e rápida. A Lightning Platform mantém todos esses atributos especificando a forma da nuvem de cada cliente usando metadados. Ou seja: dados que especificam como é a forma de outros dados.
A nuvem da Salesforce é polimórfica por natureza. Isso significa que ela se adapta à especificação do cliente (sua customização). Um único sistema executável compilado não daria conta do recado. A plataforma usa um motor que, em tempo de execução, modela a nuvem de acordo com a especificação do usuário atual. Há uma separação do que é o motor do banco de dados (o kernel), os dados do cliente e todos os metadados que descrevem cada aplicação na plataforma. Essas fronteiras tornam possível a atualização independente dos componentes, sem muitos riscos para os outros.
Praticamente tudo na nuvem da Salesforce pode ser descrito como um metadado. Objetos (tabelas), campos (colunas), procedures, triggers de bancos de dados etc., todos são construções abstratas que existem meramente como metadados no dicionário de dados universal da plataforma. Por exemplo: quando um objeto personalizado é criado, a plataforma não cria uma tabela de verdade oucompila algum código. Ao invés disso, a plataforma apenas armazena metadados sobre essa nova tabela, para que a camada de banco de dados consiga servir os dados da tabela em tempo de execução. Internamente, a plataforma mantém uma tabela para cada tipo decampo (uma tabela de datas, outra de textos, outra de números etc.) e identifica cada linha dessas tabelas com o identificador do campo e o identificador da organização (nuvem) do cliente.
Modelagem e Gerenciamento de Dados
A área de modelagem e gerenciamento de dados na plataforma Salesforce é muito extensa, e há muito o que ser dito, especialmente em situações específicas. Cada caso é um caso, mas o que sempre é necessário ao trabalhar com dados na plataforma é considerar o ciclo de vida da informação na plataforma. Lembre-se: armazenamento na plataforma é bem caro e não são todos os dados que devem ser armazenados para sempre na plataforma, nem mesmo por motivos de compliance (como em uso de instituições governadas por regras federais, como bancos —que operam sob as regras do Banco Central).
Gerenciamento de dados Salesforce não é apenas sobre o espaço ocupado, mas também sobre a qualidade da informação armazenada. De nada adianta ter muita informação na plataforma se a base de dados parece um queijo suíço. Para essas situações, a plataforma nos dá várias ferramentas para garantir a consistência de dados com regras de validação e até mesmo configurações de layout de página.