Platform Engineering é uma disciplina emergente que se concentra no design, construção e manutenção de plataformas internas para desenvolvedores, com o objetivo de melhorar a produtividade, reduzir a complexidade e acelerar a entrega de software. Nesta aula, vamos explorar o que é Platform Engineering, como as Internal Developer Platforms (IDPs) funcionam, o papel do self-service e como essa prática se relaciona com o DevOps.

Vamos entender como essa abordagem está transformando a maneira como as organizações gerenciam sua infraestrutura e ferramentas, permitindo que os times de desenvolvimento foquem no código e na lógica de negócio, enquanto a plataforma cuida da infraestrutura subjacente.

O que é

Platform Engineering é a prática de construir e operar plataformas internas que fornecem um conjunto de ferramentas, serviços e infraestrutura como produto para os desenvolvedores. O objetivo é abstrair a complexidade da infraestrutura e dos processos operacionais, oferecendo uma interface de autoatendimento (self-service) que permite aos desenvolvedores implantar, gerenciar e monitorar suas aplicações de forma autônoma e com pouca fricção.

Essa disciplina surgiu como uma evolução natural do movimento DevOps. Enquanto o DevOps busca integrar desenvolvimento e operações, o Platform Engineering formaliza essa integração por meio de uma plataforma centralizada que encapsula as melhores práticas, padrões e ferramentas. Isso reduz a carga cognitiva dos desenvolvedores, que não precisam se preocupar com detalhes de infraestrutura, e permite que as equipes de plataforma forneçam uma experiência consistente e segura.

Os principais componentes de uma plataforma interna incluem:

  • Camada de abstração: APIs e interfaces que escondem a complexidade da infraestrutura.
  • Catálogo de serviços: Componentes reutilizáveis, como bancos de dados, filas, e serviços de mensageria.
  • Automação: Pipelines de CI/CD, provisionamento de ambientes e gerenciamento de configuração.
  • Observabilidade: Métricas, logs e rastreamentos para monitorar a saúde dos aplicativos.
  • Governança: Políticas de segurança, conformidade e controle de acesso.

Internal Developer Platforms

Uma Internal Developer Platform (IDP) é o coração do Platform Engineering. É um conjunto de ferramentas e serviços que os desenvolvedores usam para criar, implantar e operar seus aplicativos. A IDP é projetada para ser um produto interno, com uma experiência de usuário cuidadosamente planejada, geralmente fornecendo uma interface web, CLI ou API para acesso.

Uma IDP típica inclui:

  • Painel de controle: Uma interface visual para gerenciar aplicações, ambientes e deploys.
  • CLI: Ferramentas de linha de comando para automação e integração com scripts.
  • APIs: Endpoints REST ou gRPC para integração com outras ferramentas.
  • Modelos e templates: Scaffolding para criar novos serviços com padrões pré-definidos.
  • Gerenciamento de ambientes: Criação e gerenciamento de ambientes de desenvolvimento, staging e produção.

Um exemplo de implementação de uma IDP pode ser feito com ferramentas como Backstage (do Spotify), Kubernetes, e Terraform. Abaixo, um exemplo de como um desenvolvedor poderia usar uma CLI de plataforma para criar um novo serviço:

# Exemplo de uso de uma CLI de plataforma (imaginária)
$ platform create-service --name minha-api --type nodejs
# Saída esperada:
# Serviço 'minha-api' criado com sucesso!
# Repositório: https://github.com/empresa/minha-api.git
# CI configurado: GitHub Actions
# Ambiente de staging provisionado: staging.minha-api.empresa.com

Esse exemplo ilustra como o desenvolvedor não precisa se preocupar com a criação de repositórios, configuração de CI ou provisionamento de infraestrutura; a plataforma cuida de tudo automaticamente.

Self-service

Self-service é um princípio fundamental do Platform Engineering. Significa que os desenvolvedores podem solicitar e obter recursos de infraestrutura, ambientes, bancos de dados, e outros serviços sem precisar de intervenção humana da equipe de operações. Isso é possível por meio de portais de autoatendimento, APIs e automação.

Os benefícios do self-service incluem:

  • Redução de espera: Os desenvolvedores não precisam abrir tickets e esperar horas ou dias por recursos.
  • Aumento da produtividade: Mais tempo focado no código e menos em tarefas operacionais.
  • Consistência: Recursos provisionados seguem padrões e políticas definidas pela plataforma.
  • Empoderamento: Os desenvolvedores têm autonomia para experimentar e iterar rapidamente.

