Imaginar uma nova fonte da verdade
Objetivos de aprendizagem
Após concluir esta unidade, você estará apto a:
- Descrever como os modelos de desenvolvimento de organizações diferem do desenvolvimento modular de pacotes.
- Listar as vantagens do desenvolvimento com pacotes.
- Descrever as principais características de um pacote.
O mundo inteiro é uma organização
Um ator famoso, ou talvez um visionário da Salesforce, disse uma vez: “O mundo inteiro é uma organização”. Tradicionalmente, o centro desse mundo tem sido sua organização de produção, e você tem realizado grande parte de seu desenvolvimento dentro dos limites de uma sandbox ou organização de produção. (Se você é parceiro do AppExchange, seu mundo é um pouco diferente. No entanto, as ferramentas apresentadas nesta unidade também estarão disponíveis para você, portanto, continue lendo.)
Como você tradicionalmente gerencia a mudança
Se você concluiu o módulo Modelo de desenvolvimento organizacional, talvez se lembre de Calvin Green, o administrador da Zephyrus Relocation Services. À medida que a Zephyrus crescia, também crescia a complexidade da organização de produção da empresa. Para gerenciar essa mudança crescente, ele começou a adotar as modernas ferramentas de desenvolvimento da Salesforce para gerenciar o ciclo de vida do aplicativo da equipe.
Vamos ver como a equipe de desenvolvimento pode trabalhar usando o Modelo de desenvolvimento organizacional.
Você coordena o desenvolvimento de uma dinâmica empresa de alta tecnologia. Para sua versão, é necessário personalizar o aplicativo de CRM principal e, além disso, você deseja criar um aplicativo interno para sua empresa. A primeira etapa do desenvolvimento é garantir uma visão mais atualizada da organização de produção. No modelo baseado na organização, sua organização de produção é a fonte da verdade para todo o seu código, configuração e personalizações.
Não importa o que você esteja criando, no final das contas você cria implantações que têm sua organização de produção como escopo. Como mostra o diagrama, mesmo que você tenha várias equipes trabalhando em projetos de desenvolvimento separados, elas desenvolvem e lançam suas atualizações com a mesma implantação. Tudo é colocado em um arquivo package.xml
.
Na primeira versão, digamos que você esteja trabalhando em dois novos projetos:
(1) Projeto |
(1) Desenvolvimento |
(2) API de metadados (package.xml) |
---|---|---|
Personalizações/Extensões de CRM (primeira versão) |
Objeto personalizado (adicionar) Campo personalizado (adicionar) Layout de página (adicionar) Fluxo de trabalho (adicionar) |
Classe do Apex: 1 Página do Visualforce: 1 Objeto personalizado: 2 Campo personalizado: 2 Layout de página: 1 Fluxo de trabalho: 1 |
Aplicativo Time Off Manager (primeira versão) |
Objeto personalizado (adicionar) Campo personalizado (adicionar) Classe do Apex (adicionar) Página do Visualforce (adicionar) |
(3) - Tudo é lançado simultaneamente na organização de produção. |
Na segunda versão, você faz pequenas atualizações. No entanto, você ainda lança e implanta os dois projetos simultaneamente na organização de produção:
(1) Projeto |
(1) Desenvolvimento |
(2) API de metadados (package.xml) |
---|---|---|
Personalizações/Extensões de CRM (primeira versão) |
Objeto personalizado (atualizar) Fluxo de trabalho (atualizar) |
Página do Visualforce: 1 Objeto personalizado: 2 Fluxo de trabalho: 1 |
Aplicativo Time Off Manager (primeira versão) |
Objeto personalizado (atualizar) Página do Visualforce (atualizar) |
(3) - Tudo é lançado simultaneamente na organização de produção. |
Seus desenvolvedores e gerentes de versão veem a organização como um conjunto combinado de códigos e personalizações. Para esclarecer esse ponto, observe o diagrama novamente. A implantação final não está limitada ao aplicativo Time Off Manager ou apenas às extensões do CRM; ela inclui todas as alterações da organização.
Durante o desenvolvimento, você precisa acompanhar o que está alterando para ter certeza de que sabe o que implantar na organização de produção. Suas alterações se interligam com o que outros alteraram, portanto, esse processo pode ser complicado e bastante manual. Se você usar o controle de origem nesse processo, esse mesmo senso de código e personalizações interligados se refletirá no sistema de controle de origem. Você alinha seu repositório de origem com a organização e não com uma parte da organização (por exemplo, o aplicativo Time Off Manager).
Mas, e se você descobrir que sua sopa da felicidade de dados interligados se tornou muito complexa e precisar de uma maneira melhor de gerenciar mudanças? Deseja seguir um modelo de desenvolvimento mais tradicional para entregar e lançar aplicativos e soluções?
Gerenciar a mudança com o desenvolvimento com pacotes
À medida que a Zephyrus continuava a crescer, suas versões se tornavam cada vez mais complexas. Com várias equipes de desenvolvimento e vários administradores do Salesforce, Calvin queria encontrar uma maneira de desacoplar os projetos do enorme conjunto de versões. O modelo de desenvolvimento com pacotes simplifica todo o ciclo de vida de desenvolvimento e traz benefícios como:
- Aprimoramento do desenvolvimento e colaboração da equipe.
- Processo de desenvolvimento modular com especificação de dependências entre pacotes.
- Controles de versão para facilitar o gerenciamento de mudanças
- Viabilização de testes automatizados e integração contínua.
- Aumento da eficiência e agilidade do ciclo de lançamentos.
- Sincronização melhorada do sistema de controle de versão (VCS) graças ao rastreamento de alterações de recursos de configuração
- Visibilidade e clareza mais refinadas no gerenciamento de mudanças da sua organização de produção
O que isso significa? Em vez de criar código e personalizações para a organização, crie um pacote (um conjunto lógico de códigos). Um pacote é um artefato de lançamento composto por um grupo de códigos e personalizações que estão relacionados.
O agrupamento de componentes em um pacote pode representar muitas coisas. O pacote pode ser um conjunto de personalizações criado para dar suporte a uma equipe de vendas. Um pacote pode ser os componentes, objetos e fluxos de trabalho do Lightning de um aplicativo que está sendo criado na organização. Um pacote pode ser as extensões que você está criando a partir de um pacote gerenciado instalado pelo AppExchange.
Com esse novo processo, você pode estruturar sua organização em um conjunto de pacotes. Com a organização da origem e dos metadados em pacotes, você entende melhor os relacionamentos entre os componentes de metadados na organização. Quanto maior for a organização, mais importante será esse processo, portanto, planeje com antecedência e sempre pense em formas de estruturar sua organização.
Um VCS é o melhor amigo do desenvolvedor e desempenha um papel fundamental no ciclo de vida do desenvolvimento com pacotes. Você armazena todas as origens dos pacotes em um repositório de controle de origem onde a fonte da verdade é mantida. Você cria organizações temporárias (de desenvolvimento) a partir dessa origem para trabalhar exclusivamente no seu pacote. Oferecemos recursos de rastreamento de alterações para monitorar o que você criou, atualizou e excluiu na organização de desenvolvimento. Você pode facilmente extrair esse código modificado para seu sistema de arquivos e colocá-lo em seu VCS.
O desenvolvimento com pacotes oferece mais flexibilidade para o gerenciamento de equipes e versões. Você pode atribuir equipes a um determinado pacote. As equipes de desenvolvimento podem desenvolver separadamente e criar uma versão do pacote, e não uma versão de atualizações para a organização. Com esse modelo ágil, é possível ter versões independentes e mais frequentes, como pode ser visto no fluxo de desenvolvimento, criação e implantação.
Para nossos clientes empresariais, temos um tipo de pacote especial, chamado pacotes desbloqueados, que é especialmente adequado para os aplicativos empresariais internos.
Como os pacotes desbloqueados oferecem flexibilidade
Vamos ver como os pacotes desbloqueados alteram a forma como lançamos a personalização do CRM e o aplicativo Time Off Manager.
Neste exemplo, para a primeira versão, você está criando dois projetos novos. Ambos têm a versão 1.0 e podem ser criados e, em seguida, implantados na organização de produção separadamente por meio da API de metadados.
(1) Desenvolvimento |
(2) Criação |
(3) Versão (package.xml) |
---|---|---|
Extensões/personalizações de CRM v1.0 |
Objeto personalizado (adicionar) Campo personalizado (adicionar) Layout de página (adicionar) Fluxo de trabalho (adicionar) |
Objeto personalizado: 1 Campo personalizado: 1 Layout de página: 1 Fluxo de trabalho: 1 |
Aplicativo Time Off Manager v1.0 |
Objeto personalizado (adicionar) Campo personalizado (adicionar) Classe do Apex (adicionar) Página do Apex (adicionar) |
Classe do Apex: 1 Página do Apex: 1 Objeto personalizado: 1 Campo personalizado: 1 |
Na próxima versão, você pode novamente criar e implantar cada versão do pacote de forma independente na organização de produção. Assim, é possível manter versões distintas e diferentes para cada artefato de versão (pacote).
(4) Desenvolvimento |
(5) Criação |
(6) Versão (package.xml) |
---|---|---|
Extensões/personalizações de CRM v1.1 |
Objeto personalizado (atualizar) Fluxo de trabalho (atualizar) |
Objeto personalizado: 1 Campo personalizado (inalterado) Layout de página (inalterado) Fluxo de trabalho: 1 |
Aplicativo Time Off Manager v2.0 |
Objeto personalizado (atualizar) Página do Apex (atualizar) |
Classe do Apex (inalterada) Página do Apex: 1 Objeto personalizado: 1 Campo personalizado (inalterado) |
Esse processo também se aplica à CI e à CD. A criação de pacotes permite criar planos de testes concebidos especificamente para o projeto. Você pode automatizar o plano de testes para garantir um nível contínuo de qualidade executando testes em vários ambientes à medida que a origem é modificada pelo VCS.
Recursos
- Guia do desenvolvedor: Salesforce CLI Command Reference
- Guia do desenvolvedor: Guia do desenvolvedor do Salesforce DX
- Trailhead: Início rápido: Salesforce DX
- Trailhead: Pacotes desbloqueados para o cliente