Shutterstock.com/Roman Samborskyi

A engenharia de plataforma é o processo de projetar e implementar cadeias de ferramentas que melhoram a experiência de entrega de software. Os engenheiros da plataforma configuram uma infraestrutura automatizada e controles de autoatendimento que permitem que os desenvolvedores trabalhem com mais eficiência.

A engenharia de plataforma é uma evolução do DevOps. O DevOps estabelece princípios para acelerar o desenvolvimento por meio de automação, autonomia e colaboração. Essas qualidades também são essenciais para a engenharia de plataforma, portanto, a técnica ajuda você a obter um bom desempenho de DevOps.

Entenda o DevOps

O DevOps aproxima as equipes de desenvolvimento e operações. Ele se concentra no uso de ferramentas, sistemas e processos iterativos para reduzir os ciclos de feedback. Estratégias bem-sucedidas de DevOps aceleram o desempenho de sua equipe sem comprometer a qualidade.

DevOps é um conceito aberto. Diferentes organizações combinarão conjuntos exclusivos de ferramentas e metodologias para criar sua própria implementação. No entanto, a ênfase no desempenho, na qualidade e na unificação do desenvolvimento e das operações é uma característica constante em todas as organizações.

Tradicionalmente, o desenvolvimento e as operações eram administrados por equipes separadas, sem canal de comunicação direto. Os desenvolvedores escreveram o código enquanto os operadores provisionavam a infraestrutura, lançavam implantações e monitoravam os problemas. Esse modelo não pode acomodar a escala de aplicativos modernos, que podem incluir centenas de microsserviços independentes. Os desenvolvedores precisam de acesso de autoatendimento a ambientes de produção para que possam testar novos componentes em um ambiente realista. É aqui que entra a engenharia de plataforma.

O papel da engenharia de plataforma

As equipes de engenharia de plataforma são responsáveis ​​por estabelecer ferramentas e processos que ajudam os desenvolvedores a serem mais produtivos. Eles projetam a “plataforma” contra a qual os desenvolvedores constroem. Na prática, os engenheiros de plataforma normalmente executam as seguintes tarefas:

  • Infraestrutura de provisionamento, como ambientes de teste, pipelines de CI e sistemas de teste automatizados para uso dos desenvolvedores.
  • Crie APIs e processos internos para rastrear o status das alterações e automatizar implantações.
  • Entre em contato com a equipe de operações para garantir que a infraestrutura de desenvolvimento corresponda com precisão à produção.
  • Implemente proteções de segurança, confiabilidade e conformidade que identificam códigos problemáticos antes de serem mesclados.
  • Forneça controles de autoatendimento sobre os itens acima, para que os desenvolvedores possam criar ambientes de teste, executar testes e realizar auditorias de segurança sob demanda, sem esperar por outras equipes.

Este trabalho produz uma plataforma que reduz a carga de trabalho dos desenvolvedores. As tediosas partes periféricas da entrega de software são movidas para a plataforma gerenciada, permitindo que os engenheiros se concentrem na criação de novos recursos. A equipe pode seguir em frente, enviando mais código para os clientes dentro das proteções da plataforma.

As funções dedicadas de engenharia de plataforma normalmente são encontradas apenas em organizações maiores. Você precisa de um pool grande o suficiente de engenheiros disponíveis antes de poder dedicar alguns deles à construção de plataformas internas. No entanto, equipes menores ainda podem se beneficiar do modelo de engenharia de plataforma. Em sua forma mais pura, a engenharia de plataforma é simplesmente otimizar seu ambiente de desenvolvimento. Tente reservar algumas horas por semana para criar ferramentas e processos que resolvam os gargalos em seu fluxo de trabalho.

As melhores plataformas internas se comportam um pouco como uma solução PaaS privada. Eles agrupam todos os recursos que os desenvolvedores exigem em interfaces convenientes, como CLI, interface do usuário da web e pipelines automatizados. A plataforma elimina a sobrecarga de criação de software para que os desenvolvedores possam se concentrar no código. Isso reduz a distração, diminui a carga cognitiva e facilita hábitos de trabalho mais produtivos.

Como surgiu a engenharia de plataforma?

A engenharia de plataforma surgiu como resultado da crescente complexidade dos aplicativos modernos. Hoje, os aplicativos geralmente são construídos a partir de vários componentes fracamente acoplados que são executados em ambientes distribuídos. O provisionamento e a manutenção da arquitetura podem ser um procedimento de várias etapas que requer conhecimento especializado.

