Compartilhar via


Melhore a capacidade de descoberta com inventários e rastreamento de relacionamento

À medida que sua organização cresce, também cresce a quantidade de coisas que você precisa acompanhar. Não é incomum encontrar esforços duplicados porque uma equipe não sabe sobre a outra. À medida que as pessoas se movem entre as equipes, novas pessoas entram na empresa e outras saem, os projetos podem se tornar órfãos. Os inventários ajudam a resolver esses problemas.

Um inventário de uma ferramenta ou sistema usado para rastrear, gerenciar e organizar os ativos técnicos de uma organização. Esses ativos incluem código, APIs, contêineres, máquinas virtuais (VMs), permissões de equipe e muito mais.

Não acompanhar os ativos pode levar à expansão técnica e ao desperdício simplesmente porque você não pode descobrir facilmente o que já existe. Perder o controle do que já existe é um desafio comum. Por exemplo, considere esta citação:

Temos uma tonelada de contêineres ou instâncias [VM] em execução. Podemos excluir nossas VMs antigas? Ninguém sabe. Precisamos encontrar uma maneira de limpar coisas antigas e usar tags adequadas para que saibamos quem é o proprietário ou a equipe que pode nos informar sobre o que podemos fazer e qual é o ciclo de vida.... Não sabemos se podemos desligar uma VM específica porque não temos certeza do que acontecerá. - Martin, engenheiro de DevOps, grande empresa de logística

Como os inventários personalizados melhoram o rastreamento, a segurança e a reutilização

Parte do que você precisa é de um inventário que forneça ajuda para rastrear todas as "coisas" que você criou ou construiu em seu ecossistema que os clientes internos podem visualizar de maneira compreensível.

Um inventário pode melhorar a segurança, promover a reutilização e, em geral, facilitar a descoberta. Existem diferentes ferramentas disponíveis para rastrear diferentes tipos de ativos. Cada uma dessas ferramentas fornece um inventário para ajudá-lo a gerenciar, rastrear e limpar resíduos.

As ferramentas de rastreamento disponíveis incluem:

  • Os Ambientes de Implantação do Azure permitem que você acompanhe a infraestrutura complexa criada por meio da IaC (infraestrutura como código) como um ambiente abstrato
  • O Centro de API do Azure fornece uma maneira para os desenvolvedores descobrirem e consumirem APIs.
  • Registros de pacotes como GitHub Packages ou Azure Artifacts (ou outros inventários de pacotes e SDKs aprovados) melhoram a segurança da cadeia de suprimentos.

Ao decidir sobre a visibilidade de seus estoques, considere a melhor abordagem para sua organização. Algumas organizações permitem que todos os desenvolvedores vejam ativos de software, mas apenas alguns podem modificá-los, semelhante a uma cozinha aberta. Outros, especialmente em setores regulamentados, restringem o acesso com mais força, às vezes até limitando a visibilidade aos nomes dos projetos devido à sensibilidade.

Usar relacionamentos para ajudar na descoberta e no rastreamento

Ter um ou mais sistemas de inventário que ajudam a rastrear o que você tem é fundamental para as práticas de engenharia da plataforma e evitar a expansão técnica. Inicialmente, ter um conjunto de listas de inventário simples pode ser suficiente. No entanto, você também pode melhorar a capacidade de descoberta adicionando relacionamentos entre diferentes ativos em vários inventários. Independentemente do nível de visibilidade necessário, ter um ponto de agregação centralizado permite que as equipes pesquisem e descubram rapidamente todos os ativos disponíveis para elas. Isso promove a reutilização, reduz a redundância e estabelece uma abordagem consistente para a governança.

Considere a relação entre uma definição de API e o código do aplicativo implantado que implementa a interface. Esse código é armazenado em um repositório e gerenciado por uma equipe e fornece documentação sobre seu uso. Ambientes de desenvolvimento, teste, produção e até mesmo ambientes de sandbox temporários são criados. Em cenários nativos de nuvem, os ambientes podem ser implantados em um cluster compartilhado do Kubernetes. A equipe de desenvolvimento que cria a API e todos os consumidores internos dela precisam ser capazes de obter informações sobre cada uma dessas coisas, mas como os recursos se relacionam não é óbvio.

Para começar, você pode usar algo tão simples quanto uma página wiki para ajudar a rastrear como cada coisa se relaciona entre si. Mas a documentação envelhece rapidamente e pode ser difícil encontrar e analisar. Idealmente, você teria um sistema com um gráfico de relacionamento que pode alimentar as interfaces do usuário para percorrer esses relacionamentos em seu inventário. Para realmente melhorar a capacidade de descoberta, você precisará ser capaz de associar coisas armazenadas em vários tipos de inventários ou gráficos. Talvez você não precise consumir inventários diretamente, mas provavelmente desejará associá-los a informações em um sistema de catálogo de API.

Para usar a analogia da loja digital, também pode ser útil associar os itens (modelos) em seu catálogo ao conteúdo do inventário resultante. Por exemplo, se você perceber que um de seus modelos cria uma configuração insegura, precisará encontrar rapidamente todos os recursos que foram criados no modelo para corrigi-los. Mesmo os modelos de aplicativo para começar bem são essencialmente pacotes de kit inicial neste catálogo que se vinculam a outros tipos de itens de catálogo (como modelos de IaC). O rastreamento dessas associações permitiria que você localizasse proativamente qualquer aplicativo que fizesse referência a um modelo de IaC inválido, mesmo que nenhuma infraestrutura tenha sido provisionada ainda.

Uma variação simplificada desse gráfico conceitual de plataforma de desenvolvedor de alto nível pode ser encontrada em alguns kits de ferramentas e produtos hoje, embora o nome varie. Por exemplo, o kit de ferramentas do portal de software livre Backstage.io chama isso de catálogo de software, enquanto outros produtos usam termos diferentes. No entanto, a maioria desses produtos e kits de ferramentas pressupõe que você esteja usando seu conjunto de recursos mais amplo e exige que o conteúdo de seus inventários seja duplicado dentro deles. Essa duplicação significa que o conteúdo do banco de dados de catálogo não é específico do usuário, pode se tornar obsoleto e não é controlado pelos mecanismos de autorização do usuário do sistema de origem real. No entanto, isso pode funcionar bem para sua organização se você estiver seguindo uma abordagem de cozinha aberta.

Saiba mais sobre os conceitos que podem ajudar.