Capacite os desenvolvedores por meio do autoatendimento com proteções

O autoatendimento com proteções é o princípio de capacitar as equipes de desenvolvimento a tomar suas próprias decisões dentro de um conjunto de parâmetros bem definidos, ou proteções. As proteções são estabelecidas e acordadas pelas principais partes interessadas. As partes interessadas podem incluir equipes de segurança, operações e arquitetura em toda a organização.

Com o autoatendimento com proteções, as equipes de desenvolvimento mantêm autonomia para tomar decisões de desenvolvimento de forma independente. A automação e a política ajudam as partes interessadas a garantir que a segurança, a conformidade, as operações, os padrões e os custos sejam gerenciados adequadamente. Habilitar essa automação requer colaboração entre as linhas da equipe para que desenvolvedores, operadores e especialistas possam fazer mais, sem sacrificar a governança necessária. Os desenvolvedores podem se concentrar em fornecer valor comercial o mais rápido possível.

[Dizemos aos desenvolvedores] não se preocupem nem um pouco sobre como tudo funciona, apenas ative-os ou desative-os, preencha-os, coloque uma string no que você precisar fazer e é basicamente autoatendimento a esse respeito, onde eles têm um arquivo leia-me e eles têm entradas, saídas e eles podem colocar o que quiserem. - Daniel, engenheiro de nuvem, empresa de mídia da Fortune 500

O objetivo de fornecer uma experiência de autoatendimento para seus caminhos pavimentados é reduzir o trabalho do desenvolvedor e, ao mesmo tempo, fornecer visibilidade às equipes de desenvolvimento, operações e gerenciamento. A ideia é que você crie uma experiência para uma determinada tarefa que tenha uma curva de aprendizado mínima, graças em parte aos recursos subjacentes de automação e agregação de dados. Além de atividades como provisionamento de infraestrutura, essas experiências podem fornecer acesso a recursos críticos para observabilidade, política, gerenciamento de incidentes e muito mais. A ideia se estende à descoberta e compartilhamento de APIs internas, SDKs, juntamente com ferramentas e serviços compartilhados. Essas experiências reduzem a sobrecarga para que as equipes de desenvolvimento possam se concentrar em fazer as coisas.

As plataformas internas de desenvolvedores capacitam os desenvolvedores a agir como clientes de vitrines digitais

As plataformas internas de desenvolvedor fornecem recursos semelhantes às vitrines digitais business-to-business. As lojas digitais são inerentemente projetadas para ajudar seus clientes a se auto-atenderem. Eles podem lidar com mais rendimento do que as vitrines tradicionais porque fornecem maneiras de descobrir e atender itens interessantes sem precisar falar com ninguém. Usando essa analogia, os desenvolvedores são o cliente e a plataforma interna do desenvolvedor fornece experiências de autoatendimento semelhantes. Assim como um varejista, operadores, engenheiros de plataforma e outras funções, configure um catálogo de itens que os desenvolvedores podem solicitar projetados para acomodar proteções organizacionais.

Por exemplo, você pode pensar em um desenvolvedor solicitando acesso a uma nova ferramenta como se estivesse fazendo um pedido de vitrine digital. Como um pedido, uma vez que a solicitação é enviada, o desenvolvedor deseja acompanhar o progresso e saber quando ele está concluído. Nos bastidores, a solicitação deve ser encaminhada automaticamente para o provedor de atendimento correto para atender à necessidade. Você pode pensar em um de seus sistemas de integração e entrega contínuas (CI/CD) como um provedor de atendimento, uma ferramenta GitOps ou uma plataforma de aplicativo prescritiva como um segundo e uma ferramenta de automação de fluxo de trabalho para processos manuais como um terceiro. Em todos os casos, o desenvolvedor pode auto-atender itens de um catálogo bem definido da mesma maneira.

Use o padrão tudo como código

Usar a infraestrutura como código (IaC) por meio de pipelines de entrega contínua (CD) e ferramentas GitOps é uma parte importante da habilitação do autoatendimento. A IaC com CD permite que você use gráficos Bicep, Terraform, Helm e outras ferramentas para criar e destruir recursos de nuvem sob demanda. Como a configuração de sua infraestrutura de nuvem é gerenciada como código em um repositório de código-fonte, você pode aplicar todos os benefícios de um repositório Git, como segurança e capacidade de auditoria.

