Compartilhar via


Topologias de equipes do DevOps

A distribuição de funções, responsabilidades e confiança entre as equipes de TI e as equipes de aplicativos é fundamental para a transformação operacional envolvida na adoção de nuvem em escala.

As equipes de TI se empenham em manter o controle. Os proprietários de aplicativo buscam maximizar a agilidade. O equilíbrio que você finalmente estabelece entre essas duas metas influencia muito o sucesso do modelo operacional de nuvem.

De acordo com a lei de Conway, as equipes produzem Arquiteturas com base na estrutura de comunicação. Entender esse princípio é fundamental, à medida que você trabalha para alcançar o equilíbrio necessário entre autonomia e controle. Qualquer organização que cria um sistema (definido amplamente) produzirá uma estrutura de design que é uma cópia da estrutura de comunicação dessa organização.

Diagrama ilustrando a Lei de Conway.

Do ponto de vista do DevOps, as organizações devem otimizar a resposta rápida às necessidades do cliente. As equipes que possuem, criam e implementam os aplicativos e sistemas encontram o nível mais alto de autonomia em arquiteturas com as seguintes características:

  • Arquitetura evolutiva que permite mudanças constantes
  • Capacidade de implantação
  • Capacidade de teste

A solução de Conway é superar a lei de Conway. Se a organização seguir uma estrutura específica para produzir serviços e produtos e estiver em busca de otimização, você precisa repensar a estrutura organizacional. Desenvolva a equipe e a estrutura organizacional para alcançar a arquitetura desejada.

Diagrama da Manobra Reversa de Conway.

Esse princípio leva a topologias de equipe criadas intencionalmente, nas quais as equipes são responsáveis pelos aplicativos, sistemas ou plataformas de ponta a ponta que possuem para realizar a disciplina completa do DevOps.

A tabela a seguir fornece uma categorização simplificada dessas equipes.

Tipo de equipe Definição
Equipes de carga de trabalho de aplicativo Essas equipes criam aplicativos que geram resultados do negócios diretos para um segmento do domínio de negócios. No contexto das Zonas de Destino do Azure, essas equipes são responsáveis pelo ciclo de vida de ponta a ponta das cargas de trabalho do aplicativo.
Equipes de plataforma Essas equipes criam plataformas internas interessantes para acelerar a entrega e reduzir a carga cognitiva das equipes de carga de trabalho de aplicativo. No contexto das Zonas de Destino do Azure, essas equipes são responsáveis pelo ciclo de vida de ponta a ponta da Zona de Destino do Azure.
Equipes de capacitação Essas equipes ajudam a superar lacunas de habilidades, auxiliando outras equipes com recursos especializados, como o DevOps.

Considerações sobre o design

  • Estabeleça uma equipe de plataforma multifuncional para projetar, criar, provisionar, gerenciar e manter seu ciclo de vida da Zona de Aterrissagem do Azure. Essa equipe pode incluir membros da equipe de TI central, de segurança, de conformidade e unidades de negócios para garantir que um amplo espectro da empresa seja representado. Evite antipatterns.

  • Estabeleça uma equipe de capacitação que possa fornecer funções de DevOps para dar suporte a aplicativos e plataformas que não têm recursos de DevOps existentes ou um caso de negócios para estabelecer um (por exemplo, aplicativos herdados com recursos de desenvolvimento mínimos).

  • Não restrinja as equipes de carga de trabalho de aplicativo a artefatos centrais, pois isso pode prejudicar a agilidade. Você pode usar a governança controlada por políticas e o RBAC do Azure (controle de acesso baseado em função do Azure) para impor configurações de linha de base consistentes e garantir que as equipes de aplicativo (unidade de negócios) sejam flexíveis o suficiente para inovar, mas ainda assim capazes de extrair de um conjunto predefinido de modelos.

  • Não force as equipes de aplicativo a usar um processo ou pipeline de provisionamento central para a instanciação ou o gerenciamento de recursos de aplicativos. As equipes existentes que já contam com um pipeline de DevOps para entrega de aplicativos ainda podem usar as ferramentas atuais. Lembre-se, você pode usar a Política do Azure ajuda a impor padrões organizacionais e a avaliar a conformidade em escala e abordar considerações de segurança para seus processos de DevOps.

  • A aplicação ampla de um modelo de DevOps não estabelece instantaneamente equipes de DevOps capacitadas.

  • O investimento em funcionalidades e recursos de engenharia é essencial.

  • As equipes de aplicativo de alguns aplicativos herdados podem não ter os recursos de engenharia necessários para se alinhar a uma estratégia de DevOps.

