Um dos principais objetivos da engenharia de software é resolver problemas e gerar valor, mas esse foco pode se perder no atrito diário do desenvolvimento moderno. Uma plataforma interna de desenvolvedores (IDP) é projetada para aliviar o trabalho dos desenvolvedores para que eles possam se concentrar no desenvolvimento de software. O principal objetivo de uma IDP não é apenas lançar software mais rapidamente, mas reduzir o estresse mental dos desenvolvedores criando modelos e automação seguros, eficientes e bem suportados, geralmente chamados de "caminhos ideais", para criar e implantar aplicativos.
Uma plataforma interna para desenvolvedores integra um conjunto selecionado de tecnologias e ferramentas, criadas e mantidas por uma equipe dedicada. Essa pilha geralmente inclui soluções para orquestração de contêineres, ferramentas de infraestrutura como código (IaC) e pipelines de CI/CD com tecnologia de projetos de código aberto.
Uma plataforma interna de desenvolvedores (IDP) deve ser abordada como um produto, com os desenvolvedores como usuários. É fundamental abordar os casos de uso deles, coletar feedback e refinar continuamente a plataforma por meio de iteração. A IDP é a camada que conecta essas ferramentas, abstraindo a complexidade delas para que os desenvolvedores possam realizar tarefas por meio de um modelo simples de autoatendimento. O objetivo é tornar o caminho certo o caminho mais fácil, permitindo que os desenvolvedores criem e enviem com confiança e autonomia.
Carga cognitiva se refere à quantidade total de esforço mental que está sendo usado na memória de trabalho de uma pessoa. Pense nisso como a largura de banda mental que um desenvolvedor tem. Quando essa largura de banda é consumida por tarefas que não envolvem programação, a capacidade de se concentrar na solução de problemas complexos diminui.
Os desenvolvedores costumam ter que alternar entre dezenas de ferramentas, painéis e arquivos de configuração diferentes apenas para implantar uma mudança simples. Cada troca de contexto força o cérebro a carregar um novo conjunto de informações, o que é mentalmente cansativo. Essa constante troca de ferramentas e processos aumenta a carga cognitiva, o que pode levar ao burnout, a mais erros e a uma inovação mais lenta.
A engenharia de plataforma é a disciplina de projetar, criar e manter uma plataforma interna para desenvolvedores. Pense assim: se o IDP é o produto, a equipe de engenharia de plataforma é a equipe de produto responsável pelo ciclo de vida dele. Os clientes deles são os desenvolvedores da organização.
Essa abordagem significa que a plataforma é tratada como qualquer outro produto de software. A equipe de engenharia de plataforma é responsável por entender as necessidades dos desenvolvedores, definir um roteiro e fornecer um conjunto de ferramentas confiável, seguro e fácil de usar.
Uma pergunta frequente é a distinção entre uma plataforma e um portal. Embora os termos às vezes sejam usados de maneira intercambiável, eles representam diferentes camadas da experiência do desenvolvedor. Pense na plataforma interna de desenvolvedores (IDP) como o motor completo, que engloba todas as ferramentas, fluxos de trabalho e infraestrutura que impulsionam seu ciclo de vida de desenvolvimento.
O portal interno de desenvolvedores, por outro lado, é o painel desse mecanismo. É a interface gráfica do usuário (GUI) que oferece aos desenvolvedores um local único e centralizado para acessar os recursos da plataforma. Um portal do desenvolvedor pode ajudar os desenvolvedores a descobrir e usar ferramentas, visualizar documentação, criar novos serviços e verificar o status das builds sem precisar entender o funcionamento interno complexo. Embora um IDP abrangente geralmente inclua um portal do desenvolvedor para melhorar a usabilidade e a capacidade de descoberta, a plataforma em si é o conjunto completo de tecnologias e processos automatizados.
Embora cada empresa tenha necessidades diferentes, a maioria das IDPs é criada com base em alguns componentes principais que trabalham juntos. Esses componentes se concentram em criar um caminho simplificado, seguro e eficiente do desenvolvimento à produção.
A experiência do desenvolvedor é a interface central que abstrai a complexidade da infraestrutura. Geralmente é um portal para desenvolvedores ou uma interface de linha de comando (CLI) que oferece acesso de autoatendimento às ferramentas, documentação e recursos necessários. Por exemplo, plug-ins de IDE como o Cloud Code ajudam os desenvolvedores a escrever e depurar códigos diretamente nas ferramentas que já conhecem, enquanto portais criados com soluções como o Backstage no Google Cloud oferecem uma visão única e consolidada de todo o ecossistema de software.
Os modelos de apps, às vezes chamados de caminhos ideais, oferecem aos desenvolvedores uma estrutura predefinida de práticas recomendadas para novos aplicativos. Esses modelos podem incluir código boilerplate, pipelines de CI/CD configurados, arquivos de infraestrutura como código e painéis de monitoramento. Recursos como o App Design Center podem ajudar as equipes a criar e gerenciar um catálogo desses modelos, garantindo que as práticas recomendadas sejam facilmente descobertas e reutilizadas. Essa abordagem acelera a integração de desenvolvedores e cria consistência em todos os serviços.
Esse componente integra a segurança diretamente ao fluxo de trabalho de desenvolvimento. Ele automatiza a aplicação de políticas de segurança, como gerenciamento de identidade e acesso (IAM), controle de acesso baseado em função (RBAC), políticas de rede, verificação de vulnerabilidades e proteção da infraestrutura. Ao incorporar a segurança na base da plataforma, as equipes podem "deslocar a segurança para a esquerda" e resolver possíveis problemas no início do ciclo de vida de desenvolvimento. Isso evita que a segurança se torne um gargalo pouco antes da produção.
Uma base centrada no aplicativo cria uma camada de abstração padronizada sobre a infraestrutura. Ele fornece um modelo unificado para as principais preocupações operacionais, oferecendo uma abordagem para rede, segurança e observabilidade que funciona em todos os ambientes. Essa consistência simplifica o gerenciamento e reduz a carga cognitiva dos desenvolvedores, que não precisam se preocupar com os detalhes exclusivos de cada destino de implantação, como uma configuração específica de cluster do Google Kubernetes Engine (GKE).
Um IDP gerencia os ambientes de execução do aplicativo em que o código é executado. Esses ambientes de execução podem ser plataformas de orquestração de contêineres como o GKE, plataformas sem servidor como o Cloud Run ou outros ambientes de computação. O IDP automatiza o provisionamento, a configuração e a manutenção desses ambientes de execução. Isso permite que os desenvolvedores implantem os aplicativos de maneira rápida e confiável sem precisar de conhecimento profundo dos serviços de computação subjacentes.
A plataforma de aplicativos em nuvem é o conjunto integrado de serviços em nuvem que serve como base para toda a IDP. Ele reúne computação, armazenamento, rede, APIs do Cloud, ferramentas de CI/CD e observabilidade em um sistema coeso. A criação de um IDP em uma base abrangente como o Google Cloud pode permitir que as equipes aproveitem serviços gerenciados e avançados para acelerar o desenvolvimento, melhorar a confiabilidade e garantir que a plataforma possa ser escalonada para atender à demanda.
A adoção de uma plataforma interna para desenvolvedores pode oferecer vantagens significativas para organizações de engenharia.
Experiência de desenvolvimento aprimorada
Ao reduzir a carga cognitiva e fornecer fluxos de trabalho simples de autoatendimento, os IDPs podem ajudar a melhorar a experiência do desenvolvedor.
Maior rapidez no tempo de lançamento
A automação e a padronização podem ajudar a acelerar o processo de criação e implantação de software, permitindo que as equipes entreguem valor aos clientes com mais rapidez.
Maior confiabilidade e consistência
Os IDPs podem ajudar a aplicar práticas recomendadas por meio de caminhos ideais e podem levar a implantações de aplicativos mais consistentes e confiáveis.
Segurança e compliance aprimorados
As políticas de segurança podem ser incorporadas diretamente aos modelos e fluxos de trabalho automatizados da plataforma, garantindo que todos os novos serviços atendam aos requisitos de compliance desde o início.
Maior autonomia dos desenvolvedores
A centralização do gerenciamento da plataforma pode ajudar a liberar os desenvolvedores para que eles se concentrem nos recursos e dá a eles autonomia para gerenciar o ciclo de vida dos aplicativos.
Para ver como uma IDP funciona na prática, vamos analisar um exemplo comum de plataforma interna de desenvolvedores usando o Google Cloud. Imagine que um desenvolvedor precisa criar um novo microsserviço que requer o próprio banco de dados e pipeline de CI/CD.
O desenvolvedor precisaria criar manualmente um Cloud Source Repository, escrever um módulo do Terraform para provisionar um banco de dados do Cloud SQL, criar e configurar um arquivo de implantação do Google Kubernetes Engine (GKE) (YAML), configurar um novo gatilho no Cloud Build e gerenciar as permissões do IAM para tudo. Isso pode levar dias e envolver várias equipes.
O processo é muito mais simples.
Solicitação do portal: o desenvolvedor faz login no portal do desenvolvedor e encontra um modelo pré-criado para um "microsserviço Python com um banco de dados do Cloud SQL".
Entradas simples : eles preenchem um formulário curto com o nome do serviço e o nome da equipe.
O orquestrador entra em ação: o desenvolvedor clica em "Criar" e o orquestrador da plataforma assume o controle.
Ações automatizadas: nos bastidores, o orquestrador realiza uma série de tarefas automatizadas usando as APIs do Google Cloud:
Conclusão: o processo é concluído em minutos. O desenvolvedor recebe uma notificação com links para o novo repositório, o aplicativo em execução no ambiente de preparo do GKE e as credenciais do banco de dados, tudo sem escrever uma única linha de configuração.
Para saber mais sobre os conceitos e tecnologias que compõem uma plataforma interna de desenvolvedores, confira estes recursos adicionais:
Comece a criar no Google Cloud com US$ 300 em créditos e mais de 20 produtos do programa Sempre gratuito.