O que são ferramentas de engenharia de plataforma?
As ferramentas deengenharia de plataforma aumentam a produtividade de equipes de desenvolvimento internas e externas, oferecendo acesso ao que elas precisam quando precisam, por meio de uma abordagem self-service. A engenharia de plataforma é compatível com recursos como integração e entrega/implantação contínuas (CI/CD),infraestrutura como código (IaC), conteinerização, observabilidade, segurança, self-service para desenvolvedores e muito mais.
As equipes de engenharia de plataforma (também chamadas de equipes de plataforma) são responsáveis por disponibilizar um portal do desenvolvedor. Nele, os desenvolvedores têm acesso self-service aos recursos, documentação e ferramentas necessários para interagir com diversos serviços e APIs. Além disso, essas equipes podem manter uma plataforma interna de desenvolvedor (IDP), que funciona como uma infraestrutura subjacente para criar, implantar e gerenciar aplicações.
Ainda que relacionadas, as tecnologias de engenharia de plataforma não pertencem à mesma categoria das ferramentas do desenvolvedor. Seu papel, assim como da própria plataforma (IDP), é estabelecer processos consistentes que permitam aos desenvolvedores trabalhar de forma mais eficiente. Já as ferramentas do desenvolvedor partem dessa base para aprimorar a experiência dos profissionais com a IDP e viabilizar a execução de projetos específicos.
A seguir, analisaremos os objetivos da engenharia de plataforma e as tecnologias e serviços disponíveis para viabilizá-los.
Qual é o objetivo da engenharia de plataforma?
A engenharia de plataforma surge como resposta à complexidade tecnológica da era nativa em nuvem. Os engenheiros de plataforma projetam e criam cadeias de ferramentas e fluxos de trabalho que viabilizam o self-service para empresas de engenharia de software. As equipes de desenvolvimento podem obter os recursos necessários em questão de minutos, com a certeza de que as soluções fornecidas são compatíveis, observáveis e seguem as práticas de segurança da empresa.
A engenharia de plataforma é uma abordagem multidisciplinar que integra cultura organizacional, operações de negócio, colaboração entre equipes e outros elementos com o objetivo de tornar o desenvolvimento de software mais eficiente. Por reconhecer a carga cognitiva atribuída aos desenvolvedores de software, ela busca identificar e reduzir os desafios que eles enfrentam.
Mas como isso funciona na prática? Os engenheiros de plataforma montam uma coleção de conteúdo, ferramentas, documentação, templates e fluxos de trabalho para promover a flexibilidade e manter a consistência organizacional. Eles fornecem ferramentas e recursos compartilhados e reutilizáveis para ajudar os desenvolvedores a trabalhar com eficácia e aumentar a produtividade.
O que é uma plataforma interna de desenvolvedor? (IDP)?
Uma IDP é um conjunto padronizado de ferramentas e tecnologias self-service que os desenvolvedores podem usar para criar e implantar código. Ao consolidar e simplificar os elementos do processo de desenvolvimento, as IDPs tornam o trabalho da equipe mais organizado, eficiente e colaborativo.
As IDPs refletem as escolhas estratégicas feitas pela engenharia de plataforma. Elas são compostas por APIs de self-service, ferramentas, serviços, conhecimento e suporte, integrados em uma solução interna voltada à experiência do desenvolvedor. Apesar de os principais usuários serem as equipes de desenvolvimento, são os engenheiros de plataforma que lidam com a configuração inicial, a manutenção e o suporte das IDPs. Isso garante que toda a empresa utilize um conjunto coeso de tecnologias e recursos, independentemente de quem o criou. Uma IDP pode ser uma forma de implementar e manter práticas recomendadas de DevOps, que promovam uma relação de trabalho mais eficiente entre as equipes de operações e desenvolvimento.
Plataforma interna de desenvolvedor e portal interno do desenvolvedor não são a mesma coisa. A diferença é que o portal pode servir como interface da plataforma, enquanto esta adiciona uma camada de aplicações oferecendo mais profundidade funcional e escalabilidade.
Um dos projetos de plataforma de desenvolvedor open source mais conhecidos é o Backstage, criado por engenheiros do Spotify e posteriormente doado para a Cloud Native Computing Foundation (CNCF). O Backstage é a base do Red Hat® Developer Hub, portal que oferece um framework opinativo para a criação de plataformas de desenvolvedor com integrações e suporte voltados ao ambiente empresarial.
O que são ferramentas de CI/CD?
As ferramentas de CI/CD ajudam a equipe a automatizar o desenvolvimento, a implantação e os testes. Algumas ferramentas tratam especificamente da integração contínua (CI), outras gerenciam o desenvolvimento e a entrega contínua (CD), e há ainda as que são especializadas em testes contínuos e funções relacionadas. É possível integrar muitas delas a uma IDP como parte de uma abordagem de engenharia de plataforma.
Há uma variedade de ferramentas de CI/CD open source conhecidas. Estas são apenas algumas.
O
- Argo CD é uma ferramenta declarativa de entrega contínua para Kubernetes, alinhada às práticas de GitOps. Ele pode ser usado como uma ferramenta independente ou como parte de um fluxo de trabalho de CI/CD para entregar os recursos de que os clusters precisam.
- ORed Hat OpenShift® GitOps foi criado com base no Argo CD.
- O Tekton é um framework de CI/CD para plataformas Kubernetes que oferece uma experiência padrão de CI/CD nativa em nuvem com containers.
- O Red Hat OpenShift Pipelines foi criado com base no framework Tekton.
- O Jenkins é uma ferramenta de automação compatível com processos de CI e CD de qualquer escala.
- OSpinnaker é uma plataforma de CD criada para ambientes multicloud.
- O GoCD é um servidor de CI/CD voltado para modelagem e visualização.
- O Concourse é uma ferramenta de automação indicada para processos contínuos.
- O Screwdriver é uma plataforma de compilação projetada para a entrega contínua (CD).
Vale a pena considerar também as ferramentas de CI/CD gerenciadas, disponíveis em uma variedade de fornecedores. As ferramentas certas podem ajudar as equipes a automatizar, testar e implantar aplicações em várias plataformas.
O que são ferramentas de infraestrutura como código (IaC)?
A IaC é uma abordagem de gerenciamento. Com ela, os administradores automatizam a gestão e o provisionamento da infraestrutura, incluindo servidores e máquinas virtuais. Esse modelo de infraestrutura automatizada e self-service está alinhado aos objetivos da engenharia de plataforma.
Trabalhar com IaC é usar arquivos de configuração para definir as especificações da sua infraestrutura. Assim, fica mais fácil provisionar ambientes de maneira consistente. Com a infraestrutura como código, é possível editar e distribuir configurações em uma empresa, evitando alterações ad-hoc não documentadas.
A IaC conta com ferramentas de automação de servidores e gerenciamento de configuração, sendo algumas delas o Red Hat Ansible® Automation Platform, o Terraform, o Chef, o Puppete o Salt.
O que são ferramentas de container e Kubernetes?
As ferramentas de container são uma parte essencial da engenharia de plataforma.
Os containers empacotam e isolam aplicações com seu o ambiente de runtime completo, isto é, todos os arquivos necessários para a execução. Por isso, aplicações em containers são executadas de forma consistente onde quer que sejam implantadas, mesmo em diferentes ambientes e infraestruturas. Os containers são fundamentais para o desenvolvimento nativo em nuvem, um método que divide aplicações grandes em coleções de microsserviçospequenos, independentes e levemente acoplados.
Há uma variedade de ferramentas open source que facilitam o trabalho com containers. Para criá-los e implantá-los, os desenvolvedores podem usar o Docker e o Podman, ambos com suporte aos padrões da Open Container Initiative (OCI).
Para gerenciar containers em escala, as equipes de operações contam com plataformas de orquestração de containers, como o projeto open source Kubernetes. A orquestração de containers automatiza a implantação, o gerenciamento, a escala e a configuração de rede dos containers ao longo de todo o seu ciclo de vida.
Vários provedores disponibilizam plataformas Kubernetes. ORed Hat OpenShift, por exemplo, é uma plataforma de aplicações empresarial baseada em Kubernetes. Os engenheiros de plataforma podem integrar o Red Hat OpenShift a uma IDP, como o Red Hat OpenShift Developer Hub, para oferecer uma plataforma de desenvolvedor.
O que são ferramentas de observabilidade?
O monitoramento e a observabilidade são fundamentais para a engenharia de plataforma. Com eles, as equipes examinam saídas, logs e métricas de desempenho para entender melhor o estado de um sistema ou aplicação. Com essa visibilidade, desenvolvedores e administradores melhoram a confiabilidade, o desempenho e a segurança de aplicações e infraestrutura complexas.
A observabilidade amplia o conceito de monitoramento ao incluir a identificação das causas de problemas, bem como a geração de previsões e análises preditivas. Há muitas opções de ferramentas e tecnologias de observabilidade, e as equipes podem configurá-las segundo sua necessidade.
Entre as ferramentas open source mais usadas na observabilidade, estão o Grafana, o Jaeger, o OpenTelemetry e o Prometheus. O Red Hat OpenShift Observability é um conjunto de ferramentas de observabilidade criadas para o Red Hat OpenShift usando os padrões do OpenTelemetry.
O que são as ferramentas de segurança da engenharia de plataforma?
Com o avanço das ameaças de segurança, o desenvolvimento de software moderno adotou a estratégia de“shift left”como abordagem de segurança em todas as etapas do ciclo de vida de desenvolvimento de software (SDLC). A segurança não é mais apenas uma última verificação antes da implantação, ela está presente desde o início do projeto.
Engenheiros de plataforma ajudam os desenvolvedores a seguir as diretrizes de segurança ao longo de todo o SDLC. Essas etapas podem incluir verificações e testes automatizados no pipeline de CI/CD, para proteger código, evitar vazamento de dados, reforçar a conformidade com os padrões e garantir a qualidade.
Outras ferramentas de segurança da engenharia de plataforma ajudam com o gerenciamento de segredos (senhas, arquivos de configuração do cliente, credenciais do repositório etc.) e a segurança de API, incluindo o gerenciamento de chaves de API.
A Red Hat oferece um conjunto de ferramentas e serviços voltados à segurança de software.
ORed Hat Trusted Software Supply Chain reúne um conjunto de soluções que ajudam a reduzir vulnerabilidades e reforçar políticas de segurança, incluindo o Red Hat Trusted Profile Analyzer, o Red Hat Trusted Application Pipeline e o Red Hat Trusted Artifact Signer.O
- Red Hat Trusted Profile Analyzer auxilia na gestão de listas de materiais de software (SBOMs), cruzando informações com CVEs e boletins de segurança de fontes confiáveis. Ele conta com tecnologia dos projetos open source Graph for Understanding Artifact Composition (GUAC), Trustification e Exhort.
- O Red Hat Trusted Application Pipeline valida assinaturas, proveniência e atestações dos artefatos para bloquear vulnerabilidades já no início do desenvolvimento.
- Baseado no projetoSigstore , o Red Hat Trusted Artifact Signer simplifica a verificação e a assinatura criptográfica de artefatos de software, como imagens de container, binários e documentos. Ele incorpora tecnologia dos projetos Cosign e Fulcio, além de oferecer suporte à integração completa com outros sistemas de gerenciamento de chaves como o Hashicorp Vault, o Google/Azure e o AWS KMS.
Para implantações Kubernetes, o Red Hat Advanced Cluster Security for Kubernetes protege cargas de trabalho em containers em diversas plataformas, ajudando as equipes a identificar e resolver vulnerabilidades e reforçar políticas de segurança.
Por que escolher a Red Hat para engenharia de plataforma?
Engenheiros de plataforma encontram uma variedade de soluções da Red Hat para atingir seus objetivos. As soluções e serviços da Red Hat atuam de forma integrada para melhorar a produtividade das equipes, incrementando o self-service, acelerando o onboarding e reduzindo as tarefas repetitivas.
ORed Hat OpenShift é uma plataforma empresarial de aplicações que permite aos desenvolvedores utilizarem as ferramentas em que confiam, independentemente do tipo de aplicação ou do ambiente em que ela está implantada, seja on-premise, na nuvem ou na edge.
O Red Hat Developer Hub promove a eficiência e a colaboração durante todo o processo de desenvolvimento de software. Como uma plataforma aberta e unificada, ele reduz a carga cognitiva e a frustração da equipe de desenvolvimento. Com o Red Hat Developer Hub, as empresas podem usar IDPs para simplificar fluxos de trabalho, consolidar elementos do processo de desenvolvimento e promover a colaboração interna.
O Red Hat Trusted Software Supply Chain ajuda as equipes a integrar a segurança aos componentes, processos e práticas desde o início do pipeline de desenvolvimento.
Soluções empresariais do Red Hat Developer Hub
Uma plataforma empresarial aberta baseada no Backstage usada para a criação de portais de desenvolvedores, que consolida visualmente diversos elementos do processo de desenvolvimento.