Definir o espaço do problema
À medida que você avança para definir sua plataforma de desenvolvedor interna, você precisa definir sua plataforma viável mais fina (TVP) primeiro. Um TVP é uma variação da ideia de um produto mínimo viável (MVP) no gerenciamento clássico de produtos.
Este diagrama pode ajudá-lo a orientar seu pensamento sobre como sua plataforma de desenvolvedor pode evoluir ao longo do tempo. Lembre-se de que o principal problema da sua organização pode fazer com que você se desvie do que é descrito aqui devido aos seus investimentos existentes ou necessidades organizacionais. Você não precisa passar para o próximo estágio, a menos que sua organização precise.
Se você está começando do zero, isso representa uma progressão comum. Nos estágios iniciais, concentre-se na descoberta dos recursos necessários, na análise de lacunas de ajuste de produtos embalados e na criação de ferramentas de número mínimo ou recursos de plataforma. Em seguida, à medida que você escala, provavelmente começará a se concentrar na reutilização e a orientar as pessoas por caminhos pavimentados predefinidos com ativos reutilizáveis. Por fim, você avança para um modelo de "loja digital" semelhante ao do consumidor para facilitar a criação e a manutenção de aplicativos. Você deve seguir uma mentalidade de produto o tempo todo, por isso não recomendamos pular para o final e sua jornada específica variar. Esses estágios finais se assemelham mais ao "produto" embrulhado no sentido tradicional, mas este é um destino, não um ponto de partida.
Áreas temáticas de engenharia de plataforma
Dado o tamanho deste tópico, recomendamos dividir como você fala sobre engenharia de plataforma internamente em quatro áreas de tópicos:
Sistemas de engenharia: uma combinação selecionada de pacotes de DevOps, como GitHub e Azure DevOps, e outras ferramentas e serviços de desenvolvedor. Além de ferramentas e serviços críticos de DevOps, como CI/CD ou gerenciamento de pacotes, essa área também inclui recursos usados diretamente durante o processo de codificação, como ambientes de codificação baseados em nuvem, scanners e litros de código e assistentes de IA, como o GitHub Copilot.
Plataforma de aplicativos: uma seleção selecionada de serviços (como IaaS, PaaS e observabilidade) que visam cada "pilha de aplicativos" (classe de aplicativo, modelo de aplicativo, linguagens) que uma organização deseja usar para agregar valor comercial. Isso inclui uma combinação de serviços específicos da pilha de aplicativos, juntamente com serviços comuns usados por toda parte. Um exemplo de uma plataforma de aplicativo pode incluir Aplicativos de Contêiner do Azure, Cosmos DB para armazenamento, Azure Key Vault para segredos, para controle de acesso baseado em identidade e função, Azure Policy para conformidade e auditoria, observabilidade por meio do Grafana e uma topologia de rede relacionada.
Modelos de aplicativo: um conjunto de modelos de início rápido bem definidos, criados pela organização, que encapsulam a orientação de início certo e de permanência correta para uma determinada plataforma de aplicativo, linguagem e conjunto de sistemas de engenharia. Eles podem fazer referência a outros modelos centralizados e fornecer código inicial, referências de API e SDK, pipelines de CI/CD, configuração de ferramentas e muito mais.
Recursos de autoatendimento do desenvolvedor: essa é a cola para o esforço de engenharia da plataforma. É uma combinação de APIs, orquestradores, um catálogo, modelos e experiências do usuário projetadas para reduzir o trabalho do desenvolvedor e permitir que as equipes de desenvolvimento se auto-atendam e sejam mais autônomas, enquanto ainda aderem às seleções e orientações/governança das três áreas anteriores.
A integração de sistemas de engenharia, plataformas de aplicativos, modelos de aplicativos e recursos de autoatendimento do desenvolvedor forma a base de uma estratégia de engenharia de plataforma. Ao combinar ferramentas de DevOps, serviços em nuvem e recursos de autoatendimento, as organizações podem reduzir significativamente o trabalho do desenvolvedor, aumentar a produtividade e garantir a conformidade com os padrões de governança.