O Problema da Fragmentação de Ferramentas
Em organizações modernas, desenvolvedores precisam navegar entre dezenas de ferramentas diariamente: GitHub, Jira, Jenkins, ArgoCD, Grafana, PagerDuty, Confluence… Essa fragmentação gera carga cognitiva excessiva e reduz a produtividade.
Desenvolvedores perdem em média 2-3 horas por dia buscando informações espalhadas em diferentes sistemas. Isso representa ~30% do tempo produtivo desperdiçado.
O que é um Internal Developer Portal?
Um Internal Developer Portal (IDP) é uma plataforma centralizada que:
Catálogo de Serviços
Inventário completo de todos os serviços, APIs, bibliotecas e recursos da organização
Documentação Centralizada
Docs técnicos, ADRs, runbooks e guias em um único lugar pesquisável
Self-Service
Templates para criar novos projetos, provisionar infraestrutura e configurar pipelines
Integração de Ferramentas
Conecta todas as ferramentas do ecossistema em uma interface unificada
Backstage: O Padrão da Indústria
Criado pelo Spotify e doado à CNCF, o Backstage se tornou o padrão de facto para Internal Developer Portals.
Arquitetura do Backstage
Componentes Principais
Implementando o Software Catalog
O coração do Backstage é o catálogo de software, definido via arquivos YAML:
# catalog-info.yaml no repositório do serviço
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: payments-api
description: API de processamento de pagamentos
tags:
- python
- fastapi
- payments
annotations:
github.com/project-slug: myorg/payments-api
pagerduty.com/service-id: PXXXXXX
grafana/dashboard-selector: "app=payments-api"
spec:
type: service
lifecycle: production
owner: team-payments
system: checkout-system
dependsOn:
- component:users-api
- resource:payments-database
providesApis:
- payments-api
---
apiVersion: backstage.io/v1alpha1
kind: API
metadata:
name: payments-api
description: API REST para processamento de pagamentos
spec:
type: openapi
lifecycle: production
owner: team-payments
definition:
$text: ./openapi.yaml
Software Templates para Golden Paths
Templates permitem criar novos projetos padronizados:
# template.yaml
apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
name: python-service
title: Serviço Python com FastAPI
description: Cria um novo microserviço Python com FastAPI, Docker, CI/CD e observability
tags:
- python
- fastapi
- recommended
spec:
owner: platform-team
type: service
parameters:
- title: Informações do Serviço
required:
- name
- owner
properties:
name:
title: Nome do Serviço
type: string
pattern: '^[a-z0-9-]+$'
description:
title: Descrição
type: string
owner:
title: Time Owner
type: string
ui:field: OwnerPicker
- title: Configurações Técnicas
properties:
database:
title: Banco de Dados
type: string
enum:
- postgresql
- mysql
- none
default: postgresql
steps:
- id: fetch-template
name: Fetch Template
action: fetch:template
input:
url: ./skeleton
values:
name: ${{ parameters.name }}
owner: ${{ parameters.owner }}
database: ${{ parameters.database }}
- id: create-repo
name: Create Repository
action: publish:github
input:
repoUrl: github.com?owner=myorg&repo=${{ parameters.name }}
description: ${{ parameters.description }}
- id: register-catalog
name: Register in Catalog
action: catalog:register
input:
repoContentsUrl: ${{ steps['create-repo'].output.repoContentsUrl }}
catalogInfoPath: /catalog-info.yaml
output:
links:
- title: Repository
url: ${{ steps['create-repo'].output.remoteUrl }}
- title: Open in Backstage
icon: catalog
entityRef: ${{ steps['register-catalog'].output.entityRef }}
Com templates bem definidos, um novo desenvolvedor pode criar um serviço production-ready em menos de 5 minutos, em vez de dias copiando configurações manualmente.
Plugins Essenciais
Kubernetes Plugin
// Visualizar pods, deployments e logs diretamente no Backstage
import { EntityKubernetesContent } from '@backstage/plugin-kubernetes';
// No EntityPage.tsx
<EntityLayout.Route path="/kubernetes" title="Kubernetes">
<EntityKubernetesContent />
</EntityLayout.Route>
CI/CD Integration
# Mostrar status de builds no catálogo
annotations:
github.com/project-slug: myorg/my-service
# ou
circleci.com/project-slug: github/myorg/my-service
# ou
jenkins.io/job-full-name: folder/my-service
Observability
annotations:
grafana/dashboard-selector: "app=my-service"
prometheus.io/scrape-target: "my-service:9090"
sentry.io/project-slug: my-service
TechDocs: Documentação como Código
# mkdocs.yml no repositório
site_name: Payments API
nav:
- Home: index.md
- Architecture: architecture.md
- API Reference: api-reference.md
- Runbook: runbook.md
plugins:
- techdocs-core
<!-- docs/index.md -->
# Payments API
## Overview
A Payments API é responsável por processar todas as transações
financeiras da plataforma.
## Quick Start
\`\`\`bash
# Clone o repositório
git clone https://github.com/myorg/payments-api
# Instale dependências
pip install -r requirements.txt
# Execute localmente
uvicorn main:app --reload
\`\`\`
## Architecture Decision Records
- [ADR-001: Escolha do FastAPI](adr/001-fastapi.md)
- [ADR-002: Padrão de Retry](adr/002-retry-pattern.md)
Métricas de Sucesso
Como medir o impacto do seu IDP:
Time to First Commit
Tempo do onboarding ao primeiro commit em produção
Search Success Rate
Percentual de buscas que encontram a informação desejada
Catalog Completeness
Percentual de serviços documentados no catálogo
Developer Satisfaction
NPS e surveys regulares sobre a experiência
Roadmap de Implementação
Jornada de Adoção do Backstage
- Fase 1MVP: CatálogoComece importando todos os repositórios e definindo ownership. Valor imediato.
- Fase 2DocumentaçãoAtive TechDocs e migre documentação existente para docs-as-code.
- Fase 3TemplatesCrie 2-3 templates para os tipos mais comuns de projetos na organização.
- Fase 4IntegraçõesAdicione plugins para CI/CD, Kubernetes, observability conforme necessidade.
- Fase 5Self-Service AvançadoProvisioning de infraestrutura, criação de ambientes, gestão de secrets.
A adoção do Backstage é mais efetiva quando você resolve uma dor real dos desenvolvedores primeiro. Identifique o maior problema e comece por ali.
Quer implementar um Internal Developer Portal na sua organização? Fale com nossos especialistas em Developer Experience.