Para implementar self-service, a plataforma deve expor uma interface clara e documentada. Por exemplo, um portal web onde o desenvolvedor pode escolher o tipo de recurso, configurar parâmetros e solicitar a criação. Abaixo, um exemplo de como provisionar um banco de dados PostgreSQL usando uma CLI:

# Exemplo de provisionamento de banco de dados via CLI
$ platform db create --name minha-db --engine postgresql --version 15 --size small
# Saída:
# Banco de dados 'minha-db' provisionado.
# Host: minha-db.internal
# Porta: 5432
# Credenciais: enviadas para o cofre de segredos

Esse tipo de automação é possível graças a ferramentas como Terraform, Kubernetes Operators e scripts de automação, que são integrados à plataforma.

Relação com DevOps

Platform Engineering não substitui o DevOps, mas complementa e potencializa seus princípios. Enquanto o DevOps foca na colaboração entre dev e ops e na automação de processos, o Platform Engineering cria uma camada de abstração que permite escalar essas práticas para muitas equipes.

Na prática, o DevOps estabelece a cultura e os processos, enquanto o Platform Engineering fornece a ferramenta (a plataforma) que implementa esses processos de forma padronizada. Isso é particularmente útil em organizações grandes, onde múltiplas equipes podem ter necessidades diferentes, mas precisam seguir padrões comuns de segurança e conformidade.

Por exemplo, uma equipe de plataforma pode construir uma IDP que automatiza o pipeline de CI/CD, aplicando políticas de revisão de código, testes obrigatórios e análise de segurança. Isso não só acelera o desenvolvimento, mas também garante que todas as aplicações sigam as mesmas regras, reduzindo o risco de erros.

Outra relação é que o Platform Engineering promove a produtividade do desenvolvedor, que é um dos objetivos do DevOps. Ao reduzir a fricção e a carga operacional, os desenvolvedores podem entregar valor mais rapidamente, alinhado com os princípios de entrega contínua e integração contínua.

Boas práticas e observações finais

Ao implementar Platform Engineering, algumas boas práticas incluem:

  • Trate a plataforma como um produto: Tenha um time dedicado, feedback dos usuários e um roadmap.
  • Comece pequeno: Identifique os maiores gargalos e resolva-os primeiro.
  • Padronize: Defina padrões claros para linguagens, infraestrutura e ferramentas.
  • Automatize tudo: Quanto mais automatizado, menos retrabalho e erros.
  • Meça: Use métricas como tempo para provisionar, satisfação do desenvolvedor e frequência de deploys.

Lembre-se de que Platform Engineering é uma jornada contínua, e a plataforma deve evoluir conforme as necessidades da organização mudam.

Referências

Exercícios

  1. Explique com suas palavras o que é Platform Engineering e qual problema ele resolve.
  2. ✓ Resposta: Platform Engineering é a prática de construir e operar plataformas internas que abstraem a complexidade da infraestrutura e fornecem uma interface de autoatendimento para desenvolvedores. Ele resolve o problema da sobrecarga operacional e da falta de padronização, permitindo que os devs se concentrem na lógica do negócio.
  3. Liste três componentes essenciais de uma Internal Developer Platform (IDP) e explique a função de cada um.
  4. ✓ Resposta: Três componentes essenciais são: 1) Camada de abstração - esconde a complexidade da infraestrutura; 2) Catálogo de serviços - oferece componentes reutilizáveis; 3) Automação - automatiza pipelines e provisionamento.
  5. Como o self-service beneficia os desenvolvedores e a organização como um todo?
  6. ✓ Resposta: O self-service reduz a espera por recursos, aumenta a produtividade, garante consistência e empodera os desenvolvedores. Isso leva a entregas mais rápidas e a uma maior satisfação da equipe.
  7. Qual é a relação entre DevOps e Platform Engineering? Eles são concorrentes ou complementares?
  8. ✓ Resposta: São complementares. DevOps estabelece a cultura e os processos de colaboração e automação, enquanto Platform Engineering fornece uma plataforma concreta que implementa esses processos de forma padronizada e escalável.
  9. Cite uma ferramenta que pode ser usada para construir uma IDP e descreva como ela contribui para o self-service.
  10. ✓ Resposta: Uma ferramenta é o Backstage, que fornece um portal de desenvolvedor com catálogo de software, templates e integrações. Ele permite que os devs criem novos serviços com um clique, provisionem recursos e acessem documentação, tudo de forma autônoma.