Recomendações sobre design

As seções a seguir contêm recomendações de design para orientar você durante o design das topologias de equipe.

Alinhar topologias de equipe com o modelo operacional de nuvem

Alinhe as topologias de equipe com o modelo operacional de nuvem desejado.

Estabeleça um processo principal para revisões de aptidão operacional para que você entenda completamente os problemas que podem resultar das estruturas de equipe.

Definir funções para a equipe de plataforma

A lista a seguir fornece um conjunto recomendado de funções para a equipe de plataforma responsável pelas Zonas de Destino do Azure:

  • Governança de arquitetura
  • Provisionamento de assinatura e delegação da rede necessária, políticas de gerenciamento de identidades e acesso
  • Gerenciamento e monitoramento de plataforma (holístico)
  • Gerenciamento de custos (holístico)
  • Plataforma como código (gerenciamento de modelos, scripts e outros ativos)
  • Operações gerais no Microsoft Azure em seu locatário do Microsoft Entra (gerenciamento de entidades de serviço, registro da API do Microsoft Graph e definições de função)
  • RBAC do Azure (holístico)
  • Gerenciamento de chaves para serviços centrais (protocolo de transferência de email simples e controlador de domínio)
  • Gerenciamento de políticas e imposição (holístico)
  • Monitoramento e auditorias de segurança (holístico)
  • Gerenciamento de rede (holístico)

Definir funções para as equipes de carga de trabalho de aplicativo

A lista a seguir fornece um conjunto recomendado de funções para as equipes de aplicativo responsáveis pelas cargas de trabalho de aplicativo:

  • Criação e gerenciamento de recursos de aplicativo por meio de um modelo de DevOps
  • Gerenciamento de banco de dados
  • Migração ou transformação de aplicativos
  • Gerenciamento e monitoramento de aplicativos (recursos de aplicativos)
  • RBAC do Azure (recursos de aplicativos)
  • Monitoramento e auditorias de segurança (recursos de aplicativos)
  • Gerenciamento de segredos e chaves (chaves de aplicativo)
  • Gerenciamento de custos (recursos de aplicativos)
  • Gerenciamento de rede (recursos de aplicativos)

Definir funções para equipes de capacitação

A lista a seguir fornece um conjunto de funções recomendado para uma equipe de capacitação responsável por ajudar as outras equipes:

  • Definição de diretrizes e funcionalidades horizontais (entre funções) para ajudar a adquirir o conhecimento certo em toda a organização, o que garante o alinhamento com o modelo operacional de nuvem de destino geral (como o DevOps)
  • Suporte, treinamento e orientação para que outras equipes acessem o nível necessário de conhecimento
  • Estabelecimento de um conjunto comum de modelos e bibliotecas reutilizáveis para suas equipes de aplicativos ou plataformas e promoção do InnerSourcing, como módulos verificados do Azure.

Definir modos de interação entre equipes

As metas de interações entre as equipes são:

  • Obter autonomia
  • Desbloquear dependências
  • Minimizar a perda de tempo
  • Evitar gargalos

As Topologias de Equipe descrevem três modos de interação de equipe:

Modelo de interação Descrição
Colaboração As equipes trabalham em conjunto.
X-as-a-Service As equipes consomem ou fornecem algo a outras equipes com colaboração mínima, semelhantemente às interações com fornecedores de terceiros.
Facilitação As equipes ajudam ou são ajudadas por outra equipe para remover os impedimentos.