Se o ciclo de vida de desenvolvimento da sua empresa está lutando para funcionar de forma eficiente, talvez seja hora de você considerar a engenharia de plataforma e uma plataforma interna para desenvolvedores.
O software moderno continua a se tornar cada vez mais complexo. Ao contrário do software monolítico de ontem, o software de hoje é mais flexível, ágil, de alto desempenho e capaz de atender a demandas cada vez maiores sem exigir escalonamento significativo de hardware por parte da empresa.
Essas pilhas de aplicativos modernos são possíveis graças às máquinas virtuais, aos contêineres e à nuvem. Mas junto com essas tecnologias vêm complexidades significativas. Dados os desafios significativos que a tecnologia moderna é capaz de superar, essas complexidades são frequentemente consideradas uma adição aceitável ao fluxo de trabalho moderno. Afinal, quando sua empresa precisa escalar implantações automaticamente com base no uso, você certamente não conseguirá tal feito com um aplicativo monolítico tradicional.
Isto é especialmente verdadeiro para empresas que procuram passar por uma grande transformação digital, onde pode haver muito trabalho a ser feito.
Por tudo isso, sua empresa pode precisar de uma abordagem mais moderna para o desenvolvimento de software. Tal abordagem é a engenharia de plataforma.
O que é engenharia de plataforma?
A engenharia de plataforma é uma abordagem de projeto e desenvolvimento de fluxos de trabalho que permitem recursos de autoatendimento para programadores e engenheiros. Com a engenharia de plataforma implementada, suas equipes terão acesso a uma plataforma interna de desenvolvedor (IDP) que inclui tudo o que é necessário para gerenciar o ciclo de vida de desenvolvimento de software.
O que é mais importante sobre a engenharia de plataforma é que nem todas as equipes ou empresas têm o mesmo processo de desenvolvimento/implantação. Por causa disso, cada ferramenta do conjunto de ferramentas pode variar, dependendo de suas necessidades. Com isso em mente, suas equipes e líderes de equipe terão que trabalhar juntos para construir o conjunto de ferramentas e os serviços exatos necessários para fazer o fluxo de trabalho funcionar de maneira suave, eficaz e eficiente.
Um dos problemas do desenvolvimento moderno é que os engenheiros de software agora são encarregados de lidar com múltiplas tarefas usando ferramentas diferentes. Há Docker, Kubernetes, Helm, Terraform, Ansible, Puppet, manifestos de contêiner, ferramentas de CI/CD e uma série de estruturas e bibliotecas. Imagine ter que manter todas essas peças móveis juntas para que cada desenvolvedor/designer tenha acesso ao que precisa, quando precisa.
Com os desenvolvedores tendo que assumir mais tarefas, eles devem ser capazes de reivindicar a propriedade de cada etapa do processo. Eles precisam de acesso a ambientes de cluster, ferramentas de desenvolvimento e serviços de automação sem precisar passar por diferentes líderes de equipe para obter aprovação. Ao contrário da forma como as coisas eram tratadas anteriormente, onde você poderia ter equipes dedicadas a tarefas específicas no ciclo de vida, os desenvolvedores e engenheiros agora têm a tarefa de cuidar de tudo.
Se esses desenvolvedores e engenheiros não tiverem acesso a tudo o que precisam, o trabalho não será concluído em tempo hábil. Esses desenvolvedores devem ser capazes de criar e implantar seu software de ponta a ponta. No entanto, quando você começa a considerar tudo, percebe que tal abordagem pode ser bastante problemática. A menos que sua empresa tenha um orçamento considerável para gastar, alcançar um estado de verdadeiro DevOps pode ser uma tarefa impossível.
Para evitar esses desafios e melhorar enormemente o processo, os IDPs de autoatendimento são uma das melhores maneiras de alcançar o verdadeiro DevOps e, para que isso aconteça, você precisa empregar engenharia de plataforma para criar o IDP ideal para sua empresa/projeto. Este IDP incluirá tudo o que suas equipes de desenvolvimento precisam e será organizado da maneira que melhor corresponda ao fluxo de trabalho prescrito pela equipe.
Ao empregar a engenharia de plataforma, você melhora muito a produtividade do desenvolvedor (ao mesmo tempo que melhora sua experiência geral) trabalhando com ferramentas reutilizáveis, operações automatizadas e recursos de autoatendimento. Cada componente do IDP deve ser altamente configurável e flexível. Com um IDP sólido implementado, seus desenvolvedores terão acesso a ferramentas padronizadas e confiáveis que não apenas simplificarão o processo, mas também facilitarão sua repetição. O objetivo final é um ambiente sem atrito que possibilite que suas equipes tenham tudo o que precisam, quando precisam.
Ferramentas típicas usadas em engenharia de plataforma
Cada IDP será diferente, dependendo das necessidades de suas equipes de desenvolvimento, negócios e fluxo de trabalho. Aqui está uma pequena lista de ferramentas que você deve considerar adicionar ao seu PDI:
GitHub
GitHub é um host baseado na web para desenvolvimento de software e controle de versão. Nenhuma equipe de desenvolvimento está completa sem essa ferramenta. E com o GitHub, seus desenvolvedores podem trabalhar na linha de comando ou em uma GUI compatível. De qualquer forma, todas as suas equipes trabalharão a partir de uma única fonte de verdade.
Aproveitar
Se você deseja adicionar IA/ML à mistura, Aproveitar é a ferramenta que você precisa. Esta peça do quebra-cabeça do IDP deve integrar-se e gerenciar facilmente sua pilha de tecnologia com poderosos recursos de orquestração.
Kubernetes
Se você deseja conteinerizar suas implantações, precisará de uma ferramenta de orquestração. Com Kubernetes você obtém automação de coisas como configurações e dimensionamento de contêineres, isolamento de contêineres para maior segurança e implantação automática em vários nós.
Terraforma
Terraforma é uma peça crucial da pilha de PDI, pois é frequentemente considerada a infraestrutura como código de facto que facilita o provisionamento e o gerenciamento da infraestrutura. Com o Terraform, suas equipes poderão gerenciar sua infraestrutura em diversas plataformas e até mesmo automatizar a segurança com base em políticas centralizadas.
Ansible
Ansible é uma das plataformas de gerenciamento de configuração mais utilizadas no mercado. Com o Ansible, você cria playbooks para estados que são distribuídos às máquinas para garantir que tudo esteja sempre em um estado previsível. Você pode instalar software em uma rede inteira de máquinas remotas a partir de um único sistema. O Ansible pode ser usado para gerenciar instâncias bare metal, hospedadas na nuvem e máquinas virtuais.
Portão
Se suas equipes são encarregadas de gerenciar vários clusters Kubernetes ou Docker em nós diferentes, você vai querer o poder de uma GUI baseada na Web e amigável em seu IDP. A melhor ferramenta para esse trabalho é Portãoo que possibilita gerenciar todos os aspectos da implantação e do gerenciamento em contêineres.
Enxame Docker/Docker
Uma coisa que você aprenderá muito rapidamente é que Docker e o Docker Swarm tornam o trabalho com contêineres consideravelmente mais fácil do que com o Kubernetes. Embora você possa não obter as ferramentas de gerenciamento avançadas, com a adição do Portainer, grande parte desse problema é atenuado.
Drone
Drone é uma ferramenta para criar e testar o lado automatizado do seu fluxo de trabalho. O Drone se integra ao GitHub, facilita a criação de plug-ins personalizados e pode funcionar com praticamente qualquer coisa executada dentro de um contêiner Docker. Se precisar de automação, você precisará do Drone para testá-la.
Vai levar tempo
Uma das primeiras realidades que você deve aceitar é que construir o seu PDI levará tempo. Logo de cara, você deve descobrir as peças que podem ser montadas para melhor atender às necessidades do seu fluxo de trabalho. Se você não tiver certeza por onde começar, começaria com a ferramenta de implantação. Decida se deseja trabalhar com Kubernetes ou Docker (ou precisará de ambos). Depois de decidir isso, você pode começar a trabalhar no processo e decidir qual software precisará para cada etapa do processo. Embora algumas dessas ferramentas possam ser obtidas gratuitamente, você também precisará considerar que tipo de orçamento possui para o seu PDI e trabalhar a partir daí. Se você não puder comprar todas as ferramentas necessárias, existem equivalentes de código aberto que possam ser substituídos para reduzir custos?
Além disso, você deve considerar seu fluxo de trabalho atual e quais etapas/fases tendem a gargalar o processo. Se você conseguir identificar os problemas, poderá resolvê-los ao montar seu PDI.
Com a quantidade certa de trabalho inicial, a engenharia de plataforma pode ajudar sua empresa a criar um PDI que ajudará a tornar o processo de desenvolvimento/implantação mais eficiente, econômico e confiável.