Os desenvolvedores estão predominantemente preocupados em escrever código que permite novos recursos de negócios. A tarefa de gerenciar a plataforma depende das operações. Embora o DevOps aproxime os dois, pode ser irreal esperar que desenvolvedores individuais sejam capazes de implementar a pilha completa quando precisam de um novo ambiente de teste. Em alguns setores regulamentados, isso pode até ser proibido pelos controles de conformidade.

A engenharia de plataforma aborda o problema fornecendo aos desenvolvedores acesso de autoatendimento a ambientes gerenciados por uma equipe dedicada. Os desenvolvedores podem parar de se preocupar com infraestrutura, pipelines e criar scripts que não fazem parte de suas descrições de trabalho. Os líderes de negócios e a equipe de conformidade podem relaxar sabendo que todos os ambientes são criados de maneira padronizada.

Engenharia de plataforma x DevOps

A engenharia de plataforma é melhor vista como uma progressão lógica do DevOps. É uma abordagem concreta que você pode usar para maximizar o sucesso do DevOps. Lidar com os pontos problemáticos do desenvolvedor aumentará o desempenho e fornecerá novas oportunidades para colocar medidas de segurança em seu código.

A engenharia de plataforma dá aos desenvolvedores autonomia para que eles possam acessar ferramentas sob demanda, sem esperar por colegas ou realizar tarefas tediosas. Ele depende muito da automação e forma uma ponte para as operações, cumprindo dois outros princípios do DevOps. Ajudar sua equipe principal de produtos a se concentrar em novos recursos de negócios é uma maneira garantida de reduzir o tempo de espera e responder melhor às solicitações dos clientes.

No entanto, DevOps é mais do que apenas engenharia de plataforma. Você ainda precisará de outras ferramentas e processos para dar suporte às suas equipes, desde a ideia até a produção. A engenharia de plataforma é um componente focado no desenvolvedor da estratégia DevOps, mas outros, como trabalho enxuto, adesão da equipe e observabilidade detalhada, não são menos importantes.

Engenharia de Plataforma e SRE

A engenharia de confiabilidade do site (SRE) é frequentemente discutida no contexto do DevOps e da engenharia de plataforma. As equipes de SRE têm a tarefa de manter a confiabilidade de seus serviços. Eles usam metas de nível de negócios como SLOs, SLAs e orçamentos de erro para identificar quando o serviço fica aquém das expectativas do usuário. Isso deve sinalizar as equipes de engenharia para parar de trabalhar em novos recursos e priorizar melhorias de estabilidade.

As equipes de plataforma geralmente se sobrepõem aos engenheiros de SRE. Ambas as funções provisionam e mantêm ambientes de software por meio da automação. No entanto, há uma diferença significativa na intenção. Enquanto o SRE se concentra em atender constantemente aos requisitos do usuário, a engenharia de plataforma trata de atender às necessidades do desenvolvedor. Embora você deva prestar atenção em ambas as áreas, a engenharia de plataforma geralmente é uma prioridade menor do que o SRE.

Um pipeline que não funciona corretamente em uma plataforma de desenvolvedor será inconveniente e causará atrasos em seu processo de DevOps, mas não deve afetar seus usuários finais. Este é um problema para a engenharia de plataforma. No entanto, o SRE precisará se envolver se um servidor de produção ficar offline ou ficar lento, pois o incidente afetará diretamente os usuários.

Resumo

A engenharia de plataforma acelera a entrega de software fornecendo aos desenvolvedores ferramentas de autoatendimento para interagir com a infraestrutura. As equipes de engenharia usam a plataforma fornecida para testar rapidamente o novo código e implantá-lo em todos os ambientes.

DevOps e engenharia de plataforma são tópicos intimamente relacionados. A engenharia de plataforma normalmente é implementada como parte de uma estratégia de DevOps. Aumente a autonomia do desenvolvedor e automatize tarefas comuns de infraestrutura, aderindo aos princípios fundamentais do DevOps.

É possível fazer DevOps sem engenharia de plataforma. Da mesma forma, você já pode estar usando ferramentas e processos que se enquadram na engenharia de plataforma, sem reconhecer intencionalmente a disciplina. Estabelecer uma equipe de engenharia de plataforma dedicada permite que você dê o próximo passo e crie sistemas internos de alto desempenho que capacitam os desenvolvedores enquanto preenchem a lacuna para as operações.

O post O que você precisa saber apareceu primeiro em Daily Report.