O provisionamento de infraestrutura e ferramentas comuns não é a única vantagem de uma abordagem de IaC. Você pode adaptar o padrão como código para outros cenários, incluindo segurança como código e política como código (por meio de ferramentas como Azure Policy e Open Policy Agent). Seguindo essa técnica, um arquivo de configuração, normalmente YAML ou JSON, é enviado para o repositório, momento em que um fluxo de trabalho é disparado para processar o arquivo. Esses arquivos podem ser um repositório de aplicativos como dependabot.yml ou CODEOWNERS, ou podem ser mantidos em um repositório central separado. Você pode até estender isso para seus próprios cenários para realmente tornar tudo como código (EaC) uma realidade.

Os desenvolvedores podem fazer referência a cada um desses modelos de EaC com um catálogo central que potencializa suas experiências de autoatendimento e incentiva as práticas recomendadas por padrão.

Crie modelos de comece certo e estabeleça uma governança de permanência certa

No desenvolvimento de software, buscamos encapsulamento, modularidade e composição ao projetar aplicativos. Você deve aplicar essa mesma linha de pensamento à engenharia de plataforma por meio de modelos. Por exemplo, você pode criar e usar um conjunto de modelos de IaC reutilizáveis e protegidos centralmente como blocos de construção para infraestrutura.

Vamos construir módulos para nossos [desenvolvedores]... Então, em vez de ter que escrever ou se preocupar com qualquer back-end, tudo o que eles precisam fazer é se preocupar com o código do aplicativo. - Daniel, engenheiro de nuvem, empresa de mídia da Fortune 500

Combine IaC, EaC e modelos de aplicativo em uma solução personalizada de tudo como código (EaC) que se estende a outras atividades, como criar um repositório de código-fonte, semear código de exemplo ou fornecer configuração e código de exemplo para ferramentas de observabilidade recomendadas. Esses modelos de IaC, EaC e aplicativo podem ser armazenados ou referenciados de um local central e seguro, como um repositório, o catálogo no ADE (Ambientes de Implantação do Azure) ou o ACR (Registro de Contêiner do Azure) para nativo de nuvem.

Quando os modelos de início certo são combinados com governança, verificação e configuração de política automatizadas, os desenvolvedores permanecem desde o primeiro dia.

Gráfico da engenharia da plataforma comece bem e fique à direita visão geral do modelo.

Os modelos simplificam o desenvolvimento com práticas automatizadas e seguras

Use modelos de aplicativo para inicializar seus caminhos pavimentados definidos para várias decisões e ações importantes que os desenvolvedores tomam ao longo de um projeto. Os modelos Start right estabelecem práticas de desenvolvimento seguras e controladas e permitem que os desenvolvedores comecem rapidamente, permitindo a automação que fornece acesso às ferramentas de que precisam, configura pipelines de CI/CD, provisiona a infraestrutura e a pilha de aplicativos e configura um repositório completo com código-fonte clichê que inclui SDKs necessários ou referências a APIs.

Ao fazer com que esses modelos de aplicativo façam referência a outros modelos centralizados (por exemplo, modelos de IaC), cada um desses blocos de construção individuais se torna seus próprios modelos de início. Esses modelos são fundamentais para permitir experiências de autoatendimento, pois não apenas definem as saídas, mas também as opções disponíveis que os desenvolvedores escolhem.

Os modelos garantem governança, segurança e otimização de custos

No entanto, os modelos devem fazer mais do que apenas inicializar um esforço de desenvolvimento. Eles também devem estabelecer o controle e a governança por meio de políticas e verificações de segurança necessárias para permanecer ao longo do ciclo de vida do projeto. Como outro exemplo, os modelos podem configurar regras de proteção de ramificação, impedindo mesclagens não autorizadas na produção. Como os modelos capturam as melhores práticas e configurações comuns, eles são uma das principais técnicas para otimizar os custos entre ferramentas, fornecedores e equipes.

Execute campanhas de acerto para criar comunicação bidirecional

Por fim, à medida que sua confiança em seus caminhos pavimentados aumenta, você pode usar os blocos de construção individuais subjacentes que você montou em seus modelos de aplicativo para mover aplicativos existentes para um caminho pavimentado. Como seus clientes internos já verão o valor de seus caminhos pavimentados pilotos, você pode executar uma campanha interna para criar um diálogo bidirecional com outras equipes de aplicativos. Os desenvolvedores podem aprender a migrar seus aplicativos enquanto a equipe de engenharia da plataforma aprende simultaneamente mais sobre como melhorar a plataforma para eles.

Trace sua própria jornada

Dada a amplitude de experiências que seus recursos de autoatendimento podem abranger, é um foco importante para seus esforços de investimento e planejar e priorizar para que sua plataforma de desenvolvedor interna agregue valor de forma incremental. A jornada de cada organização na criação de sua plataforma interna de desenvolvedor é diferente, e seguir uma mentalidade de produto ajuda você a direcionar os locais mais críticos que precisam de experiências de autoatendimento primeiro.